{"id":15099328,"url":"https://github.com/actions/actions-sync","last_synced_at":"2025-04-09T23:16:55.224Z","repository":{"id":38822070,"uuid":"273206745","full_name":"actions/actions-sync","owner":"actions","description":"This tool allows GHES administrators to sync Actions to their instances","archived":false,"fork":false,"pushed_at":"2024-07-22T20:42:19.000Z","size":5198,"stargazers_count":116,"open_issues_count":15,"forks_count":63,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-09T23:16:51.388Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/actions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-18T10:17:18.000Z","updated_at":"2025-04-04T02:16:10.000Z","dependencies_parsed_at":"2024-02-09T17:30:38.988Z","dependency_job_id":"6d8dfacc-994b-429b-b50d-f745e567f875","html_url":"https://github.com/actions/actions-sync","commit_stats":{"total_commits":121,"total_committers":24,"mean_commits":5.041666666666667,"dds":0.768595041322314,"last_synced_commit":"9141ea72f2fa585109ad6ea0e6c4b42156cda867"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actions%2Factions-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actions%2Factions-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actions%2Factions-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/actions%2Factions-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/actions","download_url":"https://codeload.github.com/actions/actions-sync/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248125593,"owners_count":21051771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-25T17:10:34.210Z","updated_at":"2025-04-09T23:16:55.150Z","avatar_url":"https://github.com/actions.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Actions Sync\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/arrow.png\"\u003e\n\u003c/p\u003e\n\nThis is a standalone Go tool to allow you to sync from [GitHub](https://www.github.com) to a [GitHub Enterprise instance](https://github.com/enterprise). GitHub Enterprise is referred to as `GHES` throughout this document.\n\n* Current status: **ready for production use**\n* Download from: [releases page](https://github.com/actions/actions-sync/releases/)\n* Build status: ![Actions Sync Status](https://github.com/actions/actions-sync/workflows/CI/badge.svg)\n\nIt is designed to work when:\n* The GitHub Enterprise instance is separate from the rest of the internet.\n* The GitHub Enterprise instance is connected to the rest of the internet.\n\n## Connected instances\n\nWhen there are machines which have access to both the public internet and the GHES instance run `actions-sync sync`.\n\n**Command:**\n\n`actions-sync sync`\n\n**Arguments:**\n\n- `cache-dir` _(required)_\n   The directory in which to cache repositories as they are synced. This speeds up re-syncing.\n- `destination-url` _(required)_\n   The URL of the GHES instance to sync repositories onto.\n- `destination-token` _(required)_\n   A personal access token to authenticate against the GHES instance when uploading repositories. See [Destination token scopes](#destination-token-scopes) below.\n- `repo-name` _(optional)_\n   A single repository to be synced. In the format of `owner/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`\n- `repo-name-list` _(optional)_\n   A comma-separated list of repositories to be synced. Each entry follows the format of `repo-name`.\n- `repo-name-list-file` _(optional)_\n   A path to a file containing a newline separated list of repositories to be synced. Each entry follows the format of `repo-name`.\n- `actions-admin-user` _(optional)_\n   The name of the Actions admin user, which will be used for updating the chosen action. To use the default user, pass `actions-admin`. If not set, the impersonation is disabled. Note that `site_admin` scope is required in the token for the impersonation to work.\n\n**Example Usage:**\n\n```\n  actions-sync sync \\\n    --cache-dir \"/tmp/cache\" \\\n    --destination-token \"token\" \\\n    --destination-url \"https://www.example.com\" \\\n    --repo-name actions/setup-node\n```\n\n## Not connected instances\n\nWhen no machine has access to both the public internet and the GHES instance:\n\n1. `actions-sync pull` on a machine with public internet access\n2. copy the provided `cache-dir` to a machine with access to the GHES instance\n3. run `actions-sync push` on the machine with access to the GHES instance\n\n**Command:**\n\n`actions-sync pull`\n\n**Arguments:**\n\n- `cache-dir` _(required)_\n   The directory to cache the pulled repositories into.\n- `repo-name` _(optional)_\n   A single repository to be synced. In the format of `owner/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`\n- `repo-name-list` _(optional)_\n   A comma-separated list of repositories to be synced. Each entry follows the format of `repo-name`.\n- `repo-name-list-file` _(optional)_\n   A path to a file containing a newline separated list of repositories to be synced. Each entry follows the format of `repo-name`.\n\n**Example Usage:**\n\n```\n  bin/actions-sync pull \\\n    --cache-dir \"/tmp/cache\" \\\n    --repo-name actions/setup-node\n```\n\n**Command:**\n\n`actions-sync push`\n\n**Arguments:**\n\n- `cache-dir` _(required)_\n   The directory containing the repositories fetched using the `pull` command.\n- `destination-url` _(required)_\n   The URL of the GHES instance to sync repositories onto.\n- `destination-token` _(required)_\n   A personal access token to authenticate against the GHES instance when uploading repositories. See [Destination token scopes](#destination-token-scopes) below.\n- `repo-name`, `repo-name-list` or `repo-name-list-file` _(optional)_\n   Limit push to specific repositories in the cache directory.\n- `actions-admin-user` _(optional)_\n   The name of the Actions admin user, which will be used for updating the chosen action. To use the default user, pass `actions-admin`. If not set, the impersonation is disabled. Note that `site_admin` scope is required in the token for the impersonation to work.\n\n**Example Usage:**\n\n```\n  bin/actions-sync push \\\n    --cache-dir \"/tmp/cache\" \\\n    --destination-token \"token\" \\\n    --destination-url \"https://www.example.com\"\n```\n\n## Destination token scopes\n\nWhen 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 or you want to use the impersonation logic for the `push` or `sync` commands.\n\n## Contributing\n\nIf you would like to contribute your work back to the project, please see\n[`CONTRIBUTING.md`](CONTRIBUTING.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factions%2Factions-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Factions%2Factions-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factions%2Factions-sync/lists"}