无法在yml文件中设置节点环境变量

时间:2019-05-07 20:22:05

标签: node.js azure-devops yaml

使用Azure的DevOps和azure-pipeline.yml文件,我试图定义一个process.env变量以用于我的node.js代码,该变量在调用npm run test时运行。我正在将git commit版本从Build.SourceVersion设置为process.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运行的是开玩笑,我正在运行一堆要访问这些变量的测试。如何设置这些变量?

1 个答案:

答案 0 :(得分:1)

您可以在.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中,您像读取每个环境变量一样读取变量。