簡體   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