【问题标题】:invalid object name master~1 in our Jenkins is causing infinite version bump我们的 Jenkins 中的无效对象名称 master~1 导致无限版本碰撞
【发布时间】:2022-01-19 20:51:10
【问题描述】:

我们没有更改 Jenkinsfile 或 Fastfile 中的任何内容,但是突然我们在日志中看到了这一点。

无效的对象名master~1

它会导致无限的自动碰撞。

我们在 Fastffile 中使用这个函数来检查我们是否应该升级版本。

def should_bump_version
    last_changes = `git diff podspec HEAD~1`
    !last_changes.lines.any? { | line | line.start_with?("+") and line.include?("s.version") }
end

【问题讨论】:

  • 您愿意分享您的 Jenkins 文件吗?我们想要设置 Jenkins,但真的不清楚如何使用它或我们可以用它做什么。我们只有一个空的 Jenkins 文件,我一直在尝试找到具有自动版本控制和测试后推送之类的东西。
  • @Elijah 抱歉,出于安全原因,我无法这样做。话虽如此,我建议您尽可能使用 Fastlane。它让你的生活更轻松
  • @Elijah 查看来自here 的 GitHub 存储库。这些是您可以用来激发灵感的开源项目

标签: git jenkins git-clone fastlane shallow-clone


【解决方案1】:

在同事的帮助和对Liam Nichols 大喊大叫的情况下,我们意识到有人将我们的 Jenkins 配置切换为 浅克隆,这导致布尔检查在不应该返回 true 时返回只要我们这样做:

HEAD~1

它会导致以下错误返回到下一行。

它产生了一个错误,因为使用浅克隆,以前的提交不是克隆的一部分。这使HEAD~1 未定义。因此错误:

无效的对象名称'master~1'

这导致should_bump_version 函数错误地返回true。显然 Jenkins 在每次提交时都会运行,所以我们处于无限循环中。

我们通过在 Jenkins 配置中将浅克隆深度设置为 5 来避免这种情况。我们最初更改它的原因是某些 repo 的 git clone 很大,这样做是为了节省一些大小。

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多