尝试使用来自 Azure 管道中 bash 脚本的预定义变量设置变量

时间:2021-01-11 16:52:54

标签: shell azure-devops azure-pipelines

我正在尝试使用 bash 脚本通过 bash 脚本从预定义变量设置变量。但无法成功。下面是我在 azure 管道中的任务

  resources:
  pipelines:
  - pipeline: pipeline1
  project: appcom
  source: pipeline-api
  trigger:
  branches:
  - develop
  - feat/*
  - pipeline: pipeline2
  project: appcom
  source: pipeline2-api
  trigger:
  branches:
  - develop
  - feat/*
  variables:
 - name: alias
   value: $(resources.triggeringAlias)

 stages:
 - stage: ScanImage

     jobs:
     - job: ScanImage
       pool:
         vmImage: 'ubuntu-16.04'

       steps:
       - script: echo $(alias)

       - task: Bash@3
         inputs:
         targetType: 'inline'
         script: |
         if [ "$(alias)" == "pipeline1" ]; then
           echo ("##vso[task.setvariable variable=apiname]$(resources.pipeline.pipeline1.pipelineName)")
           echo ("##vso[task.setvariable variable=dockertag]$(resources.pipeline.pipeline1.sourceCommit) | cut -c -7")
           echo ("##vso[task.setvariable variable=helmpath]P02565Mallorca/pipeline1-api")
         elif [ "$(alias)" == "pipeline2" ]; then
           echo ("##vso[task.setvariable variable=apiname]$(resources.pipeline.pipeline2.pipelineName)")
           echo ("##vso[task.setvariable variable=dockertag]$(resources.pipeline.pipeline2.sourceCommit) | cut -c -7")
           echo ("##vso[task.setvariable variable=helmpath]P02565Mallorca/pipeline2")
           fi
       - script: echo $(dockertag)
       - script: echo $(helmpath)
       - script: echo $(apiname)

它给我错误 ##[error]Bash 以代码 '2 退出

1 个答案:

答案 0 :(得分:0)

参考此文档:Set variables in scripts,在 yaml 下应按预期工作。

resources:
  pipelines:
  - pipeline: pipeline1
    project: appcom
    source: pipeline-api
    trigger:
      branches:
      - develop
      - feat/*
  - pipeline: pipeline2
    project: appcom
    source: pipeline2-api
    trigger:
      branches:
      - develop
      - feat/*
    
variables:
- name: alias
  value: $(resources.triggeringAlias)

stages:
- stage: ScanImage
  jobs:
  - job: ScanImage
    pool:
      vmImage: 'ubuntu-16.04'
    steps:
    - script: echo $(alias)

    - task: Bash@3
      inputs:
        targetType: 'inline'
        script: |
          if [ "$(alias)" == "pipeline1" ]; then
            echo "##vso[task.setvariable variable=apiname]$(resources.pipeline.pipeline1.pipelineName)"
            echo "##vso[task.setvariable variable=dockertag]$(resources.pipeline.pipeline1.sourceCommit) | cut -c -7"
            echo "##vso[task.setvariable variable=helmpath]P02565Mallorca/pipeline1-api"
          elif [ "$(alias)" = "pipeline2" ]; then
            echo "##vso[task.setvariable variable=apiname]$(resources.pipeline.pipeline2.pipelineName)"
            echo "##vso[task.setvariable variable=dockertag]$(resources.pipeline.pipeline2.sourceCommit) | cut -c -7"
            echo "##vso[task.setvariable variable=helmpath]P02565Mallorca/pipeline2-api"
          fi

    - script: echo $(dockertag)
    - script: echo $(helmpath)
    - script: echo $(apiname)

请参阅:Resources: pipelines 了解更多详情。