2010-11-17 44 views
33

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

在哈德逊我有两个参数可以设置。第一个“储存库名称”,默认值为“原产地”,第二个refspec,值为+refs/heads/*:refs/remotes/origin/*。我尝试了一些东西,如origin/[commitid]+refs/heads/*:refs/remotes/origin/[commitid]。但没有按预期工作。

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

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

回答

2

您可以配置您的Hudson作业来构建特定分支。然后你可以推动你希望哈德森建立在该分支上的任何变化。

4

在“前步骤”尝试添加“执行shell”,并添加:

git pull 
    git checkout <commit version> 
+5

注意:这意味着GIT_COMMIT环境变量不再匹配检出的实际提交。 – Karl 2013-07-16 10:01:44

+0

你说得对,但你知道'' – 2013-07-29 09:03:47

4

一个解决办法是:

  • 设置Git的插件来构建一个特殊的“build_br”分支。
  • 重置分支build_br到预期提交
  • 推该分支build_br由詹金斯或哈德森远程回购监视器(这将是一个push --force,如在“git reset --hard and a remote repository”示出)

这样,构建分支build_br意味着构建特定的提交,并且GIT_COMMIT将被正确设置。
不应该在该特殊分支上进行开发,因为它定期重置为您需要构建的任何提交。

1

我不确定Hudson,但Jenkins的Git Plugin在“Repository browser”字段右上方有一个“Advanced ...”按钮。点击此处可以看到很多其他选项,其中之一是“检出/合并到本地分支(可选)”。它的帮助文字中说:“如果给出,检出修订版本以在此分支上构建为HEAD,请注意,这尚未经过子模块测试”,因此,似乎是您的想法。

8

您可以使用jenkins-git-plugin的分支参数来定义特定的提交ID。

詹金斯然后将只检出提交而不是分支的头部。

+0

怎么样?示例请 – 2014-03-09 11:41:29

+3

如果单击该字段旁边的小问号(?),它会说:'...可以通过在该字段中指定该修订版的SHA1哈希来检出特定修订。“这对我来说就像“正确的做法”。 – Ben 2014-06-26 19:47:48

48

我只想this答案比较清楚。 如何使你的工作检出一个特定的提交,分步实施:

  1. 添加字符串参数名称为你的工作,让它在我的例子COMMIT
  2. 选择Git作为SCM(由Jenkins Git plugin提供)。
  3. 在Git SCM属性中设置您的回购属性。
  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) 

注意,还有其他方法来设置使用Prepare environment for the run单片机结帐前的环境变量,即从EnvInject Plugin步(你甚至可以使用Groovy)。另外,如果你没有看到我正在谈论的选项,或者他们不工作,请确保你有一个新版本的Git插件。在我的情况下,它是2.2.0。

+0

感谢您的详细步骤。像魅力一样工作! – 2014-05-29 21:58:58

+0

你如何“发起构建”?当我按下“Build Now”时,只有一个分支被建立(主)。 – user239558 2015-01-27 10:04:55

+0

再次检查我的答案,我建议介绍一个参数。当作业被参数化时,用户看到BuildWithParameters表单时点击“Build”链接而不是立即开始构建。 – izzekil 2015-02-02 17:46:52

3

文档一样说:

git plugin branch configure

输入您的提交ID为 “分行打造” 设置。