繁体   English   中英

Azure 中管道上的 CI 触发器

[英]CI Triggers on Pipelines in Azure

每当有人在我们的仓库中提交或推送某些内容到我们的 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)

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

trigger:
  - master

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

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

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

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

trigger:
 - master

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

在此处输入图像描述

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

在此处输入图像描述

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM