LoginSignup
0
0

More than 3 years have passed since last update.

初心者向けCI/CD実践 - Part4 - CI/CDツールとその他ツールの併用例(テストツール)編

Last updated at Posted at 2020-10-26

CI/CD環境を構築

本連載は、「CI/CDを実践してみたい」という超初心者向けの内容となっています
enterpriseレベルやproductionレベルの導入に際して、「CI/CDとは?」という感覚をつかむものとなれば幸いです。
利用するツール等はこちらで選定していますので、別のツールを利用する場合は、適宜お調べください。
大まかな内容としては、以下のようなフローとなります

  1. 環境構築
  2. CI/CDツールの構築
  3. 開発プロジェクトの準備<-今回はここを説明**
    • GitHubにプロジェクトデータを登録
    • Jenkins Pluginのインストール
    • 手動ビルド
  4. CI/CDツールとその他ツールの併用例
    1. テストツールとの協調<-今回はここを説明
    2. インスペクションツールとの協調
  5. pipelineの実現

概要

  • JUnitによるテスト実行をジョブに組み込む
  • テスト結果の確認方法
  • 失敗したテスト結果をもとに修正

ジョブの編集(テストの自動化)

前回作成したJenkinsJOBのジョブを以下の手順で編集する
1. dashboardから中央ペインのJenkinsJOBを選択
2. 左ペインの設定
3. 設定画面下部のビルド後の処理にてJUnitテスト結果の集計を選択
4. 以下の通り、入力し設定を保存

図22.png

注意 テストコードの修正

今回のデモプロジェクトでは、[改訂第3版]Jenkins実践入門のデモプロジェクトを利用している
デモプロジェクトのソースコードはこちらのGitをForkして各自のレポジトリに複製しているが、本書の内容と一部異なる部分がある
そのため、このステップを飛ばすと失敗するはずのテスト結果が成功してしまう

以下に本来の失敗するテストに編集する方法を記載する(後程また成功する方法に戻すのだが、、、、、)

修正前

sampleproject/src/main/java/jp/gihyo/jenkinsbook/action/SampleAction.java
        lastName = request.getParameter("LastName");
        if ((lastName == null) || ("".equals(lastName))) {
            return true; 
        }

修正後

sampleproject/src/main/java/jp/gihyo/jenkinsbook/action/SampleAction.java
        lastName = request.getParameter("LastName");
        if ((lastName == null) || ("".equals(lastName))) {
            return false; 
        }

修正手順
1. ローカルレジストリ上でsampleproject/src/main/java/jp/gihyo/jenkinsbook/action/SampleAction.javaを編集true->false(編集はmaster branch上で行う)
2. git add SampleAction.javaで変更ファイルをステージング化
3. git commit -m "Fix right code to wrong"で変更をコミット
4. 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>"

その後再度コミットすると成功するはず
詳しい理解はこちら

テスト結果の確認

以前と同様の方法でビルドの実行を行うと下記のようにビルドは成功するが、テストに失敗する

図23.png

失敗したテストの詳細を確認

失敗したテストの詳細を確認するためには、テスト結果を選択

図24.png

テスト名をクリック

図25.png

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

再度ビルドを実行すると、結果はとなりビルド及びテストが成功している

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0