如何将多个管道脚本包含到jenkinsfile中

nfzehxib  于 11个月前  发布在  Jenkins
关注(0)|答案(3)|浏览(120)

我有一个jenkins文件如下

pipelineJob('My pipeline job'){
displayName('display name')
logRotator {
    numToKeep(10)
    daysToKeep(30)
    artifactDaysToKeep(7)
    artifactNumToKeep(1)
}
definition{
    cps {
        script(readFileFromWorkspace('./cicd/pipelines/clone_git_code.groovy'))
        script(readFileFromWorkspace('./cicd/pipelines/install_dependencies_run_quality_checks.groovy'))
    }
}
}

字符串
在上面的jenkinsfile中,最后一个script文件正在替换其他脚本。基本上,我已经将任务拆分到多个groovy文件中,这样我就不会在所有jenkinsfile中重复相同的代码,也不会在其他作业中重复使用相同的代码,就像我现在可以在dev build和QA build中使用clone_git_code.groovy脚本一样。

mm5n2pyu

mm5n2pyu1#

你必须使用共享库(https://jenkins.io/doc/book/pipeline/shared-libraries/)。你可以定义多个groovy文件,其中包含类来返回一个已处理的对象,或者简单地使用方法创建调用,其中定义一个步骤,并且执行将是顺序的。

j5fpnvbx

j5fpnvbx2#

对于任何仍然在寻找答案的人来说,你可以使用load命令将一个或多个groovy文件加载到你的管道中:

def setupGitCredentials = load 'jenkins/setup-git-credentials.groovy'

字符串
另请参阅jenkins提供的示例,以获得更完整的图片:https://github.com/jenkinsci/pipeline-examples/blob/master/pipeline-examples/load-from-file/pipeline.groovy

new9mtju

new9mtju3#

我在尝试将多个脚本包含到Jenkins作业中时遇到了同样的问题。在做了一些研究之后,我发现下面的解决方案是最简单的:

definition {
            cps {
                script (
                    ScriptsLibrary.pipelineTest('did it work?') +
                    ScriptsLibrary.scmConf('repoURL_input', 'accessCredentials', 'activeBranch')
                )               
            }
        }

字符串
添加“+”来连接字符串。帮我完成了任务:)

相关问题