我有一個帶有多個Jenkinsfiles的倉庫(至少會有多個Jenkins檔案),我想用SEED作業在Jenkins中設定作業。
到目前為止,我可以根據我的遠程版本庫來設定一個作業。
#!/usr/bin/env groovy
/*
*從gitlab專案docker-jenkins-pipelines設定作業
*/
def createPipelineJob(final String repo) {
String repoName = repo.substring(repo.lastIndexOf("/") 1, repo.length() )
pipelineJob(repoName) {
定義 {
cpsScm {
scm {
git {
遠程 {
url('[email protected]:' repo '.git')
}
分支('*/main')
//branches('*/feat*')
}
}
scriptPath("src/main/jobs/ADMIN-initialize-repository/Jenkinsfile" )
}
}
}
}
createPipelineJob('sommerfeld.sebastian/docker-jenkins-pipelines')
現在我想遍歷我的 repo (https://gitlab.com/sommerfeld.sebastian/docker-jenkins-pipelines/-/tree/main/src/main/jobs) 中的所有檔案夾,并為所有 Jenkinsfiles 創建單獨的作業。
我希望為 src/main/jobs/*/Jenkinsfile 設定某種通配符。但回圈檔案夾也是可以的,甚至更好,因為我可以更好地定義作業名稱。
但是我不知道如何迭代檔案夾。誰能給我一個提示,告訴我如何做到這一點?是否有一個針對gitlab.com的APi呼叫或其他什么?
uj5u.com熱心網友回復:
我建議不要使用API。你手頭確實有groovy,你可以在檔案中迭代。當你簽出資源庫時,你有所有的資訊。
https://stackoverflow.com/a/38899519/3708208是用groovy迭代檔案的一個很好的起點,可能會有一些沙盒安全限制,但這表明你可以迭代一組檔案。呼叫方法來創建管道作業應該是這樣的:
new File(parentPath).traverse(type: groovy.io.FileType.FILES, nameFilter: ~/Jenkinsfile/) { it ->
createPipelineJob("sommerfeld.sebastian/docker-jenkins-pipelines/${it.parent.name}")
} //code untested :)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318081.html
標籤:
下一篇:jenkins管道在GenericDownloadExecutor.java中出現莫名其妙的NullPointerException。52
