1. 序章

Jenkins は、現在使用されている最も人気のあるCI/CDツールの1つです。 これにより、構築から展開まで、ソフトウェアライフサイクルのあらゆる側面を自動化できます。

このチュートリアルでは、Jenkinsのより強力な機能の1つであるパラメーター化されたビルドに焦点を当てます。

2. ビルドパラメータの定義

ビルドパラメータを使用すると、Jenkinsジョブにデータを渡すことができます。 ビルドパラメータを使用して、必要なデータ(gitブランチ名、シークレット資格情報、ホスト名とポートなど)を渡すことができます。

Jenkinsジョブまたはパイプラインはパラメーター化できます。 [一般設定]タブのチェックボックスをオンにするだけです。「このプロジェクトはパラメーター化されています」

次に、パラメータの追加ボタンをクリックします。 ここから、いくつかの情報を指定する必要があります。

  • Type :パラメーターのデータ型(文字列、ブール値など)
  • 名前:パラメーターを識別する名前
  • デフォルト値:ユーザーが指定しない場合に使用されるオプションの値
  • 説明:パラメーターの使用方法を説明するオプションのテキスト

単一のJenkinsジョブまたはパイプラインに複数のパラメーターを含めることができます。 唯一の制限は、パラメーター名が一意でなければならないことです。

2.1. パラメータの種類

Jenkinsはいくつかのパラメータタイプをサポートしています。 以下は最も一般的なもののリストですが、異なるプラグインが新しいパラメータータイプを追加する可能性があることに注意してください。

  • 文字列:文字と数字の任意の組み合わせ
  • Choice :ユーザーが値を選択できる事前定義された文字列のセット
  • クレデンシャル:事前定義されたジェンキンスクレデンシャル
  • ファイル:ファイルシステム上のファイルへのフルパス
  • 複数行の文字列文字列と同じですが、改行文字を使用できます
  • Password Credentials タイプに似ていますが、ジョブまたはパイプラインに固有のプレーンテキストパラメーターを渡すことができます
  • 実行:別のジョブの1回の実行への絶対URL

3. ビルドパラメータの使用

1つ以上のパラメーターを定義したら、次のステップはそれらを利用することです。 以下では、パラメータ値にアクセスするさまざまな方法を見ていきます。

3.1. 伝統的な仕事

従来のJenkinsジョブでは、1つ以上のビルドステップを定義します。 最も一般的なビルド手順は、シェルスクリプトまたはWindowsバッチコマンドの実行です

packageTypeという名前のビルドパラメーターがあるとします。 シェルスクリプト内では、シェル構文を使用して、他の環境変数と同じようにビルドパラメーターにアクセスできます。

${packageType}

また、バッチコマンドでは、ネイティブのWindows構文を使用します。

%packageType%

GradleタスクまたはMavenゴールを実行するビルドステップを作成することもできます。 これらのステップタイプはどちらも、他の環境変数と同じようにビルドパラメーターにアクセスできます。

3.2. パイプライン

Jenkinsパイプライン内では、さまざまな方法でビルドパラメーターにアクセスできます。

まず、すべてのビルドパラメーターがparams変数に配置されます。 これは、ドット表記を使用してパラメータ値にアクセスできることを意味します。

pipeline {
    agent any
    stages {
        stage('Build') {
            when {
                expression { params.jdkVersion == "14" }
            }
        }
    }
}

次に、ビルドパラメータがパイプラインの環境に追加されます。 これは、シェルスクリプトを実行するステップ内で短いシェル構文を使用できることを意味します。

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo "${packageType}"
            }
        }
    }
}

4. パラメータ値の設定

これまで、パラメータを定義し、Jenkinsジョブ内でそれらを使用する方法を見てきました。 最後のステップは、ジョブを実行するときにパラメーターの値を渡すことです。

4.1. ジェンキンスUI

Jenkins UIでジョブを開始するのが、ビルドパラメーターを渡す最も簡単な方法です。 ログインしてジョブに移動し、 Build withParametersリンクをクリックするだけです。

これにより、各パラメーターの入力を求める画面が表示されます。 パラメータの種類に応じて、値の入力方法が異なります

たとえば、 String パラメータはプレーンテキストフィールドとして表示され、 boolean パラメータはチェックボックスとして表示され、Choiceパラメータはドロップダウンリストとして表示されます。

各パラメーターの値を指定したら、 Build ボタンをクリックするだけで、Jenkinsがジョブの実行を開始します。

4.2. リモート実行

Jenkinsジョブは、リモートAPI呼び出しを使用して実行することもできます。 これを行うには、Jenkinsサーバー上のジョブの特別なURLを呼び出します。

http://<JENKINS_URL>/job/<JOB_NAME>/buildWithParameters/packageType=war&jdkVersion=11&debug=true

これらのリクエストをPOSTコマンドとして送信する必要があることに注意してください。 また、HTTP基本認証を使用して資格情報を提供する必要があります。

curlを使用した完全な例を見てみましょう。

curl -X POST --user user:apiToken \
    http://<JENKINS_URL>/job/<JOB_NAME>/buildWithParameters/packageType=war&jdkVersion=11&debug=true

user は任意のJenkinsユーザーであり、apiTokenはそのユーザーに関連付けられたAPIトークンです。

5. 結論

この記事では、Jenkinsジョブとパイプラインの両方でビルドパラメーターを使用する方法を学びました。 ビルドパラメーターは、Jenkinsのジョブを動的にする強力な方法であり、最新のCI/CDパイプラインをビルドするために不可欠です。