【发布时间】:2017-08-02 07:10:34
【问题描述】:
我想设置一个简单的存储库,其中包含来自不同项目的输出,在 Travis CI 上编译。
我想不通的是如何从 Travis 控制台安全地推送到存储库的最简单方法。如果有两个项目同时在构建,并且恰好同时推送,那么其中一个自然会失败并出现 non-updated refs 错误。
由于每次提交中的路径都保证是唯一的([项目名称]/[提交 id]),因此我能想到的最好的脚本是这样的:
while $(git push) not ok {
git pull --rebase
}
你能想出更好的办法吗?
【问题讨论】:
-
您是否将生成的工件推送到 git 存储库?
-
@Code-Apprentice:是的,就是这样。
-
您将需要处理这个问题。即使在那次拉动之后,另一个并发作业可能已经开始了它的推送并再次弄乱了你的时间线。换句话说,您将需要一个稍微智能的脚本来检测情况,执行拉取和变基/合并操作,然后重试推送,如果需要再次处理情况。
-
但是,如果它们是完全独立的,为什么不每个工件只有一个存储库?
-
@LasseV.Karlsen:这将需要更多部署密钥,更难维护/更改等。对于简单的“在此处下载每个项目的当前快照”类型的网站来说太麻烦了。跨度>