如何在Azure Devops管道中为Node JS构建作业设置环境变量

时间:2020-05-25 16:08:49

标签: node.js azure docker azure-devops azure-pipelines

我正在将一些秘密从Azure Key Vault导入到Variable Group到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"

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

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

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

   env:
          MYSECRETAPIKEY: $(KV_API_KEY)

我认为以上代码会将变量导出到特定的语言处理环境。但事实并非如此。我该如何解决?

1 个答案:

答案 0 :(得分:2)

# 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)

看起来像机密的东西在代理程序范围内,以供使用的单个任务和脚本。问题是我有env:在一个单独的临时任务中声明。将其移动到上述代码中脚本声明的同一位置已解决了该问题。