這發生在我更新了一些插件并將“藍海”添加到我們的 Jenkins 之后。
我們的每一項作業都是使用 JenkinsFile 來構建和打包我們的應用程式。
但是我們正在從workspace@script檔案夾中的 git 中加載一些 groovy 檔案,所以這就是我所做的:
script {
slack = load WORKSPACE "@script/jenkins/libs/toto.groovy"
}
但現在我必須這樣做才能擁有正確的檔案夾:
script {
// Locate the jenkins folder
// This is done because there is a new sub-folder (like : 17a4ba1ed1ce777b18c5...)
// that appeared out of nowhere (update -> security ??)
git_jenkins_folder = sh (
script: "find " WORKSPACE "@script -type d -name 'jenkins' -printf '%T@ %Tc %p\n' | sort -rn | head -1 | cut -d' ' -f9",
returnStdout: true
).trim()
// Load the groovy methods in groovy files
slack = load git_jenkins_folder "/libs/toto.groovy"
}
當然,我必須從workspace@script檔案夾中洗掉之前簽出的代碼才能正常作業。
為什么會突然發生這樣的事情?我可能在考慮安全更新?
如果這個數字將來發生變化并出現一個新檔案夾怎么辦?
恕我直言,這真的很奇怪,但也許我錯過了一些東西。如果有人有答案,我會很樂意閱讀它:)
編輯 :
感謝@1141514admin,這樣做是為了解決“管道:Groovy”插件的這些問題:
- https://www.jenkins.io/security/advisory/2022-02-15/#SECURITY-2443
- https://www.jenkins.io/security/advisory/2022-02-15/#SECURITY-2463
- https://www.jenkins.io/security/advisory/2022-02-15/#SECURITY-2613
編輯 2:
添加了對上次修改檔案夾的檢索,以防將來此檔案夾名稱發生更改。
uj5u.com熱心網友回復:
我今天也在我的構建中注意到了這種新行為。我之前更新了一些插件。我發現在我的服務器上是“管道:Groovy”插件,版本 2656.vf7a_e7b_75a_457 導致這些新的子檔案夾具有冗長的隨機名稱,其中包含克隆的 repo 檔案。我的問題是它導致構建失敗,導致檔案路徑超過 260 個字符,這是 Windows 中的默認限制。我將“管道:Groovy”插件降級到版本 2648.va9433432b33c,重新啟動 Jenkins 服務后,我不再在作業區構建檔案夾中看到這些新的隨機命名的子檔案夾。
聽起來這是一個永久性的變化。
https://www.jenkins.io/security/advisory/2022-02-15/
管道:Groovy 插件 2656.vf7a_e7b_75a_457 在讀取管道的腳本檔案(通常是 Jenkinsfile)時,每個 SCM 使用不同的簽出目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/428319.html
