gpt4 book ai didi

xcode - 如何让 Jenkins 推送到 GitHub 但不触发推送构建

转载 作者:太空狗 更新时间:2023-10-29 14:15:26 24 4
gpt4 key购买 nike

设置

我已经设置了一台 Mac mini,Jenkins 从 GitHub 上 pull 下一个存储库并执行 Xcode 构建。因为 mini 被防火墙隔离,所以我每 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 pull 然后推送的脚本,如下所示:

#!/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 下次比较哈希时,它不会构建,除非自从它 promise 增加版本号以来发生了变化。

感谢所有帮助。

最佳答案

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

关于xcode - 如何让 Jenkins 推送到 GitHub 但不触发推送构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12285596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com