【问题标题】:CI Triggers on Pipelines in AzureAzure 中管道上的 CI 触发器
【发布时间】:2021-07-14 11:46:36
【问题描述】:

每次有人提交或推送某些内容到我们的 repo 上的分支时,管道都会触发真正的问题,遵循 Microsoft Doc:https://docs.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git?view=azure-devops&tabs=yaml#ci-triggers

当有人对本地分支进行提交时,即使我对分支进行了通配符,在我们拥有管道的每个分支上添加排除功能仍然会运行。

有没有人能够让这个工作,管道应该只在提交到 Master 时才运行。

这是我的代码:

trigger:
  branches:
    include:
    - master
    exclude:
    - CICV/*
    - An/*
    - Prod/*
    - Test/*
    - Dev/*
    - dev/*
    - IN/*
    - id/*
    - St/*
    - tr/*
      
    
pool:
  vmImage: 'windows-latest'
  demands: npm

variables: 
  System.Debug: false
  azureSubscription: 'RunPipelinesInProd'
  RG: 'VALUE'
  Location: UK South 
  containername: 'private'
  appconnectionname: 'RunPipelinesInProd'

jobs:

- job: job1
  displayName: Create And Publish Artifact
  pool:
    vmImage: vs2017-win2016
  steps:
 
  - task: UseDotNet@2
    displayName: Use .Net Core 3.1.x SDK
    inputs:
      packageType: 'sdk'
      version: '3.1.x'

  - task: DotNetCoreCLI@2
    displayName: dotnet restore
    inputs:
      command: restore
      projects: 'Website.csproj'

  - task: Npm@1
    displayName: 'npm install'
    inputs:
      workingDir: ClientApp
      verbose: false   
  
  - task: Npm@1
    displayName: 'npm run build'
    inputs:
      command: 'custom'
      workingDir: ClientApp
      customCommand: 'build'

  - task: DotNetCoreCLI@2
    displayName: dotnet build
    inputs:
      projects: 'Website.csproj'
      arguments: '--configuration Release'
  
  - task: DotNetCoreCLI@2
    displayName: dotnet Test
    inputs:
     command: test
     projects: 'UnitTests/UnitTests.csproj'
     arguments: '--configuration Release'
      
  - task: DotNetCoreCLI@2
    displayName: dotnet publish
    inputs:
      command: publish
      projects: 'Website.csproj'
      arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
      zipAfterPublish: true
      modifyOutputPath: false
      
  - task: PublishPipelineArtifact@1
    displayName: Publish Pipeline Artifact
    inputs:
      targetPath: '$(Build.ArtifactStagingDirectory)'
      artifact: 'Website'
      publishLocation: 'pipeline'

- job: job2
  displayName: Create Web App 
  dependsOn: job1   
  steps:

 # Download Artifact File
  - download: none
  - task: DownloadPipelineArtifact@2
    displayName: 'Download Build Artifacts'
    inputs:
      patterns: '**/*.zip'
      path: '$(Build.ArtifactStagingDirectory)'

  # deploy to Azure Web App 
  - task: AzureWebApp@1
    displayName: 'Azure Web App Deploy: nsclassroom-dgyn27h2dfoyo'
    inputs:
      package: $(Build.ArtifactStagingDirectory)/**/*.zip 
      azureSubscription: $(azureSubscription)
      ConnectedServiceName: $(appconnectionname)
      appName: 'VALUE'
      ResourceGroupName: $(RG)

 

【问题讨论】:

    标签: azure azure-devops continuous-integration yaml azure-pipelines


    【解决方案1】:

    您不需要像您概述的那样复杂的触发器来触发推送到 master 的管道。以下简单的触发器配置应该可以工作:

    trigger:
      - master
    

    如果include 部分中有任何内容,则只有推送到这些分支才会触发构建。如果您同时指定 includeexclude 部分,那么它将尝试从 include 集合中排除一些子集 - 就像在文档中的示例中一样:

    # specific branch build
    trigger:
      branches:
        include:
        - master
        - releases/*
        exclude:
        - releases/old*
    

    如果管道仍然由推送到其他分支触发,那么它必须是触发它的其他东西。

    【讨论】:

      【解决方案2】:

      正如@yan-sklyraneko 在answer 中提到的那样,您的触发器配置应该很简单

      trigger:
       - master
      

      但是,您可以在 GUI 中覆盖 YAML 文件中的触发器。导航到您的管道并单击Edit,然后单击如下所示的省略号并选择Triggers

      在该屏幕上检查 Override the YAML continuous integration trigger from here 框是否未选中

      【讨论】:

        【解决方案3】:

        我最终解决了这个问题,我最终通过 Azure Dev Ops Portal 进行管理。

        如果您尝试使用 YAML 来管理它似乎是行不通的,但如果您通过答案 2 中概述的 Web 界面进行操作,那么行为符合预期。我认为 Microsoft YAML 部分因此而损坏,但我已经与 Microsoft 提出了三个问题,我不希望添加另一个问题来关注和标记。

        【讨论】:

        • 很高兴听到您解决了您的问题!您可以accept it as an answer,以便有相关问题的人可以从中受益:)
        猜你喜欢
        • 1970-01-01
        • 2020-04-13
        • 1970-01-01
        • 1970-01-01
        • 2020-04-24
        • 1970-01-01
        • 2022-08-17
        • 2019-11-18
        • 1970-01-01
        相关资源
        最近更新 更多