tags: [‘GitHub’,‘Actions’]
categories: ‘精选推荐’
# 基本概念
- workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。
- job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
- step(步骤):每个 job 由多个 step 构成,一步步完成。
- action (动作):每个 step 可以依次执行一个或多个命令(action)。
# workflow 文件
GitHub Actions 的配置文件叫做 workflow 文件,存放在代码仓库的.github/workflows目录。
workflow 文件采用 YAML 格式,文件名可以任意取,但是后缀名统一为.yml,比如foo.yml。
一个库可以有多个 workflow 文件。
GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行该文件。
workflow 文件的配置字段非常多,详见官方文档。下面是一些基本字段。
# name
工作流的名称。GitHub 在存储库的 “Actions” 显示工作流的名称。如果省略 ,GitHub 将显示相对于存储库根目录的工作流文件路径。
1 | name: GitHub Actions Demo |
# on
定义运行工作流时的触发事件
# 使用单个事件
例如,具有以下值的工作流将在推送到工作流存储库中的任何分支时运行:on
1 | on: push |
# 使用多个事件
您可以指定单个事件或多个事件。例如,当推送到存储库中的任何分支或有人分叉存储库时,将运行具有以下值的工作流:on
1 | on: [push, fork] |
如果指定多个事件,则只需发生其中一个事件即可触发工作流。如果同时发生工作流的多个触发事件,则将触发多个工作流运行。
# jobs.<job_id>.name
工作流运行中要执行的一项或多项任务
1 | jobs: |
上面代码的 jobs 字段包含 task1、task2 任务,task1 (job_id) 里面的 name 字段是任务的说明。
# jobs.<job_id>.needs
用于标识在运行当前任务之前必须成功完成的一项或多项作业
1 | jobs: |
job1 无需等待直接执行、job2 需要等待 job1 执行完成、job3 需要等待 job1、job2 都执行完成。
示例执行流程 | job1 -> job2 -> job3
# jobs.<job_id>.runs-on
runs-on 字段指定运行所需要的虚拟机环境。可用虚拟机如下(示例)
ubuntu | windows | macos |
---|---|---|
ubuntu-latest | windows-latest | macos-latest |
ubuntu-18.04 | windows-2019 | macos-10.14 |
ubuntu-22.04 | windows-2022 | macos-12 |
指定虚拟机为 ubuntu-22.04 (必填)
1 | runs-on: ubuntu-22.04 |
# jobs.<job_id>.steps
steps 字段指定每个 Job 的运行步骤,可以包含一个或多个步骤。
每个步骤都可以指定以下三个字段。
1 | jobs.<job_id>.steps.name:名称 |