在Azure管道中的阶段之间传递变量?

ff29svar  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(119)

我正在尝试为我的项目设置一个管道,以创建预发布并自动将其部署到CDN。CDN部署是一个单独的模板,我们可以重用它,并需要一些参数,如packageVersion。我想在早期阶段自动拾取packageVersion并将其传递到CDN部署模板,因此我们不必执行任何手动步骤。
我的管道看起来如下:

stages:
  # Run build stage on Azure Agent
  - stage: Build
    dependsOn:
      - ResolveDependenciesNPM
    pool:
      vmImage: 'ubuntu-latest'
    jobs:
      - job: Build
        steps:
          # tasks for npm install etc

          - task: CmdLine@2
            displayName: 'Update pkgversion variable'
            name: packageversion
            inputs:
              script: |
                PACKAGE_VERSION=$(node -p -e "require('./package.json').version")
                echo "##vso[task.setvariable variable=pkgversion;isOutput=true]$PACKAGE_VERSION"
                cat package.json
                echo ""
                echo "[PRERELEASE VERSION]:"
                echo "$PACKAGE_VERSION"
                echo ""

          # tasks for code validation, publish, bundle, etc

  - template: path/to/deploy/template.yml@global-templates
    parameters:
      dependsOn: 
        - Build
      template: global-templates
      packageVersion: "$[stageDependencies.Build.Build.outputs['packageversion.pkgversion']]"
      # also tried:
      # packageVersion: ${{ pkgversion }}
      # packageVersion: ${{ variables.pkgversion }}
      # packageVersion: $(pkgversion)
      # packageVersion: $(variables.pkgversion)

字符串
但是,当我将pkgversion变量作为参数传递时,我似乎找不到正确的方法来使其正确求值。如何将pkgversion变量作为参数传递给CDN部署模板?

zz2j4svz

zz2j4svz1#

试试一个对我有效的“技巧”:
1.声明同一文件中的第二个阶段(只传递作业作为模板)
1.在第二阶段添加变量,例如

variables:
   packageVersionVar: "$[stageDependencies.Build.Build.outputs['packageversion.pkgversion']]"

字符串
1.将变量$(packageVersionVar)作为值传递给packageVersion参数

相关问题