如何让Jenkins推送到GitHub,但不会触发推送

时间:2012-09-05 16:11:37

标签: xcode git jenkins

设置

我已经安装了Mac mini,Jenkins从GitHub下载了一个回购并执行Xcode构建。因为迷你防火墙是从互联网上防火的,所以我每隔15分钟就会对GitHub进行一次调查。

在开始Xcode构建之前,我让Jenkins执行以下脚本来破坏我的项目构建号并将结果提交到repo:

#!/bin/sh

agvtool bump -all
/usr/local/git/bin/git commit -a -m "This is Jenkins, updating your build numbers, sir."

在构建之后我设置了一个后构建操作来运行另一个脚本,该脚本从GitHub拉出然后推送,如下所示:

#!/bin/sh

/usr/local/git/bin/git pull origin develop
/usr/local/git/bin/git push origin develop

问题

因为Jenkins每次运行都会执行提交并推送到GitHub,下一次轮询会找到上次推送的更改,无论是否有其他实际更改,都会创建一个新版本。

问题

我的设置中有什么东西让我不同吗?我希望Jenkins更新我的Xcode目标的内部版本号并提交并将结果推送到GitHub。这种配置显然可以实现这一点,但是每15分钟就会产生一次构建的副作用,而不是每15分钟构建一次。

Jenkins正在咨询lastSuccessfulBuild的SHA1以确定是否有更改,但是在我提交之前它正在执行此操作。有没有办法将当前版本的SHA1设置为由版本号凸起的提交产生的​​哈希?像这样:

#!/bin/sh

agvtool bump -all
/usr/local/git/bin/git commit -a -m "This is Jenkins, updating your build numbers, sir."
NEW_SHA=$(/usr/local/git/bin/git rev-parse HEAD)
# Some awesome Jenkins-fu to set the SHA1 of the current build to NEW_SHA

这种方式,当Jenkins比较下一次哈希时,除非自提交版本号以来一直有变化,否则它不会构建。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为this SO question回答了你的问题,但我无法肯定地说,因为我们没有在轮询分支上进行构建版本增量。我也会在构建之前执行git push,这样你就不必担心在构建期间提交代码时会发生多少次合并。值得庆幸的是,如果你保持原样,你就不必担心Xcode项目合并的方式。