注意
GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。
GitHub Enterprise Server 上的 GitHub Actions 设计为在没有完全 Internet 访问权限的环境中工作。 默认情况下,工作流不能使用直接来自 GitHub.com 和 GitHub Marketplace 的操作。
建议使用 GitHub Connect 启用对公共操作的自动访问,以便将 GitHub Enterprise Server 与 GitHub Enterprise Cloud 集成。 请参阅“使用 GitHub Connect 启用对 GitHub.com操作的自动访问”。
如果希望对企业中允许哪些操作进行更严格的控制,可以按照本指南,使用我们的开源 actions-sync 工具,将 GitHub.com 中的单个操作存储库同步到您的企业。
当升级 GitHub Enterprise Server 时,捆绑的操作会自动替换为升级包中的默认版本。 这些可能不是最新的可用版本。 最佳做法是,如果使用 actions-sync 更新操作,则应始终在任何 GitHub Enterprise Server 升级(主要或次要)后重新运行 actions-sync,以确保操作保持最新状态。
关于 actions-sync 工具
`actions-sync` 工具必须在可以访问 GitHub.com API 和 GitHub Enterprise Server 实例的 API 的计算机上运行。 计算机不需要同时连接到两者。
如果计算机可以同时访问这两个系统,则可以使用单一 actions-sync sync 命令进行同步。 如果一次只能访问一个系统,可以使用 actions-sync pull 和 push 命令。
`actions-sync` 工具只能从存储在公共存储库中的 GitHub.com 下载操作。
注意
`actions-sync` 工具适用于未启用 GitHub Connect 的系统。 如果在启用了 GitHub Connect 的系统上运行该工具,则可能会看到错误 `The repository <repo_name> has been retired and cannot be reused`。 这表示工作流已直接在 GitHub.com 上使用了该操作,并且命名空间已在 你的 GitHub Enterprise Server 实例上停用。 请参阅“[AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect#automatic-retirement-of-namespaces-for-actions-accessed-on-githubcom)”。
先决条件
-
在使用
actions-sync工具之前,必须确保所有目标组织已经存在于企业中。 以下示例演示如何将操作同步到名为synced-actions的组织。 请参阅“从头开始创建新组织”。 -
您必须在贵企业上创建一个可以在目标组织中创建和写入存储库的personal access token。 请参阅“管理个人访问令牌”。
-
如果想要同步位于你的 GitHub Enterprise Server 实例上的
actions组织中的打包操作,你需要是actions组织的所有者。注意
默认情况下,即使站点管理员也不是捆绑的
actions组织的所有者。站点管理员可以在管理 shell 中使用
ghe-org-admin-promote命令将用户升级为捆绑的actions组织的所有者。 请参阅“访问管理 shell (SSH)”和“命令行实用程序”。ghe-org-admin-promote -u USERNAME -o actions
示例:使用 actions-sync 工具
此示例演示使用 actions-sync 工具将单个操作从 GitHub.com 同步到企业实例。
注意
此示例使用 actions-sync sync 命令,它要求从你的计算机同时访问 GitHub.com API 和企业实例的 API。 如果一次只能访问一个系统,可以使用 actions-sync pull 和 push 命令。 请参阅 actions-sync README。
-
下载并提取适用于计算机操作系统的最新
actions-sync版本。 -
创建一个目录来存储工具的缓存文件。
-
在终端中,更改为刚才提取的发布目录中的
bin目录。 例如:cd PATH/TO/gh_DATETIME_OS_ARCHITECTURE/bin -
运行
actions-sync sync命令:./actions-sync sync \ --cache-dir "cache" \ --destination-token "aabbccddeeffgg" \ --destination-url "https://my-ghes-instance" \ --repo-name "actions/stale:synced-actions/actions-stale"上述命令使用以下参数:
-
`--cache-dir`:运行命令的计算机上的缓存目录。 -
`--destination-token`:目标企业实例的personal access token。 -
`--destination-url`:目标企业实例的 URL。 -
`--repo-name`:要同步的操作存储库。其采用格式 `owner/repository:destination_owner/destination_repository`。- 上面的示例将
actions/stale存储库同步到目标企业实例上的synced-actions/actions-stale存储库。 在运行上述命令之前,必须在企业中创建名为synced-actions的组织。 - 如果省略
:destination_owner/destination_repository,工具将使用企业的原始所有者和存储库名称。 在运行命令之前,必须在企业中创建一个与操作的所有者名称匹配的新组织。 考虑使用一个中心组织来存储企业中同步的操作,因为这样在同步来自不同所有者的操作时,将无需创建多个新的组织。 - 可以通过将
--repo-name参数替换为--repo-name-list或--repo-name-list-file来同步多个操作。 请参阅actions-syncREADME。
- 上面的示例将
-
-
在企业中创建操作仓库后,企业中的人员可以使用目标仓库在其工作流程中引用操作。 对于上面显示的示例操作:
# 此工作流使用未经 GitHub 认证的操作。 # 它们由第三方提供,并受 # 单独的服务条款、隐私政策和支持 # 文档。 uses: synced-actions/actions-stale@v1请参阅“GitHub Actions 的工作流语法”。