如何将环境变量作为输入传递给可复用GitHub Actions工作流?
GitHub Actions调用可复用工作流时输入变量为空的解决办法
问题场景
尝试从GitHub Actions工作流调用可复用工作流并传递输入变量,调用方工作流中定义了环境变量,希望将其作为输入传递,但可复用工作流中无法获取到变量值——调用方本地打印变量正常,可复用工作流打印结果为空。
调用方工作流配置
env: SOME_VAR: bla_bla_bla ANOTHER_VAR: stuff_stuff jobs: print: runs-on: ubuntu-latest steps: - name: Print inputs passed to the reusable workflow run: | echo "some var: $SOME_VAR" echo "another var: $ANOTHER_VAR" call_reusable: uses: ... with: input_var: $SOME_VAR another_input_var: $ANOTHER_VAR
可复用工作流配置
on: workflow_dispatch: workflow_call: inputs: input_var: required: true type: string another_input_var: required: true type: string jobs: the_job: runs-on: ubuntu-latest steps: - name: Print inputs run: | echo "input_var: ${{ inputs.input_var }}" echo "another_input_var: ${{ inputs.another_input_var }}"
错误日志
Run echo "input_var: ${{ inputs.input_var }}" echo "another_input_var: ${{ inputs.another_input_var }}" shell: /usr/bin/bash -e {0} input_var: another_input_var:
解决思路
- 核心问题:调用方工作流的
with块中直接使用$SOME_VAR无法被GitHub Actions解析,因为工作流的with参数属于配置层面,不是shell执行环境,必须用GitHub Actions表达式语法引用环境变量。 - 修正调用方配置:将
with块中的变量引用改为${{ env.SOME_VAR }}格式,修改后的call_reusablejob配置如下:
call_reusable: uses: ... with: input_var: ${{ env.SOME_VAR }} another_input_var: ${{ env.ANOTHER_VAR }}
- 原理说明:GitHub Actions中,工作流级别的环境变量需要通过
env上下文(${{ env.变量名 }})来引用,直接写$变量名会被当作普通空字符串传递,导致可复用工作流接收不到有效值。 - 验证:修改后重新运行工作流,可复用工作流的
Print inputs步骤将正常打印出传递的变量值。
内容的提问来源于stack exchange,提问作者takecare
相关产品推荐
相关产品推荐

