【问题标题】:Unable to set node environment variable in yml file无法在 yml 文件中设置节点环境变量
【发布时间】:2019-05-07 20:22:04
【问题描述】:

使用 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_ID 和 myVar 都返回未定义。我意识到此时我没有运行节点进程,这是一个问题。 npm run test 正在运行一个玩笑,它正在运行一堆我想要访问这些变量的测试。如何设置这些变量?

【问题讨论】:

    标签: node.js azure-devops yaml


    【解决方案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 中,您可以像每个环境变量一样读取变量。

    【讨论】:

    • 我尝试了选项一。在我的 test.js 脚本中,process.env.myVar 仍然是未定义的。将尝试选项二。
    • 仍未定义。我一定有另一个问题。
    • 你能读取像$(Build.SourceVersoin) (process.env.build_buildversion) 这样的默认变量吗?
    • 不幸的是返回未定义。我会阅读 azure devops 文档。
    猜你喜欢
    • 2013-04-30
    • 2019-02-11
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2019-06-10
    • 2014-04-14
    相关资源
    最近更新 更多