【问题标题】:How to get Jenkins to push to GitHub but not trigger a build off that push如何让 Jenkins 推送到 GitHub 但不触发构建推送
【发布时间】:2012-08-30 10:02:27
【问题描述】:

设置

我有一个 Mac mini 设置,Jenkins 从 GitHub 拉取一个 repo 并执行 Xcode 构建。由于 mini 已与 Internet 隔离开防火墙,因此我每 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 下次比较哈希值时,它不会构建,除非自提交版本号以来发生了变化。

感谢所有帮助。

【问题讨论】:

    标签: xcode git jenkins


    【解决方案1】:

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

    【讨论】:

    • 谢谢丹,你链接到的问题回答了我的问题。对于任何到达这里的人,请务必阅读该帖子上的所有 cmets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多