GitHubActions
记录一下 GitHub Actions 的简单使用,强大得很
概述
GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。我的理解,为 GitHub 项目进行自动化操作的工具,提供一个 Linux 系统对我们的代码进行运行、构建、发布等等。工作流在仓库的 .github/workflows
下面定义,文件名为 *.yml
,每一个 yml
文件一个工作流程。下面实例为一个简单的定时运行项目根路径下 index.py
文件的实例:
1 |
|
1 |
|
常用语法
on
在 on
下定义如何触发当前工作流程,具体的非常多。参考文档
push
,当 push 操作时触发schedule
,定时任务pull_request
,当 PR 时触发
jobs
在 jobs
下定义工作流任务,可以有多个。参考文档
needs
,确定 jobs 间的依赖,以下为确保顺序为 job1,job2,job31
2
3
4
5
6jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]if
,为 true 才执行当前任务,在if
条件下使用表达式时,可以省略表达式语法 (${{ }}
)
runs-on
指定当前任务所使用的计算机类型。参考文档
windows-latest
:最新 windows 服务器镜像,Windows Server 2022ubuntu-latest
:最新 Ubuntu 服务器镜像,Ubuntu 22.04macos-latest
:最新 Mac 服务器镜像,macOS Big Sur 11
steps
定义一个任务中每一步操作。参考文档
name
:当前步骤的名称if
:为真才执行当前步骤uses
:使用指定的 action 操作,marketplace- actions/checkout@v3:检出代码
- actions/setup-python@v4:安装 python 环境
- softprops/action-gh-release@v0.1.14: 发布 release
- actions/upload-artifact@v3.1.1:上传构件
run
:默认在所选操作系统内运行命令行working-directory
:可指定当前run
后的命令所运行的工作目录sehll
:设置run
所处的环境with
:设置uses
指定的action
所使用的输入参数env
:当前步骤所使用的环境变量
matrix
定义矩阵策略进行多维度自动化。参考文档
1 |
|
当前策略会以不同版本和操作系统执行 6 次任务,默认情况下,GitHub 将根据运行器的可用性将并行运行的作业数最大化,矩阵在每次工作流运行时最多将生成 256 个作业。可以使用 matrix.version
和 matrix.os
来访问作业正在使用的 version
和 os
的当前值。
1 |
|
badge
添加工作流徽章,显示工作流执行结果状态。
https://github.com/<OWNER>/<REPOSITORY>/actions/workflows/<WORKFLOW_FILE>/badge.svg
表达式
${{
,使用该语法获取表达式值,在 if 中会自动对表达式求值,因此在 if 中可不加 ${{}}
。参考文档
上下文变量,参考文档。