一覧に戻る
    【Jenkins】jobの設定もコード化しよう!
    CI/CD
    PRこの記事には広告が含まれています

    【Jenkins】jobの設定もコード化しよう!

    (更新日: 2026/1/4)
    13 分で読める

    はじめに

    こんにちは株式会社TIELECのタカシユウトです。 この記事ではJenkins の設定をコード管理するやり方について紹介します。 Jenkinsのスクリプトのコード管理だけでなく設定自体もコード管理していきたいという方におすすめの記事となっております。

    jobの設定もコード化しよう!

    • 【Jenkins 】SCM(Source Control Management)を使ってスクリプトの管理をしてみよう。 /ja/tech/ci-cd/jenkins-scm

    こちらの記事ではスクリプトのコード管理を行うやり方を説明しました。

    ですが、Jenkinsのジョブはスクリプト部分だけでなく様々な設定部分が存在しています。 こうした設定部分もコードで管理することが可能です。 Jenkinsの設定は config.xmlというファイルに保存されます。 このファイルをコード管理してもよいのですがxmlなので管理にはつらいものがあります。

    Jenkins は これを補うためにJob DSL という機能サポートしており、Groovyの形でジョブの定義ファイルを書きそれを読み込ませることで正規のconfig.xmlとして生成することができるようになっています。

    Job DSLについてまずはこれを読もう

    job DSL を使うには 公式のREADMEを見ながらやるのが一番近道だと思います。

    Job DSL を使って設定をコード化する。

    • 【Jenkins】Pipelineジョブを使ってみよう ~ 基本編 ~ /ja/tech/ci-cd/jenkins-pipeline-basic 上記のパイプライン基本編で作ったジョブ題材に設定をコード化していきます。

    step1 JobDSL API から pipelineJob を探す。

    dsl1

    step2 JobDSL APIを検索しながら設定内容をコード化していく

    pipelineJob("development/sakamaki_y/kitten_image_generator_pipeline2") {
        description("猫の画像をダウンロードして保存するジョブ")
        keepDependencies(false)
        parameters {
            stringParam("KITTEN_IMAGE_FILE_NAME", "kitten-image.jpg", "保存する猫の画像のファイル名")
        }
        disabled(false)
    
        throttleConcurrentBuilds {
            maxPerNode(1)
            maxTotal(1)
            throttleDisabled(false)
        }
    
        logRotator {
            numToKeep(5)
            artifactNumToKeep(5)
        }
    
        definition {
            cpsScm {
                scm {
                    git {
                        remote {
                            github("sakamaki-y123/jenkins-continuous-delivery", "https")
                        }
                        branch("*/master")
                    }
                }
                scriptPath("pipeline/decrative-pipeline/pipeline_26_step_up_jenkins_basic_part.groovy")
            }
        }
    }

    step3 seedジョブを用意する。

    seedジョブはJob DSLのスクリプトを読み込ませるためのジョブです。 フリースタイルジョブから作成します。 今回はkitten_image_generator_pipeline_seed という名前で作成します。 ビルドで Process Job DSLsを選んで先ほどのスクリプトを記載します。

    dsl2

    step3 seedジョブを実行する。

    ジョブの実行結果から生成されたジョブを確認することができます。

    dsl3

    Job DSL のスクリプト自体もSCMで管理しましょう。

    job DSLのスクリプトの動作確認ができたら、これもコード管理しましょう。

    ジョブの設定はこうなります。

    dsl4

    おまけ

    XML Job to Job DSL Plugin というプラグインがあります。 これを使うと job DSLの自動生成を行うことができます。 ですが、精度は100%ではありません。 Google翻訳で英語から日本語に変換するくらいの精度だと思ってください。

    使い方

    • 画面左から XML Job To DSL へと進む dsl5
    • DSLを作りたいジョブにチェックを入れる kitten_image_generator_pipeline を選択してみます。 dsl6
    • 画面最下部の Convert selected to DSLを実行
    pipelineJob("kitten_image_generator_pipeline") {
        description("猫の画像をダウンロードして保存するジョブ")
        keepDependencies(false)
        parameters {
            stringParam("KITTEN_IMAGE_FILE_NAME", "kitten-image.jpg", "保存する猫の画像のファイル名")
        }
        disabled(false)
        logRotator("-1")
        definition {
            cpsScm {
                scriptPath("pipeline/decrative-pipeline/pipeline_26_step_up_jenkins_basic_part.groovy")
                scm {
                    git {
                        remote {
                            github("sakamaki-y123/jenkins-continuous-delivery", "https")
                        }
                        branch("*/master")
                    }
                }
            }
        }
        configure {
            it / 'properties' / 'com.coravy.hudson.plugins.github.GithubProjectProperty' {
                'projectUrl'('https://github.com/sakamaki-y123/jenkins-continuous-delivery/')
            }
        }
    }

    完璧なものができるわけではないですが、まあまあいい感じのものが出力されます。 これをベースに手直ししていく方がぶっちゃけ楽なんじゃないかと思っています。 が、これに頼りすぎると仕組みの理解ができなくなる恐れがあるので取り扱い注意です。

    まとめ

    いかがでしたでしょうか。改めて内容をまとめますと次のようになります。

    1. Jenkins の設定をコード管理するには Job DSLを使う。 2. Job DSLの作成は公式のリファレンスを見ながら作成する。 3. 既存の設定をJob DSLに変換するプラグインもある。

    はじめは少し大変かもしれませんが、設定もコード管理できるようになるとよりできることの幅が広がると思います。 是非使ってみてください。

    関連ページ

    おすすめ書籍

    もっと深く学びたい方へ

    この記事で、Job DSLの使い方は理解できたと思います。

    でも、「どのタイミングでJob DSL化すべきか」「手動設定とコード管理のどちらを選ぶか」という判断は、チームの規模や変更頻度によって変わります。

    より深い理解のために、こちらの記事もおすすめです:

    AI駆動開発の最適な検証サイクルを考える──人間とAI、それぞれの「テストのタイミング」

    AI駆動開発の最適な検証サイクルを考える──人間とAI、それぞれの「テストのタイミング」

    Tech
    AI開発
    「なんでこれ選んだんだっけ?」を解決する - ADRという考え方

    「なんでこれ選んだんだっけ?」を解決する - ADRという考え方

    Tech
    プロダクト開発

    この記事は役に立ちましたか?

    Coffee cup

    この記事が、何かの整理につながったら

    コーヒー1杯分の応援をもらえると嬉しいです。

    ※ これは応援とは別の話ですが、

    同じようなテーマを自分の文脈で整理したい場合は、 (文章だけだと詰まりやすい人向けに) 思考整理の壁打ちという形で対話の時間も取っています。

    対話の時間について