注意
GitHub Enterprise Server 目前不支持 GitHub 托管的运行器。
关于包含的配置操作和运行工具缓存
GitHub Actions 上的 GitHub Enterprise Server 设计为在没有完全 Internet 访问权限的环境中工作。 默认情况下,工作流不能使用直接来自 GitHub.com 和 GitHub Marketplace 的操作。
大多数官方 GitHub编写的操作都已自动与 GitHub Enterprise Server 捆绑在一起。 但是,没有 Internet 访问权限的自托管运行器需要一些配置,然后才能使用包含的 actions/setup-LANGUAGE 操作,例如 setup-node。
actions/setup-LANGUAGE 操作通常需要访问 Internet 才能将所需的环境二进制文件下载到运行器的工具缓存中。 没有互联网连接的自托管运行器无法下载二进制文件,所以您必须手动填充运行器上的工具缓存。
您可以通过在 GitHub Actions 上运行一个 GitHub.com 工作流来填充运行器工具缓存,该工作流会将由 GitHub 托管的运行器的工具缓存作为工件上传,然后您可以将该工件传输到无法连接到 Internet 的自托管运行器上并进行解压。
注意
只能将 GitHub 托管运行器的工具缓存用于具有相同操作系统和体系结构的自托管运行器。 例如,如果使用 ubuntu-22.04GitHub托管运行程序生成工具缓存,则自承载运行程序必须是 64 位 Ubuntu 22.04 计算机。 有关 GitHub 托管的运行器的更多信息,请参阅 GitHub 托管的运行器参考。
先决条件
- 确定自托管运行器需要哪些开发环境。 下面的示例演示如何使用 Node.js 版本 14 和 16 填充
setup-node操作的工具缓存。 - 有权访问 GitHub.com 上可用于运行工作流的存储库。
- 访问自托管运行器的文件系统以填充工具缓存文件夹。
填充自托管运行器的工具缓存
-
在 GitHub.com 上,导航到可用于运行 GitHub Actions 工作流的仓库。
-
在存储库的
.github/workflows文件夹中创建一个新的工作流文件,该文件上传包含 GitHub-hosted runner 工具缓存的项目。下面的示例演示了一个工作流程,该流程使用 Node.js 版本 14 和 16,利用
setup-node操作,为 Ubuntu 22.04 环境上传工具缓存文件。name: Upload Node.js 14 and 16 tool cache on: push jobs: upload_tool_cache: runs-on: ubuntu-22.04 steps: - name: Clear any existing tool cache run: | mv "${{ runner.tool_cache }}" "${{ runner.tool_cache }}.old" mkdir -p "${{ runner.tool_cache }}" - name: Setup Node 14 uses: actions/setup-node@v4 with: node-version: 14.x - name: Setup Node 16 uses: actions/setup-node@v4 with: node-version: 16.x - name: Archive tool cache run: | cd "${{ runner.tool_cache }}" tar -czf tool_cache.tar.gz * - name: Upload tool cache artifact uses: actions/upload-artifact@v3 with: path: ${{runner.tool_cache}}/tool_cache.tar.gz -
从工作流程运行下载工具缓存构件。 有关下载项目的说明,请参阅“下载工作流程构件”。
-
将工具缓存构件传输到自托管的运行器,并将其提取到本地工具缓存目录。 默认工具缓存目录为
RUNNER_DIR/_work/_tool。 如果运行器尚未处理任何作业,则可能需要创建_work/_tool目录。提取上述示例中上传的工具缓存构件后,自托管运行器上应具有类似于以下示例的目录结构:
RUNNER_DIR ├── ... └── _work ├── ... └── _tool └── node ├── 14.21.3 │ └── ... └── 16.16.0 └── ...
没有 Internet 访问权限的自托管运行器现在应该能够使用 setup-node 操作。 如果遇到问题,请确保已为工作流程填充了正确的工具缓存。 例如,如果需要使用 setup-python 动作,则需要用指定的 Python 环境填充工具缓存。