簡體   English   中英

Jenkins 多分支管道卡在舊的 Jenkinsfile 上

[英]Jenkins multi-branch pipeling stuck on an old Jenkinsfile

我正在使用 cowsay 作為具有本地 git 存儲庫的應用程序來練習 CI 工作流程。 我有一個 docker-compose,它構建了三個 docker 容器:一個 Jenkins、一個 Z37F6651DB68B605B074594D51ZDC。 這三個都使用命名卷來存儲一致的數據。 我正在運行基於 Jenkinsfile(聲明性)和用於推送事件的 webhook 的多分支管道。 到目前為止,一切都很好。 但是 - Jenkins 卡在舊版本的 Jenkinsfile 上。 我嘗試過的解決方案:

  1. 我從我能找到的所有版本的 Jenkinsfile 中手動清空了 jenkins-home(我查看了 ~/jobs/<job_name> 和 ~/caches )
  2. 我完全刪除了 Jenkins 並重新構建了映像,包括卷修剪。
  3. 我手動將文件遷移到新的存儲庫中
  4. 我使用“git filter-branch”從所有分支和提交中刪除所有版本的 Jenkinsfile。
  5. 我手動重寫(不是復制粘貼)Jenkinsfile
  6. 我的事件就像無緣無故清理我的整個瀏覽器緩存一樣絕望。

Jenknis 拒絕重新緩存並以某種奇怪的方式繼續運行此行:“docker build -t cowsay/master”。 這在 Jenkinsfile 中不存在。

我找不到更多要清理的緩存。 幫助?

編輯:我沒有運行任何命令。 這是這樣配置的,因此 Jenkins 作業在“git push”到任何分支時運行。 我看到的錯誤是這一行:+docker build -t 'cowsay'。 這是曾經在某個階段的 Jenkinsfile 中的一行,但至少在最后 5 次提交/推送中不是。 此行會導致作業失敗的錯誤。

我自己從未經歷過這種失敗,但這里有幾件事我會嘗試調試問題所在:

  1. 我將首先確保將其配置為使用 git 中的 Jenkinsfile,而不是 static 腳本。 為此,將 go 連接到您的多分支管道,單擊“配置”,在“構建配置”塊中,它應該說模式是“由 Jenkinsfile”,並且路徑是您的 Jenkinsfile 在 repo 中的相對路徑。 如果您 go 到每個分支構建作業,然后單擊“查看配置”,您應該看到他們的管道定義是“來自多分支配置的管道”。
  2. 我會驗證您看到的問題與 Jenkinsfile 緩存有關,而不是與您的腳本之一運行您沒想到的命令有關(例如,如果您運行 shell 腳本或 make 文件,他們可能正在調用命令那是失敗的)。 為此,我將在 Jenkinsfile 的頂部添加一個回顯,構建作業並查看回顯是否在作業 output 中。 如果是這樣,您將從 Jenkins 獲取最新信息,並且其他東西正在調用您從 Jenkinsfile 中刪除的命令。
  3. 如果您沒有看到步驟 2 中提到的 echo 命令,那么您肯定不是最新的。 您提到您使用本地 git 存儲庫。 您是如何配置 git 單片機的? jenkins 是否有可能正在等待來自遠程服務器的推送通知,而您沒有將本地更改推送到? 如果您看到構建在每次提交時都會自動觸發,那可能會消除這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM