我有一个哈德森构建服务器.源代码由git存储库管理.对于每个构建,都会检出并编译最新版本.现在我想告诉hudson不要使用最新版本,而是使用旧版本的代码(由我指定).
在哈德森,我有两个可以设置的参数.第一个"存储库名称",默认值为"origin",第二个refspec
为value +refs/heads/*:refs/remotes/origin/*
.我尝试了类似origin/[commitid]
或类似的东西+refs/heads/*:refs/remotes/origin/[commitid]
.但没有任何工作按预期.
我想我必须使用参数化作业,以便我可以将提交作为参数提供给作业.
我如何告诉hudson使用特定的提交而不是最新的提交?
我只想更清楚地回答这个问题.如何使您的工作一步一步检查特定的提交:
使用名称将字符串参数添加到作业中,让它COMMIT
在我的示例中.
选择Git作为SCM(由Jenkins Git插件提供).
在Git SCM属性中设置您的repo属性.
在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)
请注意,在SCM签出之前还有其他方法可以设置环境变量,即使用EnvInject插件中的Prepare environment for the run
步骤(您甚至可以使用Groovy).
此外,如果您没有看到我正在谈论的选项或它们不起作用,请确保您有一个新版本的Git插件在我的情况下它是2.2.0.
您可以使用jenkins-git-plugin的branch参数来定义特定的提交ID.
然后Jenkins只会检查该提交而不是分支的负责人.
就像文档说的那样:
将您的提交ID输入到"要构建的分支"设置.