首页 > 解决方案 > 由于 Azure git repo 拉取请求而触发 Jenkins 作业

问题描述

我已阅读此页面中的文档,并且可以看到有一个选项可以“在创建拉取请求时触发构建”。我做了以下事情:

在 Azure DevOps 中
  1. 服务挂钩 -> Jenkins 订阅 -> 尝试合并请求
  2. 触发通用构建 -> 指定凭据和特定构建。
在詹金斯工作
  1. 创建管道作业并选中“轮询 SCM”复选框

现在,每当我发出拉取请求时,确实会触发构建,但我的问题是:如何克隆拉取请求提交以便构建检查拉取请求是否应该完成?

如果您愿意,还有一个问题:我可以在我的“构建触发器”部分中看到这些复选框:

这些有什么用?因为据我所知,只要在 Git 存储库中创建新的提交/拉取请求,只有“轮询 SCM”复选框才会导致构建运行。

编辑

使用自由式工作,我可以通过以下方式完成这项工作:

  1. 在 SCM 配置中设置 refspecs,如下所示:
+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*
  1. 将“要跟踪**的分支”设置为 ,以便pull/*跟踪和构建分支。

问题是如何在流水线作业中进行这项工作。

标签: gitjenkinstfsazure-devops

解决方案


检查 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 SCMBuild Triggers部分。如果启用Poll SCM,jenkin 服务器将以固定的时间间隔轮询 SCM 以检查是否进行了更改,如果推送了新的提交,则构建项目。

不推荐轮询 SCM 选项。因为它对 CVS 来说是一项昂贵的操作。它通常在“推送”触发器不起作用时使用(例如,repo 在本地源代码控制服务器中)

请注意,这对于 CVS 来说将是一项昂贵的操作,因为每次轮询都需要 Jenkins 扫描整个工作区并与服务器进行验证。考虑设置“推送”触发器以避免这种开销


推荐阅读