如何在 azure devops 管道中为节点 js 构建作业设置环境变量

Ful*_*ain 2 azure node.js docker azure-devops azure-pipelines

我正在将一些机密从 Azure Key Vault 导入到变量组再到 CI/CD 管道。

我能够使用 Azure Devops UI 从 KeyVault 映射 VariableGroup 中所需的机密。

在我的管道 YAML 中,我能够读取和打印那些作为 AzureKeyVault 机密的 VariableGroup 变量。

    trigger:
      - dev

    # define the VM image 
    pool:
      vmImage: "Ubuntu 16.04"

    # define variables to use during the build
    variables:
    - group: SecretVarGroup # it has keyvault variable 'KV_API_KEY'
    - group: PublicVarGroup # it has a variable 'API_CLIENTID'

    # define the step to export key to env varaiable
    steps:

      - script: echo $MYSECRETAPIKEY
        env:
          MYSECRETAPIKEY: $(KV_API_KEY)

      ## Run the npm build
      - script: |
          npm run build
        displayName: "npm build"
Run Code Online (Sandbox Code Playgroud)

我能够在构建输出日志中看到打印为 *** 值的“KV_API_KEY”秘密的值,我认为它可以使用。我还看到构建日志中打印的 API_CLIENTID 值以及节点 js process.env 对象。

我假设变量“MYSECRETAPIKEY”将在我的节点 js process.env 对象中可用。但它不可用。

我测试它的方式是在我的节点 js 项目构建配置中,我有一个打印 process.env 对象的打印语句。它打印了管道构建代理的所有环境变量,包括我的 PUBLICVARGROUP 变量“API_CLIENTID”。但是我在 process.env 对象中没有看到我的秘密变量“MYSECRETAPIKEY”。

   env:
          MYSECRETAPIKEY: $(KV_API_KEY)
Run Code Online (Sandbox Code Playgroud)

我认为上面的行会将变量导出到特定的语言过程环境。但事实并非如此。我怎样才能解决这个问题?

Ful*_*ain 5

# define the step to export key to env varaiable
steps:

  ## Run the npm build
  - script: |
      npm run build
    displayName: "npm build"
    env:
      MYSECRETAPIKEY: $(KV_API_KEY)
Run Code Online (Sandbox Code Playgroud)

看起来秘密范围限定在代理上,供单个任务和脚本使用。问题是我有 env: declaraion 在一个单独的临时任务中。将它移动到上面代码中我的脚本声明的同一个位置已经解决了这个问题。