首页 > 解决方案 > 无法在 yml 文件中设置节点环境变量

问题描述

使用 Azure 的 DevOps 和azure-pipeline.yml文件,我试图定义一个process.env在我的 node.js 代码中使用的变量,该变量在npm run test被调用时运行。我将 git commit 版本设置Build.SourceVersionprocess.env.BATCH_ID.

azure-pipelines.yml看起来像:

trigger:
    - master

pool:
     vmImage: 'Ubuntu-16.04'

steps:
    - task: NodeTool@0
      inputs:
        versionSpec: '8.x'
        displayName: 'Install Node.js' 

- script: |
    npm install
    process.env['BATCH_ID']  = $(Build.SourceVersion)
    process.env['myVar']  = 'nick' 
    npm run start &
    npm run test 

在我的 Nodejs 代码中,两者BATCH_IDmyVar返回未定义。我意识到此时我没有运行节点进程,这是一个问题。npm run test 正在运行一个玩笑,它正在运行一堆我想要访问这些变量的测试。如何设置这些变量?

标签: node.jsazure-devopsyaml

解决方案


您可以在.yaml文件开头定义变量:

# Set variables once
variables:
  BATCH_ID: $(Build.SourceVersion)
  myVar: nick

steps:
 - task: NodeTool@0
   inputs:
     versionSpec: '8.x'
     displayName: 'Install Node.js' 

- script: |
   npm install
   npm run start &
   npm run test 

在脚本阶段设置变量的另一个选项:

- script: |
  npm install
  echo '##vso[task.setvariable variable=BATCH_ID]$(Build.SourceVersion)'
  echo '##vso[task.setvariable variable=myVar]nick'
  npm run start &
  npm run test 

在 Node.js 中,您可以像每个环境变量一样读取变量。


推荐阅读