繁体   English   中英

如何在 Azure DevOps 的脚本步骤中读取环境变量?

[英]How to read environment variables in Script step in Azure DevOps?

我正在尝试在 Azure DevOps Build 管道中运行此命令:

npm run coverage

此命令需要 2 个可用的环境变量才能成功完成。

早些时候,我使用的是NPM 任务,但我们无法在该任务中传递环境变量。

  - task: Npm@1
    displayName: npm test
    inputs:
      command: custom
      workingDir: $(Build.SourcesDirectory)
      verbose: false
      customCommand: run coverage

因此,我将其更改为脚本步骤,如下所示:

        - script: 'npm run coverage'
          workingDirectory: $(Build.SourcesDirectory)
          displayName: 'npm test'
          env:
            CLASS_PATH: './test/mock/'
            MONGO_PATH: '../../../services/mock/'     

但它没有拾取这 2 个 env 变量,并且任务失败导致整个构建失败。

我还尝试添加一个脚本任务,该任务在运行覆盖命令之前设置这两个环境变量,如下所示:

          - script: |
            export CLASS_PATH='./test/mock/'
            export MONGO_PATH='../../../services/mock/'
            echo $CLASS_PATH
            echo $MONGO_PATH

它打印设置的环境变量,但下一步是npm run coverage没有得到这些环境变量。

谁能帮助将这些环境变量传递给 npm 命令?

我的管道:

trigger:
branches:
  include:
    - 'master'

variables:
  class_path: './test/mock/'
  mongo_path: '../../../services/mock/'  

pool: 'self-hosted'

stages:
  - stage: Build
    displayName: Build and push stage
    jobs:
      - job: Build
        displayName: Build
        pool:
          name: 'self-hosted'
        steps:

          - script: |
              export CLASS_PATH='./test/mock/'
              export MONGO_PATH='../../../services/mock/'
              echo $CLASS_PATH
              echo $MONGO_PATH

          - script: 'npm run coverage'
            workingDirectory: $(Build.SourcesDirectory)
            displayName: 'npm test'
            env:
              CLASS_PATH: $(class_path)
              MONGO_PATH: $(mongo_path) 

在 Azure Devops 中,管道变量也显示为环境变量。

对于下一个示例,先前的变量将作为 $(class.path) 和 $CLASS_PATH 可用

variables:
- name: class.path
  value: '/some/path'

steps:
  - task: Npm@1
    displayName: npm test
    inputs:
      command: custom
      workingDir: $(Build.SourcesDirectory)
      verbose: false
      customCommand: run coverage

现在可能会发生某些任务无法正确获取变量,在这种情况下您可以像这样使用:

variables:
- name: class.path
  value: '/some/path'
- name: mongo.path
  value: '/some/path'

steps:
    - script: 'npm run coverage'
      workingDirectory: $(Build.SourcesDirectory)
      displayName: 'npm test'
      env:
        CLASS_PATH: $(class.path)
        MONGO_PATH: $(mongo.path)

注意:脚本任务通常不需要显式环境变量映射,因为它可以立即访问作为环境变量的变量。

下一步是检查您的 npm 脚本,它可能会正确获取变量。

请看一下这个问题来解决 npm 关于环境变量的细节在 npm-scripts 中传递环境变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM