Github Actions Workflows 使用
Github Actions workflows
- Workflows 是一个可以配置的自动化流程
- 它通过 YAML 文件定义,存放在仓库的
.github/workflows
目录中 - 可以有多个工作流,可以手动触发也可自动触发
- 免费版本每月有 2000 分钟的使用资源,也足够用了
如果想要系统的学习 Github Actions,可以直接查看👉 📘官方文档 👈进行学习
后面的内容就基于基本的文件内容和本人遇到的实际需求来写了,存个档方便以后忘了回来 Ctrl CV 🤔
yml 工作流配置文件
- 第一步在仓库的
.github/workflows
下随便创建一个.yml
文件 (例如demo.yml
) - 直接从官方文档上复制的例子:
1 | # 这里 name 是可选项,如果指定了 name, 它会显示在 Github 仓库的 Actions 页面里,实际操作一下就晓得了 |
on 触发工作流
- 👉 📘如何自动触发 GitHub Actions 工作流程
- 详细的触发事件说明 👉 📘触发工作流的事件
1 | on: |
workflow_dispatch:
可指定手动触发工作流,效果看📘这里schedule:
可在计划时间触发工作流(crontab),具体说明看📘这里push:
这里指定的是在master
分支上有人推送时或有人推送以v
开头的tag
时会触发,具体的说明看这里
job 作业内容
- 在 Github 👉 Marketplace 上有很多 actions
- 可以直接在上面搜关键词寻找满足自己需求的操作
- 例如环境配置
- 可以直接在上面搜关键词寻找满足自己需求的操作
一些常用的 actions:
- 📌actions/checkout@v4
- 用于将当前仓库拉取到工作流中
- 复杂的需求查看链接中的使用说明即可
- 📌actions/upload-artifact@v3
- 📌actions/download-artifact@v3
- 用于在不同的作业中共享数据
- upload 时 name 写一个用于标识的名字,path 写要上传的文件路径
- download 时 name 写 upload 时配置的名字,path 可选(指定保存到哪里)
- 📌actions/create-release@v1
- 用于创建 release
- 📌actions/upload-release-asset@v1
- 用于向 release 上传文件
- 📌ad-m/github-push-action@master
- 用于向目标仓库进行 push 操作
- 📌theme-keep/hexo-deploy-github-pages-action@master
- 用于自动部署 hexo 博客
Secrets
在一些 actions 的使用模板中可能会看到类似这样的内容:
1 | steps: |
- 这里的 secrets 可以认为是 Github Actions 工作流程的变量值,这个值只能有仓库管理员进行添加修改,可以用于传递密码、限制权限等
- 详细的说明看这里 👉 Using secrets in GitHub Actions
- ⚠️ 注意这里有一个特别的 secret 👉
secrets.GITHUB_TOKEN
- 这是 Github 自动创建的一个唯一的 secret(不能手动创建),可以在工作流中进行身份验证,详细说明看📘这里
- 使用到这个值的操作可能需要写权限,默认是只读权限,添加写权限需要到操作的仓库设置中的
Actions -> General -> Workflow permissions
中将其值修改为Read and write permissions
实例
自动编译并发布
- 例如需要将一个 Go 的项目自动编译并发布 Release
- 具体需求是当用户将以
v
开头的tag
push 到仓库时自动执行:- 编译该项目并将编译的程序
target
压缩为target-linux-amd64.tar.gz
- 发布一个同 tag 名的 Release,并将打包好的
tar.gz
文件上传到 Release 中
- 编译该项目并将编译的程序
- 具体需求是当用户将以
1 | name: build |