此版本的 GitHub Enterprise 已停止服务 2021-09-23. 即使针对重大安全问题,也不会发布补丁。 要获得更好的性能、改进的安全性和新功能,请升级到 GitHub Enterprise 的最新版本。 如需升级方面的帮助,请联系 GitHub Enterprise 支持

手动从 GitHub.com 同步操作

对于需要访问 GitHub.com 上操作的用户,您可以将特定操作同步到企业。

注:GitHub Enterprise Server 2.22 上的 GitHub Actions 支持是有限的公测版。 测试已结束。 GitHub Actions 现在一般可用于 GitHub Enterprise Server 3.0 或更新版本。 更多信息请参阅 GitHub Enterprise Server 3.0 发行说明


注: 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 pullpush 命令。

actions-sync 工具只能从存储在公有仓库中的 GitHub.com 下载操作。

基本要求

  • 在使用 actions-sync 工具之前,您必须确保所有目标组织已经存在于您的企业中。 以下示例演示如何将操作同步到名为 synced-actions 的组织。 更多信息请参阅“从头开始创建新组织”。

  • 您必须在企业上创建可以创建并写入目标组织中的仓库的个人访问令牌 (PAT)。 更多信息请参阅“创建个人访问令牌”。

  • 如果您想同步 您的 GitHub Enterprise Server 实例 上 actions 组织中的捆绑操作,您必须是 actions 组织的所有者。

    注意: 默认情况下,即使站点管理员也不是捆绑的 actions 组织的所有者。

    站点管理员可以在管理 shell 中使用 ghe-org-admin-promot-promotion 命令将用户升级为捆绑的 actions 组织的所有者。 更多信息请参阅“访问管理 shell (SSH)”和“ghe-org-admin-promote”。

    ghe-org-admin-promote -u USERNAME -o actions

示例:使用 actions-sync 工具

此示例演示使用 actions-sync 工具将个别操作从 GitHub.com 同步到企业实例。

注:此示例使用 actions-sync sync 命令 它要求从您的计算机同时访问 GitHub.com API 和企业实例的 API。 如果您一次只能访问一个系统,您可以使用 actions-sync pullpush 命令。 更多信息请参阅 actions-sync README

  1. 为您计算机的操作系统下载并解压缩最新的 actions-sync 版本

  2. 创建一个目录来存储工具的缓存文件。

  3. 运行 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 仓库同步到目标企业实例上的 synced-actions/docker-build-push-action 仓库。 在运行上述命令之前,您必须在企业中创建名为 synced-actions 的组织。
      • 如果您省略 :destination_owners/destination_repost,工具将使用企业的原始所有者和仓库名称。 在运行命令之前,必须在企业中创建一个与操作的所有者名称匹配的新组织。 考虑使用一个中心组织来存储企业中同步的操作,因为这样在同步来自不同所有者的操作时,将无需创建多个新的组织。
      • --repo-name 参数替换为 --repo-name-list--repo-name-list-file 便可同步多个操作。 更多信息请参阅 actions-sync README
  4. 在企业中创建操作仓库后,企业中的人员可以使用目标仓库在其工作流程中引用操作。 对于上面显示的示例操作:

    uses: synced-actions/docker-build-push-action@v1
    

    更多信息请参阅“GitHub Actions 的工作流程语法”。