使用Hudson构建特定的git提交

Ber*_*rnd 36 git hudson

我有一个哈德森构建服务器.源代码由git存储库管理.对于每个构建,都会检出并编译最新版本.现在我想告诉hudson不要使用最新版本,而是使用旧版本的代码(由我指定).

在哈德森,我有两个可以设置的参数.第一个"存储库名称",默认值为"origin",第二个refspec为value +refs/heads/*:refs/remotes/origin/*.我尝试了类似origin/[commitid]或类似的东西+refs/heads/*:refs/remotes/origin/[commitid].但没有任何工作按预期.

我想我必须使用参数化作业,以便我可以将提交作为参数提供给作业.

我如何告诉hudson使用特定的提交而不是最新的提交?

izz*_*kil 57

我只想更清楚地回答这个问题.如何使您的工作一步一步检查特定的提交:

  1. 使用名称将字符串参数添加到作业中,让它COMMIT在我的示例中.
  2. 选择Git作为SCM(由Jenkins Git插件提供).
  3. 在Git SCM属性中设置您的repo属性.
  4. 在Git SCM中,在要构建类型的分支段中,${COMMIT}它是作业参数的引用,将在构建期间解析.

就是这样,启动构建并在日志中你会看到这样的东西:

Cloning the remote Git repository
Cloning repository ssh://your-repo.git
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials 
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials 
Checking out Revision af63e2102b65953316e512c0bb659578bb143a33 (detached)
Run Code Online (Sandbox Code Playgroud)

请注意,在SCM签出之前还有其他方法可以设置环境变量,即使用EnvInject插件中的Prepare environment for the run步骤(您甚至可以使用Groovy).

此外,如果您没有看到我正在谈论的选项或它们不起作用,请确保您有一个新版本的Git插件在我的情况下它是2.2.0.

  • 对于懒惰的,这也适用,而无需使用构建参数,可以简单地粘贴在提交标识为"分行打造". (2认同)

小智 9

您可以使用jenkins-git-plugin的branch参数来定义特定的提交ID.

然后Jenkins只会检查该提交而不是分支的负责人.

  • 如果单击字段旁边的小问号(?),它会显示:`...可以通过在此字段中指定该修订的SHA1哈希来检出特定修订.这对我来说就像"正确的方式"去做吧". (5认同)

小智 7

就像文档说的那样:

git插件分支配置

将您的提交ID输入到"要构建的分支"设置.

  • @cauchy,此文档不在站点上,而是在您的Jenkins实例中,在作业配置中的“源代码管理”->“生成的分支”->? (2认同)

Dav*_*her 2

您可以配置 Hudson 作业来构建特定分支。然后,您可以将您希望 Hudson 在该分支上构建的任何更改推送到该分支上。