【问题标题】:How to use Jenkins Pipeline Folder-Level Shared Library?如何使用 Jenkins Pipeline 文件夹级共享库?
【发布时间】:2018-01-28 20:35:43
【问题描述】:

我们的组件很少,它们存储在自己的 git 存储库中。这些组件的特定组合作为不同类型的部署/客户的解决方案构建和交付。因此,我们有一个管道 git 存储库,其中包含多个 Jenkinsfile(具有不同的名称 - 以及构建名称)。

显然,这些管道之间有很多共同点。我知道 Jenkins 共享库,当他们获得自己的 git 存储库时它可以工作。但是,由于我的管道已经在专用的 git 存储库中,我很想知道如何使用此处解释的“文件夹级共享库” --> https://jenkins.io/doc/book/pipeline/shared-libraries/#folder-level-shared-libraries

但是,我不知道如何使用这个文件夹级共享库。我找不到这种风格的库的任何示例/文档。

任何指向文档/示例的指针 - 或有关如何使用它的指南将不胜感激。

谢谢。

【问题讨论】:

  • 你知道这是关于在 Jenkins 的文件夹中分组的作业,而不是从 Git 存储库的子目录加载代码,不是吗?
  • 没有。我没有将我的计划分组在文件夹下,所以我没有想到这种情况。感谢您的信息。现在; Jenkins 有没有什么功能可以让我的库与管道定义在同一个仓库中?
  • IIRC 您可以使用library 步骤从那里加载。
  • 好的。将尝试并更新您。谢谢。
  • @RKajaMohideen 你能分享一下这个更新吗?

标签: jenkins jenkins-pipeline


【解决方案1】:

我想正确的方法是实现自定义SCMRetriever 并使用library 步骤。

但是,您可以使用以下 hack:

假设您的本地存储库中的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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-25
    • 2017-04-30
    • 2018-10-18
    • 2018-02-23
    • 1970-01-01
    • 2019-02-23
    • 2023-03-07
    • 2021-09-05
    相关资源
    最近更新 更多