0

我们没有更改 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

4

1 回答 1

0

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

HEAD~1

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

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

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

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

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

于 2021-12-16T19:23:41.230 回答