官方文档:
https://github.com/features/actions
https://docs.github.com/en/actions
基本概念
GitHub Actions用于自动化软件开发中的任务
GitHub Actions是事件驱动的,即当指定的事件发生时(例如push, pull request等)运行一系列命令(例如构建、测试、部署等)

事件自动触发workflow,一个workflow包含一个或多个并行执行的job,一个job包含多个顺序执行的step,每个step执行一个action,action即具体执行的命令
runner是一个安装了GitHub Actions runner的虚拟机,基于Ubuntu Linux, Windows或macOS,默认使用GitHub服务器的runner。每次执行一个job时,GitHub服务器都将创建一个新的虚拟环境。
创建workflow
GitHub Actions使用YAML语法来定义job和step,这些YAML文件保存在仓库根目录下的.github/workflows目录中
下面的步骤创建了一个示例workflow,每次向仓库push代码时执行bats命令(一个自动化测试工具):
(1)在仓库中创建一个.github/workflows/目录
(2)在.github/workflows/目录下,创建一个名为learn-github-actions.yml的文件,表示一个workflow,内容如下:
name: learn-github-actions
on: [push]
jobs:
check-bats-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '14'
- run: npm install -g bats
- run: bats -v
(3)提交并推送代码
下面逐行分析该workflow文件
| 代码 | 解释 |
|---|---|
name: learn-github-actions | workflow的名字(不一定要和文件名相同),可省略 |
on: [push] | 指定触发该workflow的事件,该示例使用push事件 |
jobs: | 定义该workflow中的job |
check-bats-version: | job的名字,可任意 |
runs-on: ubuntu-latest | 指定该job运行在Ubuntu Linux runner中(GitHub创建的虚拟机) |
steps: | 指定该job包含的step |
- uses: actions/checkout@v2 | uses关键字表示使用一个现有的action(一种特殊的仓库),格式为{owner}/{repo}@{ref},该示例使用的是actions/checkout@v2,用于(在虚拟机上)拉取代码,从而可以对代码执行操作(例如测试工具),任何需要对代码执行操作workflow都要使用该action |
- uses: actions/setup-node@v2with:node-version: '14' | 安装指定版本的node软件包,从而可以使用npm命令 |
- run: npm install -g bats | run关键字在runner上执行一个命令,该示例中使用npm安装测试工具bats |
- run: bats -v | 执行bats命令,输出版本 |
该示例workflow的可视化:

可在GitHub仓库的Actions标签页查看运行结果
常用action
actions是一个GitHub官方账户,提供了多种常用的action,除此之外还有大量其他用户贡献的action,可在GitHub Marketplace搜索
- actions/checkout@v2:获取代码(≈git clone)
- actions/setup-python@v2:配置Python环境
- appleboy/ssh-action@master:执行远程SSH命令
本文介绍了GitHub Actions的基本概念,如事件驱动的工作流程、job和step结构,以及如何通过YAML定义工作流。还展示了如何创建一个简单的示例工作流,包括使用actions/checkout和actions/setup-node进行代码拉取和环境配置。此外,文章提到了常用action和创建GitHub Actions workflow的关键步骤。
2045

被折叠的 条评论
为什么被折叠?



