【发布时间】:2020-08-07 09:56:00
【问题描述】:
我对如何使用拉取请求设置此工作流程有点困惑。
我有一个现有的多阶段 YAML 构建管道,总而言之,它执行以下操作:
- 从任何分支运行构建
- 如果源分支是 feature/* 或 release/* 并且构建成功,则向开发环境/资源运行部署作业
- 如果源分支是 release/*,则对 UAT 环境/资源运行部署作业
- 如果源分支是主分支,则将部署作业运行到实时/生产环境/资源
所以在 CI 的背后,这个工作流似乎工作正常,正确的阶段根据分支等运行。
然后我决定分支策略和拉取请求可能是代码质量的更好选择,而不是让任何主要分支直接提交,所以我开始重新设计 YAML 以进行帐户 - 主要是通过删除触发器来
trigger: none
这现在可以根据分支策略正常工作,只有在打开开发或主控的拉取请求时才会启动构建。
然而,这就是我对它应该如何工作以及我认为它是如何工作的有点困惑的地方......
首先 - 是否不可能在拉取请求的后面触发多阶段 YAML(使用 Azure Repos)?在我的脑海中,我想做的就是引入拉取请求和分支策略,但保持多阶段部署到环境中。 但是,部署作业阶段现在都被跳过了——但这可能与我在 YAML 中的条件有关,如下所示:
- stage: 'Dev'
displayName: 'Development Deployment'
dependsOn: 'Build'
condition: |
and
(
succeeded()
eq(variables['Build.Reason'], 'PullRequest'),
ne(variables['System.PullRequest.PullRequestId'], 'Null'),
or
(
startsWith(variables['Build.SourceBranch'], 'refs/heads/feature/'),
startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')
)
)
jobs:
- deployment: Deploy
pool:
name: 'Development Server Agent Pool'
variables:
Parameters.WebsitePhysicalPath: '%SystemDrive%\inetpub\wwwroot\App'
Parameters.VirtualPathForApplication: ''
Parameters.VirtualApplication: ''
environment: 'Development.Resource-Name'
.....
我有什么遗漏吗? 或者我是否必须从 YAML 中删除多阶段部署并恢复使用发布管道来处理拉取请求(可能有审批门??)
提前致谢!
【问题讨论】: