我们有很少的组件存储在他们自己的git存储库中。这些组件的特定组合是作为不同类型的部署/客户的解决方案构建和提供的。所以,我们有一个管道git存储库,它有多个Jenkinsfile(具有不同的名称 - 以及构建名称)。
显然,这些管道之间存在许多共同点。我知道Jenkins共享库,当它们被赋予自己的git存储库时它就可以工作了。但是,由于我的管道已经在专用的git存储库中,我很想知道如何使用"文件夹级共享库"这里解释 - > https://jenkins.io/doc/book/pipeline/shared-libraries/#folder-level-shared-libraries
但是,我无法弄清楚如何使用这个文件夹级别的共享库。我无法找到这种图书馆的任何示例/文档。
任何指向文档/示例的指示 - 或者如何使用它的指南都将非常感激。
感谢。
答案 0 :(得分:3)
我想这样做的正确方法是实现自定义SCMRetriever
并使用library
步骤。
但是,您可以使用以下hack:
假设本地回购中的jenkins/vars/log.groovy
包含:
def info(message) {
echo "INFO: ${message}"
}
您的Jenkinsfile
可以使用jenkins/
步骤从library
目录加载该共享库:
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
}
}