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

nfzehxib  于 2023-11-17  发布在  Jenkins
关注(0)|答案(3)|浏览(172)

我有一个jenkins文件如下

  1. pipelineJob('My pipeline job'){
  2. displayName('display name')
  3. logRotator {
  4. numToKeep(10)
  5. daysToKeep(30)
  6. artifactDaysToKeep(7)
  7. artifactNumToKeep(1)
  8. }
  9. definition{
  10. cps {
  11. script(readFileFromWorkspace('./cicd/pipelines/clone_git_code.groovy'))
  12. script(readFileFromWorkspace('./cicd/pipelines/install_dependencies_run_quality_checks.groovy'))
  13. }
  14. }
  15. }

字符串
在上面的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文件加载到你的管道中:

  1. 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作业中时遇到了同样的问题。在做了一些研究之后,我发现下面的解决方案是最简单的:

  1. definition {
  2. cps {
  3. script (
  4. ScriptsLibrary.pipelineTest('did it work?') +
  5. ScriptsLibrary.scmConf('repoURL_input', 'accessCredentials', 'activeBranch')
  6. )
  7. }
  8. }

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

相关问题