我正在使用哈德森来自动部署我的Rails应用程序到heroku。 在我的主要构build工作中,我从一个Git仓库(在同一台机器上使用gitosis进行托pipe)中抽取主分支,其中包含以下内容:
URL of repository: /home/git/repositories/my_app.git Name of repository: origin Refspec: +refs/heads/master:refs/remotes/origin/master Branches to build: master
然后,假设所有的testing都通过了,我想启动一个新的部署到Heroku。
我不知道如何让这个部署版本检出这个版本正在使用的特定版本。 我知道有一个参数化的触发器插件,可以让我通过这个版本号,但我不知道如何告诉哈德森在部署版本上签出这个特定的版本。
我很确定这只是与我有限的git知识有关,但在哈德森gitconfiguration的有哪些选项来检出特定的修订?
否则,当构build发生时,我可能会发生许多提交,并且在启动部署构build时,该构build只会检查分支的HEAD,这可能与触发的代码不同这个构build。
我不完全明白为什么我在哈德森有一个refspec,然后指定一个分支来build立,我认为这是同样的事情。 可以refspec以某种方式指定修订号码? 如果通过参数化的触发器插件传递,这将如何引用?
(我从来没有使用过这个插件,但是别人推荐这个插件作为一种方式来把一个新的版本传递给我,如果还有另外一种方式的话)
我认为, 如果你的testing在失败时返回一个非零的退出,你可以通过在哈德森中设置步骤来运行你的testing,然后再推送,来更轻松地做到这一点。 这是有效的,因为我认为一旦失败(非零退出状态),哈德森就会停止执行构build步骤链。
看到这里的git解释。
顺便说一句,你将可部署的构件存储在git中,还是在部署前重build应用程序? 否则,让你的第一个工作将工件推送到一个存储库(可能与源代码不同,我们在文件系统上有一个指定的空间),第二个工作将它从存储库中取出并部署它。