如何在GitHub Actions脚本中访问GitHub Variables?环境变量方式失效
问题描述
我在GitHub Actions脚本中尝试访问仓库级和组织级的Secrets与Variables,脚本如下:
name: CI (pip) on: [push, pull_request] jobs: build: strategy: matrix: os: ['ubuntu-latest'] python-version: [3.9] # installed version on Dreamhost runs-on: ${{ matrix.os }} timeout-minutes: 10 steps: - name: Checkout uses: actions/checkout@v3 with: submodules: true - name: First Test run: | echo ORG_NAME = ${{ env.ORG_NAME}} echo MY_NAME = ${{ env.MY_NAME}} echo MY_SECRET = ${{ secrets.MY_SECRET }} - name: Second Test env: ORG_NAME_ENV: ${{ env.ORG_NAME }} MY_NAME_ENV: ${{ env.MY_NAME }} MY_SECRET: ${{ secrets.MY_SECRET }} run: | echo ORG_NAME_ENV = $ORG_NAME_ENV echo MY_SECRET = $MY_SECRET echo SHA256 = `echo $MY_SECRET | openssl sha256`
当前问题:secrets.MY_SECRET可以正常获取,但env.ORG_NAME和env.MY_NAME始终无值。我已经配置了组织级和仓库级的Actions密钥与变量,Secrets访问正常,但Variables无法读取。
解决方案
GitHub Actions中,仓库/组织级的**Variables(变量)**不会自动注入到env上下文,需要通过vars上下文手动引用:
- 直接在步骤中输出变量时,替换为
vars上下文:- name: First Test Fixed run: | echo ORG_NAME = ${{ vars.ORG_NAME}} echo MY_NAME = ${{ vars.MY_NAME}} echo MY_SECRET = ${{ secrets.MY_SECRET }} - 如果要将变量注入到步骤的环境变量中,同样通过
vars上下文赋值:- name: Second Test Fixed env: ORG_NAME_ENV: ${{ vars.ORG_NAME }} MY_NAME_ENV: ${{ vars.MY_NAME }} MY_SECRET: ${{ secrets.MY_SECRET }} run: | echo ORG_NAME_ENV = $ORG_NAME_ENV echo MY_NAME_ENV = $MY_NAME_ENV echo MY_SECRET = $MY_SECRET
同时需要确认两个配置细节:
- 变量作用域:组织级变量需勾选"Repository access",确保当前仓库有权限读取;仓库级变量要确认是在当前仓库的
Settings > Secrets and variables > Actions > Variables下配置的。 - 变量名称:脚本中引用的变量名(
ORG_NAME、MY_NAME)要和配置的名称完全一致,GitHub变量名区分大小写。
内容的提问来源于stack exchange,提问作者vy32
相关产品推荐
相关产品推荐

