git - 由于 Azure git repo 拉取请求而触发 Jenkins 作业
问题描述
我已阅读此页面中的文档,并且可以看到有一个选项可以“在创建拉取请求时触发构建”。我做了以下事情:
在 Azure DevOps 中- 服务挂钩 -> Jenkins 订阅 -> 尝试合并请求
- 触发通用构建 -> 指定凭据和特定构建。
- 创建管道作业并选中“轮询 SCM”复选框
现在,每当我发出拉取请求时,确实会触发构建,但我的问题是:如何克隆拉取请求提交以便构建检查拉取请求是否应该完成?
如果您愿意,还有一个问题:我可以在我的“构建触发器”部分中看到这些复选框:
- 在将更改推送到 TFS 拉取请求时构建
- 将更改推送到 TFS/Team Services 时构建
这些有什么用?因为据我所知,只要在 Git 存储库中创建新的提交/拉取请求,只有“轮询 SCM”复选框才会导致构建运行。
编辑
使用自由式工作,我可以通过以下方式完成这项工作:
- 在 SCM 配置中设置 refspecs,如下所示:
+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 存储库添加凭据。见这里。
请参见下面的示例结果:
对于Poll SCM
在Build Triggers
部分。如果启用Poll SCM
,jenkin 服务器将以固定的时间间隔轮询 SCM 以检查是否进行了更改,如果推送了新的提交,则构建项目。
不推荐轮询 SCM 选项。因为它对 CVS 来说是一项昂贵的操作。它通常在“推送”触发器不起作用时使用(例如,repo 在本地源代码控制服务器中)
请注意,这对于 CVS 来说将是一项昂贵的操作,因为每次轮询都需要 Jenkins 扫描整个工作区并与服务器进行验证。考虑设置“推送”触发器以避免这种开销
推荐阅读
- python - 从列中删除所有值并将其设为空白
- python - 如何在 Anaconda 中安装 freqrade?
- accessibility - 如何让屏幕阅读器读取文档加载和文档加载?
- c# - SemaphoreSlim 使用限制
- javascript - 如何在 react-google-maps/api 库中使用 containsLocation
- amazon-web-services - AWS EC2 退役
- javascript - 使用 JavaScript 将逻辑回归拟合到数据集并获得 beta 系数?
- nginx - 如何代理传递在两个不同端口上运行的两个应用程序
- c++ - 是否可以在没有 MOUSEEVENT 的情况下使用 SendInput 来调用鼠标移动?
- javascript - 我如何从选择中获取输入字段中的数据价格?