はじめに
メジャーなバージョン管理ツールであるGitと、CI/CDツールの代表格であるJenkins。この2つはいずれも無料で使えることから、様々な開発現場において広く利用されています。特にビルド・リリースという定型作業においては非常に有効で、開発効率の向上に貢献します。これまで単純に自動化作業のみでJenkinsを使っていた方でも、Gitとの組み合わせた使い方を学べば、より便利に使っていけることかと思います。
本記事の対象となる方
- 既にJenkinsの環境がある
- Jenkinsで簡単なジョブの作成をしたことがある
- Gitの基本的な使い方を知っている(クローン、コミット、プッシュなど)
- GitでSSH接続の設定を行ったことがある(クライアントの設定だけで十分です)
レッスン1.Gitプロジェクトを準備する
まずはJenkinsで扱うGitプロジェクトを準備します。ホスティングサービスは問いませんが、今回はtracpathを使います。
→tracpathの登録方法及び、リポジトリ作成方法のページへ
新しいリポジトリを作り、テストとして下記のコマンドを入れたバッチファイル(test.batという名前にします)を準備し、プッシュしておいてください。
test.bat
@echo off echo Hello world
また、SSH接続のURLを後で使います。tracpathのダッシュボードからURL左側のプルダウンでSSHを選び、このページを開いたままにしておくか、URLをどこかに控えておきましょう。
レッスン2.ジョブをつくる
では、続いて新規ジョブを作ります。Jenkinsのダッシュボードにログインしたら、左側のツリーから「新規ジョブ作成」を選択します。
ジョブの作成画面になるので、ジョブ名を入れます。入力したら「フリースタイル・プロジェクトのビルド」を選択します。選択したら、画面下部にある「OK」を押してください。
ジョブの作成が完了すると、引き続きジョブの設定画面に移行します。ここではジョブの動作内容を細かく決めるメニューが並んでいます。
設定画面を下にスクロールしていくと、「ソースコード管理」というカテゴリがありますので、「Git」を選んでください。選ぶと、リポジトリのURLの入力欄が出てきます。
ここに先ほどtracpathで取得したURLを入れます。今回はSSH接続でGitを使ってみます。GitにはHTTPSとSSHの2つの接続方法がありますが、一般的にはセキュリティが高いSSHが良く使われます。
SSH接続を使うためには、設定の途中で秘密鍵をJenkinsのクライアントPCに登録しなければならないので、場合により管理者権限が必要になってきます。こちらは管理者に相談してみてください。
JenkinsのクライアントPCにSSH秘密鍵が登録されており、tracpathで作ったリポジトリがCloneできる環境になっていれば、Jenkins側では認証情報の指定は特に必要ないので、URLだけでクローン出来ます。
URLを入力したら、「保存」を押してジョブの設定を完了します。
tracpath側に公開鍵が登録されていない場合
tracpathのダッシュボードから、一般設定 -> SSH鍵 に移動します。
下記のエリアに公開鍵の中身を貼り付けて、「追加」を押します。コメントは空欄でOKです。
これで公開鍵の登録は完了です。
では、ジョブを実行してみましょう。ジョブの実行が成功したら、コンソール出力を見てみてください。
今回はチェックアウトのみなので、下記のようにコンソール出力に最新のコミットメッセージが出力されれば成功です。
レッスン3.Gitに入っているファイルを扱う
では、続いてチェックアウトしたファイルを使用する方法を学びましょう。今回はあらかじめ入れておいたバッチファイルを実行するジョブにしてみます。
ジョブの設定画面に入り、設定画面中ほどにあるビルドというカテゴリに、「ビルド手順の追加」というボタンがありますので、そこから「Windowsバッチコマンドの実行」を選んでください。
バッチコマンドを入力するエリアが出てくるので、下記のコマンドを入れてみましょう。
%WORKSPACE%\test.bat
下記のようになればOKです。そのまま保存して設定画面を閉じてください。
では、さっそく実行してみましょう。実行が成功したら、コンソール出力を確認してみてください。test.batに入力していたHello worldが出力されていれば成功です。
レッスン4.コミットをポーリングする
毎回ビルドを手動で行っていては非効率なので、自動でビルドを開始できるような方法を考えます。かといって単にスケジュールで実行すると、変更が無い場合でもビルドされてしまうので、無駄なPCリソースを食ったり、不要な成果物が増えたりする原因となります。そこで、Gitでリポジトリに変更が加わったことを定期的にチェックし、変更があればビルドするという方法を学んでいきたいと思います。これをポーリングと呼びます。
一見難しそうな内容ですが、設定は簡単にできます。設定画面を開き、ビルド・トリガのセクションを開き、「SCMをポーリング」を選んでください。
スケジュールという欄が出てくるので、ここにスケジュールを入力します。
ここに定期実行を設定するコマンドを入力しますが、コマンドのフォーマットは下記のようになっています。(各文字列の間に半角スペース)
これは主にUNIXで用いられる、cronと呼ばれる書き方になります。
分 時間 日 月 曜日
・特定しない場合は * を入れる
・ランダムの場合は H を入れる(複数のジョブを動かしていると、前のジョブの実行が終わらない場合もあるので、実行時間に幅を持たせるために使用を推奨)
これを踏まえて、いくつ例を挙げます。これを参考にスケジュールを作ってみてください。
毎日9時に実行
H 9 * * *
平日毎日15時に実行
H 15 * * 1-5
土日の10時に実行
H 10 * * 0,6
cronは少々癖があるフォーマットになりますが、詳しい内容はヘルプがあります。(英語のみ)また、jenkins cron等で検索をかければ、日本語のサイトなども見つかりますので、参考にしてください。
入力したものが意図する内容になっているかは、入力後にテキストボックスからフォーカスを外すと、すぐ下に実行される日付や時間が例として出てきますので、そちらを確認してみてください。
保存したら、完了です。正しく起動したかを見たい場合、もし変更が無ければビルドが行われないため、ログに残りませんので、その際にはジョブの左側のツリーから、「Gitのポーリングログ」を押して確認します。
変更が無ければ、下記のように「No changes」と表示されます。
レッスン5.ビルドをジョブ化するステップ
今回はバッチファイルの実行方法を例にとってみましたが、実際の現場ではプロジェクトの環境に応じたコンパイラ等を動かしてファームウェアをビルドすることになるかと思います。
その場合は、下記のステップでジョブ化を検討してみてください。
- コンパイラのコマンドライン実行仕様を確認する(ヘルプファイル等)
- 手動でコマンドプロンプトからビルドを試す
- バッチファイルを作成して、ビルドを試す
- バッチファイルをJenkinsのクライアントPCに置く
- ジョブの設定画面で、バッチファイルを起動するコマンドを入れる
→起動オプション等はバッチファイルに埋め込まず、Jenkinsの設定側に入力した方が変更が楽です - 手動実行して正しく実行することを確認
- ポーリングスケジュールを設定し、運用開始
コマンドプロンプトから実行できるコンパイラであれば、どのような言語でも上記方法でジョブ化が可能です。幅広く応用が利きますので、是非お試しください。
おわりに
今回はJenkinsとGitを組み合わせて使う方法を学びました。バージョン管理ツールと組み合わせて使って使うことがJenkinsの神髄と言えます。定期的なビルドを正確に行えるので、ファームウェアリリースにかけていた時間をほかの作業に充てることができます。また、今回学んだことを応用すれば、ファームの作成だけではなく、定期的にビルド作業を行って、ビルドエラーが無いかをチェックするといった使い方もできます。プロジェクトの運用方法に沿って、有効活用していきましょう。
最後までお読みいただき、ありがとうございました。
No Comments