gpt4 book ai didi

build - 在构建结束时将数据提交到 Mercurial

转载 作者:行者123 更新时间:2023-12-02 12:55:24 27 4
gpt4 key购买 nike

我有一个由 Jenkins 触发的构建脚本。首先 Jenkins 将从存储库 (Bitbucket) 获取最新版本,然后启动构建脚本。现在,如果构建脚本以“发布”模式启动,脚本将对某些文件进行更改(以跟踪版本号和构建日期,并在存储库上创建标签)这些更改需要被推送回远程存储库。

我该如何实现这个?构建需要几分钟,因此如果有人在构建期间推送到远程存储库,那么推送将会失败,因为首先需要 merge 。如果不是这种情况, merge 将失败,因为没有任何内容可 merge ...

最佳答案

考虑让 Jenkins 在自己的命名分支中进行提交。这有很多优点 - 最大的优点是 Jenkins 永远不必担心其他人将更改推送到 release 分支 - 只有 Jenkins 会担心。您的 Jenkins 构建脚本可能如下所示:

hg clone --updaterev release http://path/to/repo
hg merge default || true # merge the latest from master
...build here...
hg commit -m "Auto commit from Jenkins for build $BUILDNUMBER" || true
hg tag build_$BUILDNUMBER
hg push

通过这样的设置,您将获得一些优势:

  • 失败的构建不会创建新的提交
  • Jenkins 的插入永远会成功
  • Jenkins 的标签提交位于“release”分支中,但仍然可以从默认分支访问

请注意|| true 告诉 Jenkins 不要在 merge 的非零退出代码上失败构建(如果没有要 merge 的内容)并且没有要提交的内容。

您不必每次都克隆新的,只需 hg pull ; hg update -C release 但对于合理大小的存储库,我喜欢从有保证的干净状态开始。

关于build - 在构建结束时将数据提交到 Mercurial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19561949/

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