Context Information#
Context 是一些在运行 Workflow 的过程中自带的变量. 你可以再 Workflow YAML 文件中用 ${{ context_name.key }}
的方式来引用这些值. 常见的 context 有:
GitHub repo name
branch name
commit id
environment variable
secrets
workflow inputs
这里有个地方要注意, 不是在 yaml 中的任何地方都可以使用这些 context 的, 每个 context 有自己的 availability scope, 详情请参考 Context Availability 文档. 这里一个常见的坑是 ${{ env.ENV_NAME }}
, 用环境变量来传递参数是很方便, 但是的确在很多地方是无法使用这个 context 的, 例如 jobs.<job_id>.if
, jobs.<job_id>.uses
. 一般凡是你想要用 env 但是用不了的时候就可以考虑用 on.workflow_dispatch.inputs
来定义 workflow 的入参, 然后再这些地方引用.
Sample Workflow Definition#
1# ------------------------------------------------------------------------------
2# Demonstrate how to define and use environment variables
3#
4# Reference
5#
6# - Variables: https://docs.github.com/en/actions/learn-github-actions/variables
7# ------------------------------------------------------------------------------
8name: 01_04_environment_variables
9on:
10 workflow_dispatch:
11env: # workflow level env var
12 WORKFLOW_ENV_VAR: "this is a workflow env var"
13jobs:
14 build:
15 runs-on: ubuntu-latest
16 env: # job level env var
17 JOB_ENV_VAR: 'this is a job env var'
18 steps:
19 - name: build
20 env: # step level env var
21 STEP_ENV_VAR: this is a step env var
22 run: |
23 echo WORKFLOW_ENV_VAR = ${WORKFLOW_ENV_VAR}
24 echo JOB_ENV_VAR = ${JOB_ENV_VAR}
25 echo STEP_ENV_VAR = ${STEP_ENV_VAR}
Reference#
Context: 关于 context 的官方文档.