所有人都知道任何关于让Jenkins与Heroku很好地玩的好文章吗?
我想做什么: 1)当签入开发者分支时,想要设置一个jenkins工作来轮询私人GitHub Repo。 2)建立这个分支,确保一切都很好! 3)将私有GitHub Repo代码库推送到Heroku Repo。所以它在Heroku上进行构建和部署。
我看过一些文章,但似乎无法让完整的流程发挥作用。我试过GitHub插件& Heroku插件。我可以获得github插件来下拉和构建,但不明白如何推送到Heroku。 Heroku插件允许我部署WAR文件,但这不会正确显示应用程序。所以我需要将代码库推送到Heroku Repo,以便进行编译和部署。
谢谢, d
答案 0 :(得分:12)
我使用Jenkins推送Heroku用于我们的应用程序。我没有使用Heroku插件,我喜欢'Execute Shell'给我的控件。这是一个相当详细的答案,如果我错过了什么,一定要评论。
1)轮询私人回购:
添加jenkins服务器的回调URL(保留该页面以供日后使用)。类似的东西:
2)建立分支机构。确保设置了所有GitHub配置,因为只有在完成这些设置后,回调才会触发作业。
3)推送到Heroku。这里要考虑几件事。
heroku git:remote -a myApp git remote add heroku git@heroku.com:myApp.git
使用上面的内容创建一个Execute Shell脚本,仅用于第一次构建。
curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/disable -X POST -H "X-Api-Key: APIKEY"
不要忘记在以下之后重新开启:
curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/enable -X POST -H "X-Api-Key: APIKEY"
heroku maintenance:on --app myApp heroku maintenance:off --app myApp
将这些放在一起,Jenkins上的典型部署脚本可能如下所示:
#one off to ensure heroku remote is added to repo heroku git:remote -a myApp git remote add heroku git@heroku.com:myApp.git #disbales curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/disable -X POST -H "X-Api-Key: APIKEY" heroku maintenance:on --app myApp #push to heroku git push --force heroku master heroku run rake db:migrate --app myApp #enables curl https://heroku.newrelic.com/accounts/ACCTID/applications/APPID/ping_targets/enable -X POST -H "X-Api-Key: APIKEY" heroku maintenance:off --app myApp
答案 1 :(得分:10)
作为使用上面概述的Heroku API进行部署的替代方法,您只需将代码推送到远程Git存储库(即Heroku为您的应用定义的存储库)作为构建后操作。因此,您的工作将定义两个Git存储库 - 一个是您的Github存储库,另一个是Heroku存储库。
为Heroku存储库命名,例如' heroku'在Post-Build Actions部分中,使用Git发布者。请务必在目标远程名称字段中选择heroku名称。
根据您在Github项目上设置构建触发器的方式,当构建完成时,Jenkins会将生成的快照推送到Heroku存储库,从而实现部署。
答案 2 :(得分:1)
首先,您应该切换项目以使用ssh-key进行身份验证,并将您的公共ssh-key添加到您的heroku帐户:
heroku git:remote --ssh-git
heroku keys:add
用
git remote -v
heroku git@heroku.com:your-project.git (fetch)
heroku git@heroku.com:your-project.git (push)
您可以找出在Jenkins配置中用作存储库URL的URL。然后按照@Andy Glover(另请参阅http://thediscoblog.com/blog/2014/01/24/continuous-delivery-for-heroku-with-jenkins/)的答案中的说明配置Jenkins。
最后,为了让Jenkins能够推送到Heroku的git存储库,你应该让你的Jenkins管理员给你执行你Jenkins作业的root / jenkins用户的公共ssh密钥。通过Heroku dashboard将此公钥添加到您的Heroku帐户。如果您的构建作业成功,Jenkins将能够推送到您的Heroku帐户,从而实现部署。