当且仅当分支等于 yaml 中的 master 时,Azure 管道才会运行特定任务

The*_*is 4 automated-tests azure-devops azure-pipelines

我正在尝试更改我的 yaml 文件以添加更多任务。这是我当前的 yaml 文件:

trigger:
  - master

pool:
  vmImage: 'Ubuntu-16.04'

steps:
  - task: Maven@3
    inputs:
      mavenPomFile: 'pom.xml'
      # according to: https://github.com/MicrosoftDocs/vsts-docs/issues/3845, 
      # maven options should go to goals instead, as mavenOptions is for jvm options
      mavenOptions: '-Xmx3072m'
      javaHomeOption: 'JDKVersion'
      jdkVersionOption: '1.11'
      jdkArchitectureOption: 'x64'
      publishJUnitResults: true
      testResultsFiles: '**/surefire-reports/TEST-*.xml'
      goals: 'verify -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true --batch-mode --show-version'
Run Code Online (Sandbox Code Playgroud)

我只想在运行的分支是 master 时运行一个目标。基本上在我的测试中,我创建了一个 dockerfile 并且我想将它推送到 dockerhub,但我不希望每次有人打开拉取请求时都会发生这种情况;我希望只有在 master 运行测试时才会发生这种情况。像这样的东西

if branch == master 
steps: *
Run Code Online (Sandbox Code Playgroud)

但我似乎没有在 Azure Pipelines 文档中找到有关如何执行此操作的任何内容

4c7*_*b41 9

您可以对要设置条件的任务使用以下条件:

eq(variables['Build.SourceBranch'], 'refs/heads/master')
Run Code Online (Sandbox Code Playgroud)

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml#examples


小智 6

我这样做是因为我发现以后阅读起来更容易

${{ if contains(Build.SourceBranch, 'master') }}:
  steps:
  - task: Maven@3
    inputs:
      etcetera: 'etc.'
${{ else }}:
  steps:
  - task: Some other task
Run Code Online (Sandbox Code Playgroud)