首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过作业DSL种子脚本从Git加载多个Jenkins管道脚本

通过作业DSL种子脚本从Git加载多个Jenkins管道脚本
EN

Stack Overflow用户
提问于 2021-02-09 00:59:19
回答 1查看 452关注 0票数 0

我的用例:我想使用JCasC插件通过Jenkins Helm图表设置一个Jenkins配置。我还想通过管道插件在一系列Jenkinsfile中定义一些作业,这样整个安装就可以在代码中配置,只需运行helm install就可以执行干净、完整的安装。

但是,我在加载Pipeline脚本时遇到了问题。在我的JCasC中,我定义了一个作业DSL种子脚本,如下所示:

代码语言:javascript
复制
job('seedJob') {
  scm {
    git {
      remote {
        url 'ssh://git@foo/bar.git'
        credentials 'creds'
      }
    }
  }
  steps {
    dsl {
      external 'jenkins/jobs/*.groovy'
    }
  }
}

这将成功地从存储库中提取脚本,示例如下:

代码语言:javascript
复制
pipeline {
   // hello.groovy
   // Do stuff
}

但是,在解析Pipeline脚本时,作业会失败,并显示以下错误:

代码语言:javascript
复制
ERROR: (hello.groovy, line 1) No signature of method: hello.pipeline() is applicable for argument types: (hello$_run_closure1) values: [hello$_run_closure1@4c6f43b6]
Possible solutions: pipelineJob(java.lang.String), pipelineJob(java.lang.String, groovy.lang.Closure)
Finished: FAILURE

我怀疑Pipeline脚本不能通过Job DSL以这种方式读取。如果是这样的话,有没有办法从一个种子作业中加载多个Pipeline脚本?

EN

回答 1

Stack Overflow用户

发布于 2021-02-09 02:37:31

种子作业应如下所示:

代码语言:javascript
复制
pipelineJob('job_name_here') {
  definition {
    cpsScm {
      scm {
        git {
          branches('*/master')
      branches('*/release')
          remote {
            credentials('credentials_id_from_jenkins_here')
            name('name')
            url('git@gitlab_repo_here.git')
          }
        }
      }
    }
  }
  triggers {
    gitlab {
      ciSkip(true)
      triggerOnPush(true)
      triggerOnMergeRequest(false)
      triggerOnClosedMergeRequest(true)
      branchFilterType('RegexBasedFilter')
      targetBranchRegex('(.*master.*|.*release.*)')
      secretToken('paste_secret_token_for_webhook_here')
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66105971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档