注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。
GitHub Enterprise Server 上的 GitHub Actions 设计为在没有互联网连接的环境中工作。 默认情况下,工作流程不能使用直接来自 GitHub.com 和 GitHub Marketplace 的操作。
推荐的允许从 GitHub.com 访问操作的方法是启用自动访问所有操作。 通过使用 GitHub Connect 将 GitHub Enterprise Server 与 GitHub Enterprise Cloud 集成可实现这一点。 更多信息请参阅“启用使用 GitHub Connect 自动访问 GitHub.com 操作”。
但是,如果您想更严格地控制企业中允许的操作,您可以按照本指南使用 GitHub 的开源 actions-sync
工具将各个操作仓库从 GitHub.com 同步到企业实例。
关于 actions-sync
工具
actions-sync
工具必须在可以访问 GitHub.com API 和 GitHub Enterprise Server 实例的 API 的计算机上运行。 计算机不需要同时连接到两者。
如果计算机可以同时访问这两个系统,您可以使用单一 actions-sync sync
命令进行同步。 如果您一次只能访问一个系统,您可以使用 actions-sync pull
和 push
命令。
actions-sync
工具只能从存储在公有仓库中的 GitHub.com 下载操作。
基本要求
-
在使用
actions-sync
工具之前,您必须确保所有目标组织已经存在于您的企业实例中。 以下示例演示如何将操作同步到企业实例上名为synced-actions
的组织。 更多信息请参阅“从头开始创建新组织”。 -
您必须在企业实例上创建可以创建并写入目标组织中的仓库的个人访问令牌 (PAT)。 更多信息请参阅“创建个人访问令牌”。
-
If you want to sync the bundled actions in the
actions
organization on 您的 GitHub Enterprise Server 实例, you must be an owner of theactions
organization.Note: By default, even site administrators are not owners of the bundled
actions
organization.Site administrators can use the
ghe-org-admin-promote
command in the administrative shell to promote a user to be an owner of the bundledactions
organization. For more information, see "Accessing the administrative shell (SSH)" and "ghe-org-admin-promote
."ghe-org-admin-promote -u USERNAME -o actions
示例:使用 actions-sync
工具
此示例演示使用 actions-sync
工具将个别操作从 GitHub.com 同步到企业实例。
注:此示例使用 actions-sync sync
命令 它要求从您的计算机同时访问 GitHub.com API 和 GitHub Enterprise Server 实例的 API。 如果您一次只能访问一个系统,您可以使用 actions-sync pull
和 push
命令。 更多信息请参阅 actions-sync
README。
-
为您计算机的操作系统下载并解压缩最新的
actions-sync
版本。 -
创建一个目录来存储工具的缓存文件。
-
运行
actions-sync sync
命令:./actions-sync sync \ --cache-dir "cache" \ --destination-token "aabbccddeeffgg" \ --destination-url "https://my-ghes-instance" \ --repo-name "docker/build-push-action:synced-actions/docker-build-push-action"
上述命令使用以下参数:
-
--cache-dir
:运行命令的计算机上的缓存目录。 -
--destination-toke
:目标企业实例的个人访问令牌。 -
--destination-url
:目标企业实例的 URL。 -
--repo-name
:要同步的操作仓库。 这将使用格式owner/repository:destination_owner/destination_repository
。- 上面的示例将
docker/build-push-action
仓库同步到目标 GitHub Enterprise Server 实例上的synced-actions/docker-build-push-action
仓库。 在运行上述命令之前,您必须在企业实例上创建名为synced-actions
的组织。 - 如果您省略
:destination_owners/destination_repost
,工具将使用企业实例的原始所有者和仓库名称。 在运行命令之前,必须在实例上创建一个与操作的所有者名称匹配的新组织。 考虑使用一个中心组织来存储实例上同步的操作,因为这样在同步来自不同所有者的操作时,将无需创建多个新的组织。 - 将
--repo-name
参数替换为--repo-name-list
或--repo-name-list-file
便可同步多个操作。 更多信息请参阅actions-sync
README。
- 上面的示例将
-
-
在企业实例上创建操作仓库后,企业中的人员可以使用目标仓库在其工作流程中引用操作。 对于上面显示的示例操作:
uses: synced-actions/docker-build-push-action@v1
更多信息请参阅“GitHub Actions 的工作流程语法”。