Jenkins Job DSL Plugin のTIPS
job DSLのサンプル集
https://github.com/edx/jenkins-job-dsl https://github.com/sheehan/job-dsl-gradle-example https://github.com/unguiculus/job-dsl-sample
上級者向けオプション
https://github.com/jenkinsci/job-dsl-plugin/blob/master/docs/User-Power-Moves.md
JCasCとの連携
https://github.com/jenkinsci/job-dsl-plugin/blob/master/docs/JCasC.md
You can pass values from the YAML file to the Job DSL script.
共通で使える変数を定義する
jobs:
- providedEnv:
SUPERHERO: 'Midnighter'
- file: ./jobdsl/job.groovy
//job.groovy
job('awesome-job') {
description("favorite job of ${SUPERHERO}")
}
別ファイルをimportする
ファイルをどこに置いたらいいのかこれを見てもよくわからない。 Gradleで作るのが前提なの? classpath上に置いといたらいいんだろうか
Job DSLのFactoryを作る
https://github.com/jenkinsci/job-dsl-plugin/blob/master/docs/Job-DSL-Commands.md#dsl-factory
Because the engine is just Groovy, you can call other Groovy classes on the classpath
classpathどこ…
こういうクラスを作って、dslのほうで読み込ませる
JCasCではできないかもしれない😞 https://github.com/jenkinsci/configuration-as-code-plugin/issues/1355
groovyをloadする
Jenkins / Groovy language patterns
IDEで補完を効かせたい
https://github.com/jenkinsci/job-dsl-plugin/blob/master/docs/IDE-Support.md
script consoleからJob DSLのAPIを叩いてジョブを作る
これを貼って実行するだけ
import javaposse.jobdsl.dsl.*
import javaposse.jobdsl.plugin.*
JenkinsJobManagement jm = new JenkinsJobManagement(System.out, [:], new File('.'));
DslScriptLoader dslScriptLoader = new DslScriptLoader(jm)
dslScriptLoader.runScript("folder('project-a')")