Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

自動化ハンズオン

1,130 views

Published on

Open Developers Conference 2017 Tokyo
自動テスト・自動デプロイ体感ハンズオンセミナー

Published in: Engineering
  • Be the first to comment

自動化ハンズオン

  1. 1. 自動テスト・自動デプロイ体感ハンズオン 日本仮想化技術株式会社
  2. 2. 本日の内容 • 事前準備環境の確認 • 環境構築 – 仮想マシンの構成・設定 – GitBucketとJenkinsの連携設定 • 自動テスト・自動デプロイ体験
  3. 3. 事前準備 • VirtualBoxのインストール • Vagrantのインストール • ハンズオン用Gitリポジトリのclone • ハンズオン用Vagrant Boxのダウンロード $ git clone github.com/virtualtech/ci-handson
  4. 4. ディレクトリ構成 ci-handson box jenkins.box gitbucket.box production.box
  5. 5. 環境構築 1. 仮想マシンを構成する 2. GitBucketの設定をする 3. Jenkinsの設定をする 4. GitBucketとJenkinsの連携設定をする 1. Jenkins側の設定 2. GitBucket側の設定
  6. 6. 仮想マシンを構成する • 今回の構成について • Vagrantを用いた仮想マシンの構成
  7. 7. 今回の構成 Gitサーバー : GitBucket CI/CDサーバー : Jenkins デプロイ先サーバー: Tomcat
  8. 8. ネットワーク構成 VM VM VM 192.168.99.0/24 .2 .3 .4 host .1
  9. 9. Vagrantを用いた仮想マシンの構成 $ cd box $ vagrant box add –-name gitbucket box/gitbucket.box $ vagrant box add –-name jeknins box/jenkins.box $ vagrant box add –-name production box/production.box $ cd ../ci-handson $ vagrant up
  10. 10. GitBucketの設定をする 1. GitBucketにアクセスする – http://192.168.99.2 2. サインインする 3. リポジトリを作成する
  11. 11. サインインする Sign inをクリック username root password root
  12. 12. リポジトリを作成する + → New Repository
  13. 13. リポジトリの名称を入力する Repository name: sample Create repository
  14. 14. リポジトリ作成完了画面
  15. 15. Jenkinsの設定をする 1. Jenkinsにアクセスする – http://192.168.99.3:8080 2. JDK/Mavenの設定をする
  16. 16. Jenkinsの管理画面を開く Jenkinsの管理
  17. 17. Jenkinsの設定をする Global Tool Configuration
  18. 18. JDK/Mavenの設定をする 1. JDK追加をクリック 2. 名前に「jdk8」と入力 3. 自動インストールのチェックを外す 4. JAVA_HOMEに「 /usr/lib/jvm/java-1.8.0-openjdk」と入力する 1. Maven追加をクリック 2. 名前に「maven3.0.5」と入力 3. 自動インストールのチェックを外す 4. MAVEN_HOMEに「/usr/share/maven」と入力する Save 設定完了するとトップ画面に戻ります
  19. 19. GitBucketとJenkinsの連携設定 1. Jenkins側の設定 2. GitBucket側の設定
  20. 20. Jenkins側の設定 1. 必要なプラグインを導入する 2. Gitサーバーの情報を設定する 3. ジョブを作成する 4. 認証情報を登録する
  21. 21. 必要なプラグインを導入する プラグインの管理
  22. 22. プラグインを選択する 1.「利用可能」タブ 2.「フィルター」で絞り込み 3.インストールするプラグインにチェックを入れる 4.ダウンロードして再起動後にインストール
  23. 23. インストール画面 「インストール完了後、ジョブがなければJenkinsを再起動する」 にチェックを入れる インストール完了・再起動するとトップ画面に戻ります
  24. 24. インストールするプラグイン • GitHub Organization Folder Plugin • GitBucketと連携するため • Pipeline • テスト・デプロイ手順をテキストで管理するため • SSH Agent Plugin • デプロイでSCPを使用するため
  25. 25. Gitサーバーの情報を設定する システムの設定
  26. 26. Gitサーバーの情報を入力する(1) 1. 「Add GitHub Server」 をクリック 2. API URL: http://192.168.99.2/api/v3/ 3. Credentials 「追加」→Jenkins 保存
  27. 27. Gitサーバーの認証情報を入力する ユーザー名 root パスワード root 追加
  28. 28. Gitサーバーの情報を入力する(2) 1. GitHub Enterprise Servers の 「追加」をクリック 2. API endpoint: http://192.168.99.2/api/v3/ 3. Name: GitBucket
  29. 29. Gitサーバーの情報を入力した結果 Credentialsは「なし」でOK Test connectionはクリックしない
  30. 30. ジョブを作成する 新規ジョブ作成
  31. 31. ジョブの名前と形式を決める GitHub Organization を選択 名前は「sample」と入力 OK
  32. 32. ジョブの詳細を設定する API endpoint GitBucket Owner root Scan credentials root/*** 保存
  33. 33. 認証情報を登録する 認証情報
  34. 34. 認証情報のスコープを選択 「Jenkins」を選択
  35. 35. 認証情報のドメインを選択 「グローバルドメイン」を選択
  36. 36. 認証情報を追加する 認証情報の追加
  37. 37. 秘密鍵を設定する 種類 SSHユーザー名と秘密鍵 ユーザー名 root 秘密鍵 「直接入力」を選択 鍵 pki/id_rsaをコピー 保存
  38. 38. 秘密鍵登録後
  39. 39. GitBucket側の設定 リポジトリ名「sample」をクリック
  40. 40. 設定画面へ移動する 「Settings」をクリック
  41. 41. webhookを追加する 「Service Hooks」タブ 「Add webhook」をクリック
  42. 42. webhookのURLを入力する Payload URL: http://192.168.99.3:8080/github-webhook/ Add webhook
  43. 43. webhook登録後
  44. 44. 自動テスト・自動デプロイ体験 1. サンプルを解凍する 2. Jenkinsfileの認証情報を書き換える 3. テストを書く 4. 対応するコードを書く
  45. 45. サンプルを解凍する $ unzip SampleRepository.zip $ cd SampleRepository
  46. 46. Jenkinsfileの認証情報を書き換える これをコピー SampleRepository/Jenkinsfile 27 sshagent(['6bc5de3d-0f23-4672-af5e-46962ec0411e']) { ここに貼り付け
  47. 47. サーバーにpushする $ git add Jenkinsfile $ git commit –m ‘fix: sshkey’ $ git push origin master
  48. 48. 初回テスト・デプロイ
  49. 49. ブラウザからアクセスしてみる 適当な名前とメッセージを入れて SUBMIT http://192.168.99.4/wui
  50. 50. テストコードを書く 58 /** Additional Feature */ /* 59 @RequestMapping(value = "/post/{post_id}/delete", method = RequestMethod.POST) 60 public Map<String, Object> postDeletePost(@PathVariable("post_id") int id) { 70 Map<String, Object> ret = new HashMap<String, Object>(); 71 postRepository.delete(id); 72 73 ret.put("id", new Integer(id)); 74 ret.put("status", "deleted"); 75 return ret; 76 } 77 //*/ この /* を消す SampleRepository/src/test/java/jp/virtualtech/sample/APIControllerTest.java
  51. 51. サーバーにpushする $ git add src/test/java/jp/virtualtech/sample/APIControllerTest.java $ git commit –m ‘add: delete test’ $ git push origin master
  52. 52. テストが失敗することを確認する テストしかないので失敗する
  53. 53. テストに対応するコードを書く 58 /** Additional Feature */ /* 59 @RequestMapping(value = "/post/{post_id}/delete", method = RequestMethod.POST) 60 public Map<String, Object> postDeletePost(@PathVariable("post_id") int id) { 70 Map<String, Object> ret = new HashMap<String, Object>(); 71 postRepository.delete(id); 72 73 ret.put("id", new Integer(id)); 74 ret.put("status", "deleted"); 75 return ret; 76 } 77 //*/ この /* を消す SampleRepository/src/main/java/jp/virtualtech/sample/APIController.java
  54. 54. サーバーにpushする $ git add src/main/java/jp/virtualtech/sample/APIController.java $ git commit –m ‘add: delete code’ $ git push origin master
  55. 55. テストが成功することを確認する テストに対応するコードを書いたため成功する
  56. 56. ブラウザから動作確認 DEL が動作することを確認

×