簡體   English   中英

Jenkins管道文件夾級共享庫如何使用?

[英]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.

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