Context Information#

Context 是一些在运行 Workflow 的过程中自带的变量. 你可以再 Workflow YAML 文件中用 ${{ context_name.key }} 的方式来引用这些值. 常见的 context 有:

  1. GitHub repo name

  2. branch name

  3. commit id

  4. environment variable

  5. secrets

  6. 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#