Github Action 技巧查询
Github Action 上下文
- secrets 上下文中的
secrets.GITHUB_TOKEN
用于身份验证
设置环境变量
除了通过 env:
字段来直接指定环境变量,还可以在工作流运行期间使用 set-env
命令来设置环境变量。
echo "{environment_variable_name}={value}" >> "$GITHUB_ENV"
保留 job 的输出
输出也是有两种方式(但是这两种方式都是要 job/step 的 id
):
- 直接使用
GITHUB_OUTPUT
来获取,但是这种方式只能在终端中使用 - 使用
output:
字段,这种方式可以用于任何类型的输出,该字段在不同的 job 之间可以共享输出,但是需要needs
指定顺序。
可以查询这个比较简单的示例,以下仅展示一部分:
create_release:
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changelog_reader.outputs.changes }}
version: ${{ steps.changelog_reader.outputs.VERSION }}
steps:
- uses: actions/checkout@v3
- name: Get version number
id: get_version
run: |
VERSION=${GITHUB_REF#refs/tags/}
echo "VERSION=${VERSION/v_gui\./}" >> $GITHUB_ENV
- name: Changelog Reader
id: changelog_reader
uses: mindsers/changelog-reader-action@v2.2.2
with:
path: './crates/cli/CHANGELOG.md'
version: ${{ steps.get_version.outputs.version }}
之后我们指定该 job,然后使用 ${{ needs.create_release.outputs.changes }}
方式来访问。
指定仓库执行
在其它成员 fork 仓库的时候,我们不希望其它成员也运行 GitHub workflow,可以使用 if 语句进行判别。像这样:
if: github.repository == 'jaywcjlove/reference'
矩阵策略
在 matrix 你可以指定不同平台,不同版本之间的组合,进行多个 job 的执行。