我們沒有更改 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
uj5u.com熱心網友回復:
在同事的幫助下并向Liam Nichols大喊大叫,我們意識到有人將我們的 Jenkins 配置切換為淺克隆,這導致布爾檢查true在不應該回傳時回傳,即在我們這樣做時:
HEAD~1
它導致以下錯誤回傳到其下一行。
它產生了一個錯誤,因為對于淺克隆,之前的提交不是克隆的一部分。這使得HEAD~1未定義。因此錯誤:
無效的物件名稱“master~1”
這導致should_bump_version函式錯誤地回傳true. 顯然 Jenkins 在每次提交時都會運行,所以我們陷入了無限回圈。
我們通過在 Jenkins 配置中將淺克隆深度設定為 5 來避免這種情況。我們最初更改此設定的原因是某些 repo 的 git clone 很大,這樣做是為了節省一些大小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/388722.html
