我已经安装了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比较下一次哈希时,除非自提交版本号以来一直有变化,否则它不会构建。
感谢您的帮助。
答案 0 :(得分:1)
我认为this SO question回答了你的问题,但我无法肯定地说,因为我们没有在轮询分支上进行构建版本增量。我也会在构建之前执行git push,这样你就不必担心在构建期间提交代码时会发生多少次合并。值得庆幸的是,如果你保持原样,你就不必担心Xcode项目合并的方式。