![](/img/trans.png)
[英]Creating CI and CD pipelines for Azure data factory with or without triggers
[英]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
部分中有任何内容,那么只有推送到这些分支才会触发构建。 如果您同时指定include
和exclude
部分,那么它将尝试从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.