「Applibot Advent Calendar 2023」21日目の記事になります。
前の記事は@ref3000さんの【Jenkins】「このビルドはパラメータが必要です。」を消すになります。
はじめに
今回は自宅のPCにJenkinsのローカル環境を構築してみた話になります。
個人的に詰まった部分などを中心に書いていければなと思います。
自宅の環境がWindowsのため他のプラットフォームには対応しない部分があると思いますがご容赦ください。
Jenkinsとは
CI/CDを実現するためのOSSツール
自動でデプロイやビルドをすることが可能。
準備
事前に必要なもの
今回以下のものはすでにインストール済みで進めます。
- JDK11 or 17
- Git Bash
インストール
まずはこちらからJenkinsのインストーラーをダウンロードします。
ダウンロード後インストールを画面に従って進めます。
認証情報を求められる画面になったら上のRun service as LocalSystem
を選択します。
Windows10 HomeやWindows11 Homeの場合、ここでuserの指定ができないので後ほど設定します。
Win + R で%systemroot%\system32\services.msc
をファイル名を指定して実行
Jenkinsを選択しプロパティ→ログオンから管理者ユーザーでログオンが可能です。
インストールが終わったらlocalhost:8080
にアクセスします。
下のような画面が出るので赤文字のフォルダにあるファイルをメモ帳等で開き、中にあるパスワードを貼り付けます。
進めていくと途中pluginのインストールを選択する部分が出てきますが、明確に使いたいものがない限りは左側を選択することをお勧めします。
この画面ではJenkinsのURLを変更できるのですが、後からでも変更できるのといくつか設定が必要になるのでこのままにします。
ユーザーを作成し以下のようなホームに行ければインストール終了です。
設定
Jobの作成の前にシェルの設定をします。
Jenkinsの管理→Systemから下の方にシェル実行ファイル
という項目があるので
そこにGit Bashのsh.exeのパスを渡します。
Jobの作成
では本題のJobを作っていきましょう。
ホームの新規ジョブ作成から作っていきます。
まずは簡単なシェルの実行をするだけのJobを作っていきます。
フリースタイルを選択しジョブ名を入力したらOKを押します。
Jobの設定
Jobの設定画面です。
下の方に行くとBulid Stepsとあるのでビルド手順の追加からシェルノ実行
を選択し以下のコードを書きます。
echo "Hellow World"
書けたら保存し実行してみましょう。
しばらくするとビルドが実行され左側に#1
というものが出てきます。
それを選択しコンソール出力を選びHello World
と表示されていれば成功です。
もしshが見つからないなどのエラーが出た場合はシステム環境変数のPathにC:\Program Files\Git\bin
が通っているか確認してください。
パラメータの設定
シェルが実行できたので次はパラメータを渡せるようにしたいと思います。
パラメータを設定することでスクリプトを変更することなく設定などを変更することができます。
先ほど作成したJobの設定を開き、ビルドのパラメータ化
にチェックを入れます。
パラメータを追加し文字列を選びます。
パラメータの名前
、デフォルト値
、説明
を入力します。
このままではパラメータがシェルに反映されないのでコードを以下のように編集します。
+ echo "$TEXT"
- echo "Hello World"
$パラメータ名
と書くことでパラメータを変数として渡すことができます。
では実行してみます。ここでビルドの実行がパラメータ付きビルドに変わっています。
渡したパラメータが表示されていれば成功です。
Pipelineの設定
次はPipelineの作成です。
これを使用することで先ほどのシェルの実行を複数のステップに分けて実行したり、Gitのチェックアウトやビルドなどをステップに分けることでメンテナンスか拡張性を持たせることができます。
PipelineはJenkinsスクリプト(言語はgroovy)で書くことができます。
Git管理も可能なのでバックアップや更新も可能です。
新規ジョブ作成から今度はパイプラインを選択してOKを押します。
今回はパラメータに文字列PARAM1
,PARAM2
を追加します。
一番下のパイプライン定義に以下を書き込みます。
pipeline
{
agent any
stages
{
stage("Stage1")
{
steps
{
echo "PARAM1 = $PARAM1"
}
}
stage("Stage2")
{
steps
{
echo "PARAM2 = $PARAM2"
}
}
}
}
パラメータ付きビルドをしてエラーが出なければ成功です。
ただこのままではパラメータを追加したくなった際に毎回Jobの設定をしないといけなくなります。
Jenkinsスクリプトを使い回していると更新忘れなども出てくるはずです。
なのでスクリプトにパラメータの定義も追加します。
pipeline
{
agent any
+ parameters
+ {
+ string(name: "PARAM1", defaultValue: "1", description: "Stage1のパラメータです。")
+ string(name: "PARAM2", defaultValue: "2", description: "Stage1のパラメータです。")
+ }
stages
{
stage("Stage1")
{
steps
{
echo "PARAM1 = $PARAM1"
}
}
stage("Stage2")
{
steps
{
echo "PARAM2 = $PARAM2"
}
}
}
}
スクリプトに定義したパラメータは編集してすぐに反映されるわけではないです。
一度実行してスクリプトが読み込まれた時点でパラメータが更新されるので空実行してからビルドしてください。
最後に
いかがでしたでしょうか?GitのチェックアウトやUnityのビルドなどもできるのですが記事が長くなりすぎるのでここまでさせてください。個人的にシェルの実行にかなり悩まされたので少しでも参考になれば幸いです。
以上、「Applibot Advent Calendar 2023」21日目の記事でした。
明日は@shoma3571さんです。