CI/CD環境を構築
本連載は、「CI/CDを実践してみたい」という超初心者向けの内容となっています
enterpriseレベルやproductionレベルの導入に際して、「CI/CDとは?」という感覚をつかむものとなれば幸いです。
利用するツール等はこちらで選定していますので、別のツールを利用する場合は、適宜お調べください。
大まかな内容としては、以下のようなフローとなります
- 環境構築
- CI/CDツールの構築
- 開発プロジェクトの準備<-今回はここを説明**
- GitHubにプロジェクトデータを登録
- Jenkins Pluginのインストール
- 手動ビルド
-
CI/CDツールとその他ツールの併用例
- テストツールとの協調<-今回はここを説明
- インスペクションツールとの協調
- pipelineの実現
概要
JUnit
によるテスト実行をジョブに組み込む
- テスト結果の確認方法
- 失敗したテスト結果をもとに修正
ジョブの編集(テストの自動化)
前回作成したJenkinsJOB
のジョブを以下の手順で編集する
- dashboardから中央ペインの
JenkinsJOB
を選択 - 左ペインの
設定
- 設定画面下部の
ビルド後の処理
にてJUnitテスト結果の集計
を選択 - 以下の通り、入力し設定を保存
注意 テストコードの修正
今回のデモプロジェクトでは、[改訂第3版]Jenkins実践入門のデモプロジェクトを利用している
デモプロジェクトのソースコードはこちらのGitをForkして各自のレポジトリに複製しているが、本書の内容と一部異なる部分がある
そのため、このステップを飛ばすと失敗するはずのテスト結果が成功してしまう
以下に本来の失敗するテストに編集する方法を記載する(後程また成功する方法に戻すのだが、、、、、)
修正前
lastName = request.getParameter("LastName");
if ((lastName == null) || ("".equals(lastName))) {
return true;
}
修正後
lastName = request.getParameter("LastName");
if ((lastName == null) || ("".equals(lastName))) {
return false;
}
修正手順
- ローカルレジストリ上で
sampleproject/src/main/java/jp/gihyo/jenkinsbook/action/SampleAction.java
を編集true
->false
(編集はmaster branch上で行う) -
git add SampleAction.java
で変更ファイルをステージング化 -
git commit -m "Fix right code to wrong"
で変更をコミット -
git push origin master
でリモートレジストリにも変更を反映
git commit
に失敗した場合
上記の手順3で以下のような出力が表れた場合、コミットに失敗している
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address
>gitの初期設定としてユーザ情報が不足しているので、コミットに失敗
>```
$ git config --global user.email "<hoge>@<fuga>"
$ git config --global user.name "<git account>"
その後再度コミットすると成功するはず
詳しい理解はこちら
テスト結果の確認
以前と同様の方法でビルドの実行
を行うと下記のようにビルドは成功するが、テストに失敗する
失敗したテストの詳細を確認
失敗したテストの詳細を確認するためには、テスト結果
を選択
テスト名をクリック
Error Message
のところに「注意 テストコードの修正」で変更する前の結果が期待されている
テスト結果をもとにコードの修正
手順的には、「注意 テストコードの修正」とほぼ同じなので詳しく説明しないが、以下の手順で修正をリモート/ローカルレジストリに反映させる
$ cd cicd-workspace/sampleproject/src/main/java/jp/gihyo/jenkinsbook/action
$ ls -a
. .. SampleAction.java package-info.java
$ vi SampleAction.java //"true"->"false"に変更
$ git status
ブランチ master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: SampleAction.java
no changes added to commit (use "git add" and/or "git commit -a")
$ git add SampleAction.java
$ git commit -m "Fix to wrong code to right"
[master 3ed7ccb] Fix to wrong code to right
1 file changed, 1 insertion(+), 1 deletion(-)
$ git push origin master
Username for 'https://github.com': <account name>
Password for 'https://<account name>@github.com':
Enumerating objects: 19, done.
Counting objects: 100% (19/19), done.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (10/10), 730 bytes | 121.00 KiB/s, done.
Total 10 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 3 local objects.
To https://github.com/<account name>/Jenkins_Practical_Guide_3rd_Edition.git
c847e7e..3ed7ccb master -> master
再度ビルドを実行すると、結果は●となりビルド及びテストが成功している