[英]Jenkins - Git polling in custom workspace when checkout is skipped
[英]How to fix Jenkins job that is failing on git checkout when workspace is on network share, but not when workspace is on local drive?
我正在構建一個服務,該服務創建將連接到Jenkins服務器的動態節點。 節點將主要用於構建許多大型代碼庫,因此我想利用增量構建的優勢。 由於節點是臨時虛擬機,在工作完成后的某個時候被銷毀,因此我需要Jenkins工作區不是計算機上的本地驅動器。
我創建了一個網絡共享,並將Jenkins節點的根目錄設置為I:\\ jenkins。 當VM聯機時,我的服務將執行將我的驅動器映射到網絡共享的命令。 然后,該服務執行命令以將該服務連接到Jenkins主服務器。 當我嘗試對節點運行構建時,嘗試進行git checkout時,它始終失敗。
作業失敗后,網絡共享具有git存儲庫中的大多數文件,因此該共享是可訪問的,並且沒有讀/寫限制,可以阻止作業運行。 我嘗試運行的任何作業都會發生此錯誤,包括使用很少文件訪問git repos的作業。
失敗的Jenkins作業中的日志輸出為:
git checkout -f ...a70f FATAL: Could not checkout ...a70f hudson.plugins.git.GitException: Could not checkout ...a70f ...<stack trace>... stderr: error: failed to read object ...f656 at offset ...1596 from .git/objects/pack/pack-...2475.pack fatal: packed object ...f656 (stored in .git/objects/pack/pack-...2475.pack) is corrupt
如果我將節點的工作空間更改為本地驅動器,然后重新連接完全相同的計算機並重新運行完全相同的作業,則不會出現故障。 Git正確克隆了我需要的一切,我的工作變得綠色。
如何解決網絡共享中出現的問題? 或者,如何滿足以下要求:
如果有不需要網絡共享的解決方案,我很樂意嘗試其他方法!
在這里找到了解決方案: GIT拉錯誤-遠程對象已損壞
由於某些原因,當工作區位於本地存儲中時,默認的git config值可以很好地工作。 當轉移到任何外部映射的存儲解決方案時,需要修改git config以防止
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.