在 github 操作工作流程中嵌套变量引用

Kau*_*hik 7 github github-actions

这是我的要求。我为每个环境创建了单独的 GitHub 机密。

例如在 GitHub 中的秘密:

STAGING_USERNAME -> <SOME_VALUE>
PROD_USERNAME -> <SOME_VALUE>
Run Code Online (Sandbox Code Playgroud)

我想构造一个新变量并将其设置在 GitHub env 中,如下所示

name: Build and Deploy to CAA Backend
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  
  workflow_dispatch:
    inputs:
      infraEnv:
        description: 'Env (staging/prod)'     
        required: true
        default: 'staging'
  jobs:
    setup-build-publish:
      name: Test, Build, Deploy, Notify
      runs-on: ubuntu-latest
      steps:
        name: 
          run: |
            echo "USERNAME=${{secrets.${{github.event.inputs.infraEnv}}_username}}" >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)

但这会引发语法错误。如何解决这个问题?

mhs*_*ith 11

您可以使用以下函数执行此format操作:

${{ secrets[format('{0}_username', github.event.inputs.infraEnv)] }}
Run Code Online (Sandbox Code Playgroud)


小智 -2

你需要写一些类似的东西

   run: |
      echo "USERNAME=${{secrets[github.event.inputs.infraEnv+'_username']}}" >> $GITHUB_ENV
Run Code Online (Sandbox Code Playgroud)

由于 ${{ }} 是一个评估表达式的模板函数,因此您不能嵌套它。相反,将“秘密”哈希视为哈希并构造密钥字符串以实现预期访问。