有关Github Actions的一些技巧和操作方法,包括现有运行环境、配置、在Action文件中获取时间等等。
基本概念
Github Actions(下面简称“Actions”)就相当于 Github 给你一个你指定操作系统的虚拟机,然后在虚拟机里面执行你指定的操作。
Actions的运行依赖于提前创建好的YAML文件,该文件要求严格缩进,由基本结构组成,分别是Action名称、触发方式、任务组和步骤构成
1 | name: example |
这些YMAL文件统一存放在仓库下面的/.github/workflows/
文件夹下面,扩展名必须有,名称随意。
笔记
以下主要记录一些定义和可用值,仅供参考。
触发方式
这里主要写的是常用的触发方式,其他的触发方式还有很多,可以参考官方文档Events that trigger workflows。
- 手动Run:
需要到Github仓库页面-Actions-对应的工作流-RunWorkflow1
2on:
workflow_dispatch: - 定时运行:
指定运行的时间,cron
参数是标准的cron格式,可以指定多条。
需要额外注意的是,Github Actions的时区是UTC,如果指定的是北京时间则还需要自行换算一下。1
2
3on:
schedule:
- cron: '50 3 * * *' - 当有Push活动时运行:
当检测到有对指定branch进行Push活动时自动执行,也可以不指定branch,当仓库有任何Push活动时执行。1
2
3on:
push:
branches: [ main,secondbranch ] - 外部API触发
可以通过外部API触发,types
中是自定义的事件名称。在外部可以用如下的API启动该Actions:1
2
3on:
repository_dispatch:
types: [upload, download]1
2
3
4
5
6
7
8
9
10curl --location --request POST 'https://api.github.com/repos/<YourName>/<RepoName>/dispatches' \
--header 'Accept: application/vnd.github.v3+json' \
--header 'Authorization: Bearer <Github Token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"event_type": "upload",
"client_payload": {
"text": "my custom text here"
}
}'client_payload
是外部输入的参数;<Github Token>
位置填入你的Token,申请位置在Settings->Developer settings->Personal access tokens,建议使用Fine-grained personal access tokens,记得勾选Actions和Workflow相关权限;<YourName>/<RepoName>
填入你的仓库。
以上的所有触发方式均可以同时使用,是“和(and)”的关系。
1 | on: |
操作系统环境
操作系统目前来说Github支持三种:Windows、Linux和macOS,尽管官方支持但还是不推荐直接用xxx-latest
这种,建议直接指定版本。
镜像名称 | 可用值 | 配置 |
---|---|---|
Windows Server 2022 | windows-2022 | — |
Windows Server 2019 | windows-2019 | — |
Ubuntu 22.04 | ubuntu-22.04 | — |
Ubuntu 20.04 | ubuntu-20.04 | 2x E5-2673 v3 @ 2.39GHz 7.0GB RAM 84GB vDisk(SSD) |
macOS Monterey 12 | macos-12 | 3x E5-1650 v2 @ 3.50GHz 15.0GB RAM 380GB vDisk |
macOS Big Sur 11 | macos-11 | — |
基本格式就是填进runs-on
后面即可:
1 | runs-on: ubuntu-20.04 |
需要额外注意的是,Github Actions 每月有一定的免费额度,超出会额外收费,在Settings->Billing and plans右侧可以看当前总额度和当前已用额度。另外macOS的虚拟机用量按10倍计算(即使用1分钟但会扣除10分钟的额度),Windows的虚拟机按照两倍计算,请合理安排适时终止。
Checkout后仓库位置
在$GITHUB_WORKSPACE
。
1 | cd $GITHUB_WORKSPACE |
Action脚本中获取当前日期
添加如下步骤:
1 | steps: |
在该Action配置文件的其他地方引用:
1 | steps: |
给Actions添加Secret
在仓库页面->Settings->Secrets and variables,右上角New repository secret,不是左侧栏Code and automation下面的Environments。
Actions扩容
准确的来说目前并不能扩容,不过因为Github官方处于易用的考虑在镜像中添加了诸多我们可能会用不上的SDK和toolchain,而我们可以通过移除这些不需要的东西来节约一些空间,并使用LVM使其组成一个更大的分区。
目前测试仅限 Ubuntu。
在你的yaml文件中添加如下步骤:
1 | steps: |
可用的输入如下(仅包含常用项,完整列表):
1 | root-reserve-mb: |