[英]Trigger Jenkins job due to a Azure git repo pull request
我已阅读 此页面中的文档,并且可以看到有一个选项可以“在创建拉取请求时触发构建”。 我做了以下事情:
在 Azure DevOps现在,每当我发出拉取请求时,确实会触发构建,但我的问题是:如何克隆拉取请求提交以便构建检查拉取请求是否应该完成?
如果您愿意,还有一个问题:我可以在我的“构建触发器”部分中看到这些复选框:
这些有什么用? 因为据我所知,只要在 Git 存储库中创建新的提交/拉取请求,只有“轮询 SCM”复选框才会导致构建运行。
使用自由式工作,我可以通过以下方式完成这项工作:
+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*
**
,以便跟踪和构建pull/*
分支。问题是如何在流水线作业中进行这项工作。
检查 Jenkins Pipeline 作业中的拉取请求提交。 您可以在结帐步骤中添加 refspec,如下所示:
steps {
checkout([$class: 'GitSCM',
extensions: [[$class: 'LocalBranch']],
userRemoteConfigs: [[refspec:"+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*",credentialsId: '<credentialsId>', url: "<git repo url>"]]])
//
}
注意: credentialsId
来自Jenkins --> Credentials ,您可以在其中为 azure devops 存储库添加凭据。 见这里。
请参见下面的示例结果:
对于Build Triggers
部分中的Poll SCM
。 如果您启用了Poll SCM
,jenkin 服务器将以固定的时间间隔轮询 SCM 以检查是否进行了更改并在推送新提交时构建项目。
不推荐轮询 SCM 选项。 因为它对 CVS 来说是一项昂贵的操作。 它通常在“推送”触发器不起作用时使用(例如,repo 在本地源代码控制服务器中)
请注意,这对于 CVS 来说将是一项昂贵的操作,因为每次轮询都需要 Jenkins 扫描整个工作区并与服务器进行验证。 考虑设置“推送”触发器以避免这种开销
好吧,在搞砸了很多时间之后,我发现了以下结论,这对我来说并不完全有意义:
首先,在使用这些选项时会检查不同的行为。 假设Jenkins的配置如下:
管道配置
feature
分支配置为“要构建的分支”詹金斯文件
skipDefaultCheckout()
checkout(... branches: [[ name: '**' ]], userRemoteConfigs: [[refspec:"+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*" ]])
(忽略不相关的配置) 现在,创建一个新的拉取请求,观察到的行为是:
使用通用构建:默认签出将签出feature
分支。 在声明multiple candidate revisions
后, checkout
出步骤可能(并且通常会)签出旧的拉取请求提交
使用触发器 Git 构建:默认签出失败,因为它不知道提交 object,因为未在配置页面中配置 refspec。 配置完成后,默认签出会检查最新的拉取请求提交。
所以基本上我们得到以下结论:
为此,请执行以下步骤:
Azure DevOps 服务挂钩
配置“拉取请求合并尝试”类型的 Jenkins 服务挂钩,并将其设置为“触发 Git 构建”
管道配置页面
Poll SCM
选项+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*
和branches: [[name: '**']]
詹金斯文件
skipDefaultCheckout
选项,并使用上面写的带有refspec
的checkout
步骤:checkout([$class: 'GitSCM', branches: [[name: '**']], , userRemoteConfigs: [[name: 'origin', refspec: '+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*', url: '<git_url>']]]))
如果有人对这些事情有进一步的解释,那么欢迎您!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.