我们 Jenkins 中无效的对象名称 master~1 导致无限版本冲突
invalid object name master~1 in our Jenkins is causing infinite version bump
我们没有对 Jenkinsfile 或 Fastfile 进行任何更改,但是突然间我们在日志中看到了这一点。
invalid object name 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
在同事的帮助下并向 Liam Nichols 大声疾呼,我们意识到有人将我们的 Jenkins 配置切换为 浅层克隆,这导致布尔检查 return true
当它不应该的时候,即我们一旦这样做:
HEAD~1
它导致以下错误被return编辑到它的下一行。
它产生了一个错误,因为对于浅克隆,之前的提交不是克隆的一部分。这使得 HEAD~1
未定义。因此错误:
invalid object name 'master~1'
这导致 should_bump_version
函数错误地 return true
。显然 Jenkins 会在每次提交时运行,所以我们陷入了无限循环。
我们通过在 Jenkins 配置中将浅克隆深度设置为 5 来避免这种情况。我们最初更改此设置的原因是某些回购的 git 克隆很大,这样做是为了节省一些大小。
我们没有对 Jenkinsfile 或 Fastfile 进行任何更改,但是突然间我们在日志中看到了这一点。
invalid object name 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
在同事的帮助下并向 Liam Nichols 大声疾呼,我们意识到有人将我们的 Jenkins 配置切换为 浅层克隆,这导致布尔检查 return true
当它不应该的时候,即我们一旦这样做:
HEAD~1
它导致以下错误被return编辑到它的下一行。
它产生了一个错误,因为对于浅克隆,之前的提交不是克隆的一部分。这使得 HEAD~1
未定义。因此错误:
invalid object name 'master~1'
这导致 should_bump_version
函数错误地 return true
。显然 Jenkins 会在每次提交时运行,所以我们陷入了无限循环。
我们通过在 Jenkins 配置中将浅克隆深度设置为 5 来避免这种情况。我们最初更改此设置的原因是某些回购的 git 克隆很大,这样做是为了节省一些大小。