使用通配符和Jenkinsfile的Jenkins管道种子作业

watbbzwu  于 2023-04-20  发布在  Jenkins
关注(0)|答案(1)|浏览(138)

我正在使用CasC构建Jenkins管道。请原谅我,因为我对groovy和所有相关管道都很陌生,并且不确定我应该使用什么术语。我的目标是从以下方面拉工作:

https://gitlab.domain.com/<repo>/project.git

回购路径:

<repo>/jobs

使用Jenkins CasC yaml文件中的以下内容:

jobs:
  - script: >
      folder('App')
  - file: /var/jenkins_home/pipelines/pull_jobs_wildcard

我有这样一段代码,它非常适合拉取单个作业,但我想修改它以使用通配符并拉取/jobs/* 路径中的所有管道作业。
我的剧本:

pipelineJob("App/App Server Stop") {
  definition {
    cpsScm {
      scm {
        git {
          remote {
            url("https://gitlab.domain.com/repo/project.git")
            credentials("<git_creds_id>")
          }
          branch('develop')
        }
      }
      scriptPath("jobs/app_server_stop")
    }
  }
  triggers {
    scm('H/15 * * * *')
  }
}

我看过互联网上的一些例子,它们有巨大的代码或代码片段,但由于我不是程序员,我不知道我需要做什么。
我能不能稍微修改一下上面的内容,以将该路径下的所有作业都拉进来?我是不是错得太远了?我能不能这样做:

pipelineJob("App/*") {
  definition {
    cpsScm {
      scm {
        git {
          remote {
            url("https://gitlab.domain.com/repo/project.git")
            credentials("<git_creds_id>")
          }
          branch('develop')
        }
      }
      scriptPath("jobs/*")
    }
  }
  triggers {
    scm('H/15 * * * *')
  }
}

如能提供帮助将不胜感激。

chhqkbe1

chhqkbe11#

我能建议的是将以下脚本添加到您的CaaC:

jobs:
- script: >
    freeStyleJob('job-dsl-plugin') {
      description('Initial job to setup all pipelines with DSL')
      displayName('Seed job')
      label('seed-job-agent')
      scm {
        git {
          extensions {
            cloneOptions {
              depth(1)
              shallow(true)
              noTags(true)
              timeout(10)
            }
            gitLFSPull()
          }
          remote {
            credentials('git-token')
            url('https://git.xyz.com/xyz/project.git')
          }
          branch('*/main')
        }
      }
      steps {
        jobDsl {
          removedJobAction('DELETE')
          removedViewAction('DELETE')
          targets('jobs/*.groovy')
        }
      }
      triggers {
        hudsonStartupTrigger {
          label('')
          quietPeriod('0')
          nodeParameterName('')
          runOnChoice('') 
        }
      }
    }

这将创建连接到git存储库的作业,并从扩展名为.groovyjobs目录加载所有文件。
在我的示例中,我还使用了startup trigger插件,它将在每次Jenkins重新启动后运行此作业。
我不建议使用cron触发器,因为如果有一些正在运行的作业,此作业将失败。

相关问题