GitHub Action 简介
Last updated
Was this helpful?
Last updated
Was this helpful?
学会如何创建 GitHub Action
学会如何在 workflow 中使用 GitHub Action
GitHub Actions 是用来自动化任务的,比如:
自动化测试(CI)
CD
自动使用 issues, @, labels 等响应 workflow triggers
触发 code review
管理分支
负责 issues, pr 的分类
这些任务都是代码,可以复用和分享。
每个 action 负责不同的事情,一个 workflow 里面可以有多个 action。
一个 action 可能会包含多个文件,一般每个 action 都有自己的文件夹,里面放着相关文件。
action 分两种:
container action
javascript action
docker container action 将 action 代码和环境一起打包,只能在 GitHub-Hosted Linux 环境下运行。
JavaScript actions 将 action 代码和环境分开,执行速度更快,但是依赖管理的责任更重。
Dockerfile
Dockerfile 文件定义了 action 的 metadata。
新建 action-name/Dockerfile
文件:
上一步的 Dockerfile 文件中,最后一句指定了入口脚本文件,/entrypoint.sh
文件用来定义这个 action 具体要做的事情,它会在 Docker 中执行。
所以我们要来定义这个入口文件,新建一个 action-name/entrypoint.sh
文件:
每个 action 都有一个 metadata 文件,使用 YAML 语法书写,文件定义了 action 的 输入
、输出
和 入口文件
。
新建一个 action-name/action.yml
文件:
workflow 文件定义在 .github/workflows
文件夹下。
我们可以自定义 workflow 执行的时机,比如 push
事件。
github 事件
指定时间
github 之外发生的事件
新建 .github/workflows/main.yml
文件:
workflow 由 job 组成,job 由 step 组成,一个 step 可以是一个 action,也可以是一个 bash 命令。
job 可以执行 action,我们可以执行定义在同一个仓库下的 action,也可以是其他仓库的 action,或者是发布在社区的 action。
修改 .github/workflows/main.yml
文件:
现在我们往仓库里提交新代码时,push 事件触发,action-a 就会执行,可以在 GitHub 的 Actions tab 看到详细情况。
可以是: