配置任务 Jobs
本文档介绍如何定义工作任务(Job),包括运行环境、依赖关系、条件执行、超时时间、环境变量、输出参数和容错配置。
当你需要在 workflow 中定义一个或多个任务,指定运行环境、超时时间、环境变量、并发控制、矩阵策略等时。
前提条件
- 已理解 workflow 的基本结构。
- 已确定 job 需要的运行环境(Runner 标签)。
快速示例
name: ci
on:
push:
branches:
- main
jobs:
build:
name: 构建
runs-on: [ubuntu-latest, x64, small]
timeout-minutes: 30
env:
APP_ENV: production
steps:
- name: Checkout source code
uses: checkout
- name: Run bash
run: ./build.sh
配置说明
runs-on 运行环境
runs-on 指定 job 运行的 Runner 环境。AtomGit Action 的官方资源池标签采用三段式格式:{os}-{version},{arch},{flavor}。
| 段位 | 说明 | 示例 |
|---|---|---|
{os}-{version} | 操作系统及版本 | ubuntu-latest 、euler-latest |
{arch} | CPU 架构 | x64、arm64 |
{flavor} | 资源规格 | slim、small、medium、large、xlarge、2xlarge |
完整标签示例:
runs-on: [ubuntu-latest, x64, small]
默认标签 default 对应 [ubuntu-latest, x64, small],即:
runs-on: default
# 等同于 [ubuntu-latest, x64, small]
自托管资源池配置示例:
runs-on: [self-hosted, linux, x64]
self-hosted 表示自托管,通过self-hosted + 自定义标签的方式匹配自托管的资源池。
needs 依赖
通过 needs 配置 job 间的依赖关系,被依赖的 job 完成后才执行当前 job:
jobs:
build:
name: 构建
runs-on: [ubuntu-latest, x64, small]
steps:
- name: Run build
run: echo "build"
test:
name: 测试
runs-on: [ubuntu-latest, x64, small]
needs: build
steps:
- name: Run test
run: echo "test"
deploy:
name: 部署
runs-on: [ubuntu-latest, x64, small]
needs:
- test
- build
steps:
- name: Run deploy
run: echo "deploy"
if 条件执行
你可以用条件句阻止作业运行,除非满足某个条件。你可以使用任何支持的上下文和表达式来创建条件句。有关本检索表支持的上下文的更多信息,请参见上下文参考。
jobs:
deploy:
name: 部署
if: ${{ atomgit.ref == 'refs/heads/main' }}
runs-on: [ubuntu-latest, x64, small]
steps:
- name: Run deploy
run: echo "deploy only on main"
timeout-minutes 超时时间
jobs:
build:
name: 构建
runs-on: [ubuntu-latest, x64, small]
timeout-minutes: 30
steps:
- name: Run bash
run: ./build.sh
默认超时时间为 4320 分钟(72 小时)。超时后 job 将被强制终止。
env 环境变量
job 级别的 env 对该 job 内所有 step 可见:
jobs:
build:
name: 构建
runs-on: [ubuntu-latest, x64, small]
env:
APP_ENV: production
BUILD_MODE: release
steps:
- name: Run env
run: echo "$APP_ENV"
- name: Run build
run: echo "$BUILD_MODE"