This is a standalone Go tool to allow you to sync from GitHub to a GitHub Enterprise instance. GitHub Enterprise is referred to as GHES
throughout this document.
- Current status: ready for production use
- Download from: releases page
- Build status:
It is designed to work when:
- The GitHub Enterprise instance is separate from the rest of the internet.
- The GitHub Enterprise instance is connected to the rest of the internet.
When there are machines which have access to both the public internet and the GHES instance run actions-sync sync
.
Command:
actions-sync sync
Arguments:
cache-dir
(required) The directory in which to cache repositories as they are synced. This speeds up re-syncing.destination-url
(required) The URL of the GHES instance to sync repositories onto.destination-token
(required) A personal access token to authenticate against the GHES instance when uploading repositories. See Destination token scopes below.repo-name
(optional) A single repository to be synced. In the format ofowner/repo
. Optionally if you wish the repository to be named different on your GHES instance you can provide an alias in the format:upstream_owner/upstream_repo:destination_owner/destination_repo
repo-name-list
(optional) A comma-separated list of repositories to be synced. Each entry follows the format ofrepo-name
.repo-name-list-file
(optional) A path to a file containing a newline separate listof repositories to be synced. Each entry follows te format ofrepo-name
.
Example Usage:
actions-sync sync \
--cache-dir "/tmp/cache" \
--destination-token "token" \
--destination-url "https://www.example.com" \
--repo-name actions/setup-node
When no machine has access to both the public internet and the GHES instance:
actions-sync pull
on a machine with public internet access- copy the provided
cache-dir
to a machine with access to the GHES instance - run
actions-sync push
on the machine with access to the GHES instance
Command:
actions-sync pull
Arguments:
cache-dir
(required) The directory to cache the pulled repositories into.repo-name
(optional) A single repository to be synced. In the format ofowner/repo
. Optionally if you wish the repository to be named different on your GHES instance you can provide an aliase in the format:upstream_owner/up_streamrepo:destination_owner/destination_repo
repo-name-list
(optional) A comma-separated list of repositories to be synced. Each entry follows the format ofrepo-name
.repo-name-list-file
(optional) A path to a file containing a newline separate listof repositories to be synced. Each entry follows te format ofrepo-name
.
Example Usage:
bin/actions-sync pull \
--cache-dir "/tmp/cache" \
--repo-name actions/setup-node
Command:
actions-sync push
Arguments:
cache-dir
(required) The directory containing the repositories fetched using thepull
command.destination-url
(required) The URL of the GHES instance to sync repositories onto.destination-token
(required) A personal access token to authenticate against the GHES instance when uploading repositories. See Destination token scopes below.repo-name
,repo-name-list
orrepo-name-list-file
(optional) Limit push to specific repositories in the cache directory.
Example Usage:
bin/actions-sync push \
--cache-dir "/tmp/cache" \
--destination-token "token" \
--destination-url "https://www.example.com"
When creating a personal access token include the repo
and workflow
scopes. Include the site_admin
scope (optional) if you want organizations to be created as necessary.
If you would like to contribute your work back to the project, please see
CONTRIBUTING.md
.