我希望有一个请求请求启动一个构建,并且该构建必须成功才能允许合并到目标分支中。
我拥有master和development分支,并从development创建功能分支。工作完成,然后启动拉取请求以合并回develop。
我创建了一个构建管道,该管道在手动运行时可以成功完成。
在分支机构的分支策略中,我指定必须成功运行并完成构建。
现在,当我创建请求请求时,它说,为了批准请求请求,必须运行该构建,但不能运行该构建。我究竟做错了什么?
这是一个c#.net框架应用程序。
我应该将yaml保存在dev分支或master中吗?那部分使我感到困惑。触发器正确吗?
这是我对构建管道的看法:
trigger:
- develop
pool:
vmImage: 'windows-latest'
name: '1.0.1.$(Rev:r)'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- checkout: git://OvaFlow/Utilities@develop
- task: NuGetToolInstaller@0
displayName: 'Use NuGet 4.4.1'
inputs:
versionSpec: 4.4.1
- task: VersionAssemblies@2
inputs:
Path: '$(Build.SourcesDirectory)'
VersionNumber: '$(Build.BuildNumber)'
InjectVersion: true
FilenamePattern: 'AssemblyInfo.*'
OutputVersion: 'OutputedVersion'
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: '$(Build.SourcesDirectory)/Utilities/packages.config'
feedsToUse: config
nugetConfigPath: '$(Build.SourcesDirectory)/NuGet.config'
restoreDirectory: '$(Build.SourcesDirectory)/packages'
- task: NuGetCommand@2
displayName: 'NuGet restore'
inputs:
restoreSolution: '$(Build.SourcesDirectory)/UtilitiesTests/packages.config'
feedsToUse: config
nugetConfigPath: '$(Build.SourcesDirectory)/NuGet.config'
restoreDirectory: '$(Build.SourcesDirectory)/packages'
- task: VSBuild@1
displayName: 'Build solution **\*.sln'
inputs:
solution: '$(Build.SourcesDirectory)/Utilities.sln'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
- task: VSTest@2
displayName: 'VsTest - testAssemblies'
inputs:
testAssemblyVer2: |
**\$(BuildConfiguration)\*test*.dll
!**\obj\**
codeCoverageEnabled: true
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
continueOnError: true
- task: PublishSymbols@2
displayName: 'Publish symbols path'
inputs:
SearchPattern: '**\bin\**\*.pdb'
PublishSymbols: false
continueOnError: true
- task: CopyFiles@2
displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
inputs:
SourceFolder: '$(system.defaultworkingdirectory)'
Contents: '**\bin\$(BuildConfiguration)\**'
TargetFolder: '$(build.artifactstagingdirectory)'
condition: succeededOrFailed()
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
condition: succeededOrFailed()
答案 0 :(得分:1)
我应该将yaml保存在dev分支或master中吗?那部分使我感到困惑。触发器正确吗?
答案是肯定的!实际上,您已经找到了答案。
我们从Build validation获悉:
设置一个策略,要求更改拉取请求才能成功构建 在完成拉取请求之前,先使用受保护的分支。 构建策略可减少中断并保持测试结果通过。建立 即使您正在使用持续的集成(CI),策略也会有所帮助 开发部门以尽早发现问题。
因此,用于要保护的分支的构建验证应将.yml
保存在设置构建策略的分支中。
作为测试,如果我将.yml
文件设置在 Test 分支下,然后拉出对dev
分支的请求,则构建不会自动触发:>
然后,我使用新的构建管道将.yml
文件移至dev
分支,它可以正常工作:
希望这会有所帮助。
答案 1 :(得分:0)