注: GitHub 托管的运行器目前在 GitHub Enterprise Server 上不受支持。 您可以在 GitHub 公共路线图 上查看有关未来支持计划的更多信息。
概览
本文介绍了 GitHub Actions 的一些高级功能,可帮助您创建更复杂的工作流程。
存储密� �
如果您的工作流程使用敏感数据,例如密� �或证书, 您可以将这些信息在 GitHub 中保存为 机密,然后在工作流中将它们用作环境变量。 这意味着您将能够创建和共享工作流程,而� 需直接在 YAML 工作流程中嵌入敏感值。
此示例操作演示如何将现有机密引用为环境变量,并将其作为参数发送到示例命令。
jobs:
example-job:
runs-on: ubuntu-latest
steps:
- name: Retrieve secret
env:
super_secret: ${{ secrets.SUPERSECRET }}
run: |
example-command "$super_secret"
更多信息请参阅“创建和存储� 密密� �”。
创建依赖的作业
默认情况下,工作流程中的作业同时并行运行。 � 此,如果您有一个作业必须在另一个作业完成后运行,可以使用 needs
关键字来创建此依赖项。 如果其中一个作业失败,则跳过所有从属作业;但如果您需要作业继续,可以使用条件语句 if
来定义。
在此示例中,setup
、build
和 test
作业连续运行,build
和 test
取决于其前面的作业成功完成:
jobs:
setup:
runs-on: ubuntu-latest
steps:
- run: ./setup_server.sh
build:
needs: setup
runs-on: ubuntu-latest
steps:
- run: ./build_server.sh
test:
needs: build
runs-on: ubuntu-latest
steps:
- run: ./test_server.sh
For more information, see "Defining prerequisite jobs."
使用构建矩阵
如果您希望工作流程跨操作系统、平台和语言的多个组合运行测试,可以使用构建矩阵。 构建矩阵是使用 strategy
关键字创建的,它接收构建选项作为数组。 例如,此构建矩阵将使用不同版本的 Node.js 多次运行作业:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node: [6, 8, 10]
steps:
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
For more information, see "Using a build matrix for your jobs."
使用数据库和服务容器
如果作业需要数据库或缓存服务,可以使用 services
关键字创建临时容器来托管服务;生成的容器然后可用于该作业中的所有步骤,并在作业完成后� 除。 此示例演示作业如何使用 services
创建 postgres
容器,然后使用 node
连接到服务。
jobs:
container-job:
runs-on: ubuntu-latest
container: node:10.18-jessie
services:
postgres:
image: postgres
steps:
- name: Check out repository code
uses: actions/checkout@v2
- name: Install dependencies
run: npm ci
- name: Connect to PostgreSQL
run: node client.js
env:
POSTGRES_HOST: postgres
POSTGRES_PORT: 5432
更多信息请参阅“使用数据库和服务容器”。
使用� �签路由工作流程
此功能可帮助您将作业分配到特定的托管运行器。 如果要确保特定类型的运行器处理作业,可以使用� �签来控制作业的执行位置。 除了 self-hosted
的默认� �签之外,您还可以向自托管运行器分配� �签。 然后,您可以在 YAML 工作流程中引用这些� �签,确保以可预测的方式安排作业。 GitHub 托管的运行器已指定预定义的� �签。
此示例显示工作流程如何使用� �签来指定所需的运行器:
jobs:
example-job:
runs-on: [self-hosted, linux, x64, gpu]
工作流程只能在一个所有� �签处于 runs-on
数组中的运行器上运行。 作业将优先转到具有指定� �签的空闲自托管运行器。 如果没有可用且具有指定� �签的 GitHub 托管运行器存在,作业将转到 GitHub 托管的运行器。
要了解自托管运行器� �签的更多信息,请参阅“将� �签与自托管运行器一起使用”。
To learn more about GitHub-hosted runner labels, see "Supported runners and hardware resources".
Using starter workflows
GitHub provides preconfigured starter workflow that you can customize to create your own continuous integration workflow. GitHub Enterprise Server analyzes your code and shows you CI starter workflow that might be useful for your repository. 例如,如果仓库包含 Node.js 代� �,您就会看到 Node.js 项目的建议。 You can use starter workflow as a starting place to build your custom workflow or use them as-is.
You can browse the full list of starter workflow in the actions/starter-workflows
repository on your GitHub Enterprise Server instance.
- 在 your GitHub Enterprise Server instance 上,导航到仓库的主页面。
- Under your repository name, click Actions.
- 如果您的仓库已经有工作流程:在左上角单击 New workflow(新工作流程)。
- Under the name of the starter workflow you'd like to use, click Set up this workflow.
后续步骤
要继续了解 GitHub Actions,请参阅“与组织共享工作流程、秘密和运行器”。