[英]How to use Jenkins Pipeline Folder-Level Shared Library?
我們有一些組件存儲在他們自己的 git 存儲庫中。 這些組件的特定組合作為針對不同類型的部署/客戶的解決方案構建和交付。 因此,我們有一個管道 git 存儲庫,它有多個 Jenkinsfile(具有不同的名稱 - 構建名稱也是如此)。
顯然,這些管道之間有許多共同之處。 我知道 Jenkins 共享庫,當它們被賦予自己的 git 存儲庫時它可以工作。 但是,由於我的管道已經在專用的 git 存儲庫中,我很想知道如何使用此處解釋的“文件夾級共享庫” --> https://jenkins.io/doc/book/pipeline/shared-libraries /#文件夾級共享庫
但是,我不知道如何使用這個文件夾級共享庫。 我找不到這種類型的庫的任何示例/文檔。
任何指向文檔/示例的指針 - 或有關如何使用此 go 的指南將不勝感激。
謝謝。
我想這樣做的正確方法是實現自定義SCMRetriever
並使用library
步驟。
但是,您可以使用以下hack:
假設您的本地 jenkins/vars/log.groovy
中的jenkins/vars/log.groovy
包含:
def info(message) {
echo "INFO: ${message}"
}
您的Jenkinsfile
可以使用library
步驟從jenkins/
目錄加載該共享庫:
node('node1') { // load library
checkout scm
// create new git repo inside jenkins subdirectory
sh('cd jenkins && git init && git add --all . && git commit -m init &> /dev/null')
def repoPath = sh(returnStdout: true, script: 'pwd').trim() + "/jenkins"
library identifier: 'local-lib@master', retriever: modernSCM([$class: 'GitSCMSource', remote: repoPath])
}
node('node2') {
stage('Build') {
log.info("called shared lib") // use the loaded library
}
}
第一:要使用文件夾級共享庫,您必須創建標准庫結構並將其提交到 SCM 存儲庫。
第二:您必須配置 jenkins 才能在管道所在文件夾的選項對話框中使用該庫。
使用腳本管道的簡單示例,沒有額外的庫存儲庫:
"<URL>/my-test-repo.git"
|
|- <JenkinsPipelineScript>
|
|- "jenkins_lib"
|
|- resources
|- src
|- vars
|- "HelloWorld.groovy"
所以在你的 JenkinsPipelineScript 中只需導入庫
@Library('jenkins_lib') _
並調用“HelloWord.groovy”
HelloWorld()
HelloWorld.groovy 可能如下所示:
def call() {
sh "echo Hello world from library-script!"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.