Publicité

Contenu connexe

Présentations pour vous(20)

Similaire à 入門!Jenkins(20)

Publicité
Publicité

入門!Jenkins

  1. 入門! Jenkins 構築からユースケースまで 0 @tarosaiba
  2. 注意 1 本資料は、Jenkinsサーバをチームメンバに 引き継ぐ際に個人的に作成した資料になります 従って、読み手は私のチームメンバーを想定しています
  3. 自己紹介 2  齋場 俊太朗 (さいば しゅんたろう)  インフラ ~ CI回り担当 (新卒3年目) 配属からずっとAWS、今はオンプレ  Future Architect, Inc. Technology Innovation Group所属 (OSS Vulsとか)  Qiita 記事 “EC2上にHoneypot(T-Pot)をインストールして サイバー攻撃をELKで可視化してみた。” @tarosaiba
  4. コンテンツ 3  What is Jenkins?  Jenkinsを構築しよう  Jenkinsを使ってみよう  Jenkinsのユースケースいろいろ  自動化に対する考え方
  5. What is Jenkins?
  6. 5 Jenkinsは、CIツールです
  7. Continuous integration (CI)とは 6  継続的インテグレーション(CI)とは、インテグレーション(ビルド⇒テスト⇒デプロ イのプロセス)を自動化し継続的に行うこと コミット テスト/ インスペクション デプロイ ビルド
  8. Continuous integration (CI)とは 7  継続的インテグレーション(CI)とは、インテグレーション(ビルド⇒テスト⇒デプロ イのプロセス)を自動化し継続的に行うこと コミット ビルド テスト/ インスペクション デプロイ
  9. 8 人間は、 絶対にミスる
  10. 9 だから自動化しましょう
  11. Continuous integration (CI)とは 10  継続的インテグレーション(CI)とは、インテグレーション(ビルド⇒テスト⇒デプロ イのプロセス)を自動化し継続的に行うこと コミット ビルド テスト/ インスペクション デプロイ
  12. Jenkinsは 11 https://jenkins.io/
  13. Jenkinsは 12 https://jenkins.io/ 簡単に使える! 拡張性がすごい! とりあえず..
  14. Jenkinsの基本の型 13  Jenkinsの基本はこれだけ。あとは応用です。 バージョン管理システム サーバJenkins
  15. Jenkinsの基本の型 14  この基本の形で、いろいろなことができちゃいます バージョン管理システム サーバJenkins ビルド デプロイ・リリース テスト コミット
  16. 15 このお方いろいろできます https://www.cloudbees.com/
  17. 16 このお方いろいろできます Jenkins様がやられておられることは単純で 様々なツールを”連携”させて、”自動で実行”しているだけです https://www.cloudbees.com/
  18. 17 Jenkins自体は全然難しくありません ただ、内部で呼んでいる個々のツール (mavenとか)が 難しい場合があるだけ
  19. まとめ Who is Jenkins 18  Jenkinsとは、CIツールです。  ソフトウェアのビルド、テスト、サーバへのリリース等の一連作業を自動化する事 が出来ます  Jenkins自体ができることは、様々なツールを”連携”させて、”自動で実行”だけで す。
  20. Jenkinsを構築しよう
  21. 20 Jenkins使ってみたいけど サーバが構築できない? プロキシとか、DNSとか、NWの設定とか、、
  22. 21 Jenkinsサーバ 構築しちゃいましょう!
  23. こんな感じの構成でサーバ構築します 22  社内ネットワークにJenkinsサーバを構築する前提です  この構成で構築する際の手順を説明していきます 社内ネットワーク Jenkins サーバ 社内 SCMサーバ 社内 Proxyサーバ 社内 DNSサーバ internet
  24. Jenkinsサーバ構築に必要なもの 23  Jenkinsサーバの中は以下のような構成になります。  それぞれのレイヤーで必要な設定を説明します 物理/仮想マシン OS OS設定 Java Jenkinsサーバ Jenkins GitClient SVNClient
  25. Jenkinsサーバ構築に必要なもの 24  Jenkinsサーバの中は以下のような構成になります。  それぞれのレイヤーで必要な設定を説明します 物理/仮想マシン OS OS設定 Java Jenkinsサーバ Jenkins GitClient SVNClient  サーバを用意してください  メモリは8GB以上あった方が無難です  社内NWに接続できるやつで
  26. Jenkinsサーバ構築に必要なもの 25  Jenkinsサーバの中は以下のような構成になります。  それぞれのレイヤーで必要な設定を説明します 物理/仮想マシン OS OS設定 Java Jenkinsサーバ Jenkins GitClient SVNClient  OSをインストールします  ここではCentOS6.8 を採用します  インストールメディアを用意してインストールしましょ う  ※ Cent6.8の理由はチームの都合です
  27. Jenkinsサーバ構築に必要なもの 26  Jenkinsサーバの中は以下のような構成になります。  それぞれのレイヤーで必要な設定を説明します 物理/仮想マシン OS OS設定 Java Jenkinsサーバ Jenkins GitClient SVNClient  以下を設定しましょう – NW (IP,DGW) – Proxy – NTP – DNS
  28. Jenkinsサーバ構築に必要なもの 27  Jenkinsサーバの中は以下のような構成になります。  それぞれのレイヤーで必要な設定を説明します 物理/仮想マシン OS OS設定 Java Jenkinsサーバ Jenkins GitClient SVNClient  JenkinsはJavaで動くのでJavaをインストールしま しょう
  29. Jenkinsサーバ構築に必要なもの 28  Jenkinsサーバの中は以下のような構成になります。  それぞれのレイヤーで必要な設定を説明します 物理/仮想マシン OS OS設定 Java Jenkinsサーバ Jenkins GitClient SVNClient  Jenkinsをインストールしましょう
  30. Jenkinsサーバ構築に必要なもの 29  Jenkinsサーバの中は以下のような構成になります。  それぞれのレイヤーで必要な設定を説明します 物理/仮想マシン OS OS設定 Java Jenkinsサーバ Jenkins GitClient SVNClient  JenkinsでSCMにアクセスするためのクライアントツー ル(Git&SVN)をインストールしましょう
  31. 30 面倒なので自動で構築させましょう
  32. Ansibleで構築します 31  Ansibleが動くサーバを用意して、Playbookを実行してJenkinsサーバ構築します  ※ Ansibleとは? は別資料を参照してください 社内ネットワーク Jenkins サーバ Ansibleが 動くサーバ  Ansibleで操作できるように 以下だけは設定 – OSユーザ – NW (IP,DGW)
  33. 32 詳細はソースコードを参照
  34. 33 Jenkins 動きました!
  35. まとめ Jenkinsを構築しよう 34  Jenkinsを構築するのは簡単です  簡単ですが、いろいろ面倒なのでAnsibleを使って構築を自動化しましょう
  36. Jenkinsを使ってみよう
  37. 36 何をすればよいの?
  38. 37 “ジョブ” を作ってみましょう
  39. ジョブとは? 38  ジョブは、Jenkinsで処理を自動化する際の単位です。  以下の設定項目(構成要素) があります ジョブ ソースコード管理 General (一般設定) ビルドトリガ ビルド ビルド後の処理 設定項目 (構成要素)  名前だとか、説明文だとかを設定します  ビルドパラメータも設定できます  処理のインプットとなるソースコードを チェックアウトする設定をします  ジョブ実行のトリガーを設定します  処理の内容を設定します ここがメインです  完了した後に行う処理を設定します ビルド環境  ジョブ実行時のオプションを設定します
  40. ジョブの設定 (General) 39 ソースコード管理 General (一般設定) ビルドトリガ ビルド環境 ビルド後の処理 押えておく最低限の設定 プロジェクト名を指定 パラメータ化も可能 日本語の表示名を設定可能 ビルド
  41. ジョブの設定 (ソースコード管理) 40 押えておく最低限の設定 SCMの種類を選択 チェックアウトする Gitのリポジトリ(project)指定 チェックアウトする SVNのリポジトリ(パス)指定 ソースコード管理 General (一般設定) ビルドトリガ ビルド環境 ビルド後の処理 ビルド
  42. ジョブの設定 (ビルドトリガ) 41 押えておく最低限の設定 ソースコード管理 General (一般設定) ビルドトリガ ビルド環境 ビルド後の処理 ジョブが実行されるトリガーを設定可能 ・ 他のプロジェクト(ジョブ)の後にビルド ・ 定期的に実行 : cronのように使える ・ Gitlabのイベント(マージ)を検知してビルド ・ Subversionの更新を検知してビルド ビルド
  43. ジョブの設定 (ビルド環境) 42 押えておく最低限の設定 ソースコード管理 General (一般設定) ビルドトリガ ビルド環境 ビルド後の処理 そこまで重要な設定はないです ビルド
  44. ジョブの設定 (ビルド) 43 押えておく最低限の設定 ソースコード管理 General (一般設定) ビルドトリガ ビルド環境 ビルド後の処理 ビルド ジョブで実行する処理を定義します。以下が主な用途です ・ Ant/Mavenの呼び出し ・ スクリプトの実行
  45. ジョブの設定 (ビルド後の処理) 44 押えておく最低限の設定 ソースコード管理 General (一般設定) ビルドトリガ ビルド環境 ビルド後の処理 ジョブ実行後の処理を定義します。 うちのチームで使うのは以下が主になるかと思います。 ・ JUnitテスト結果の集計 ・ Javadocの保存 ・ 他のプロジェクトのビルド ・ 成果物(jar,war)を保存 ・ E-mail通知ビルド
  46. ジョブの実行フロー 45  ジョブの実行は以下のようなフローで行われます ビルドトリガ ソースコード チェックアウト ビルド 後処理 実行 ジョブの流れ ビルド処理
  47. ジョブの実行フロー 46  ジョブの実行は以下のようなフローで行われます ビルドトリガ ソースコード チェックアウト ビルド 後処理 実行  設定したトリガーでジョブがキックされます  特にトリガーを設定していない場合は、WebUIからジョブ実行 ボタンを押して実行します ビルド処理
  48. ジョブの実行フロー 47  ジョブの実行は以下のようなフローで行われます ビルドトリガ ソースコード チェックアウト ビルド 後処理 実行  処理のインプットとなるソースコードやドキュメントをチェック アウトします  インプットが必要なければスキップされます ビルド処理
  49. ジョブの実行フロー 48  ジョブの実行は以下のようなフローで行われます ビルドトリガ ソースコード チェックアウト ビルド処理 ビルド 後処理 実行  メインの処理です  定義した処理が実行されます – ビルド – テスト – リリース – 等々
  50. ジョブの実行フロー 49  ジョブの実行は以下のようなフローで行われます ビルドトリガ ソースコード チェックアウト ビルド処理 ビルド 後処理 実行  メインの処理の後に実行される処理です  定義した処理が実行されます – 成果物、テスト結 果 を保 存 する – フィードバックの メ ール を 送信 す る – 後続のジョブを実 行 する – 等々
  51. デモ
  52. まとめ Jenkinsを使ってみよう 51  Jenkinsを使う = ジョブを作る です  ジョブの中では、連携できるプラグインが膨大にありますが 基本的に使用するものは限られています  用途に合わせて、設定をしていきましょう  プラグインを使いこなせば、どんなことでも自動化できるはず!きっと
  53. ユースケースいろいろ
  54. 53 “INPUT/OUTPUT” を意識するべし それだけでOKです。
  55. ユースケース 54  ソースコードをビルドする INPUT OUTPUT コンパイル モジュールソースコード
  56. ユースケース 55  ソースコードをビルドしてテストする INPUT OUTPUT テスト テスト結果ソースコード
  57. ユースケース 56  モジュールをサーバにデプロイする INPUT OUTPUT デプロイ サーバモジュール
  58. ユースケース 57  Excelからソースコードを自動で生成してSCMにコミットする INPUT OUTPUT ソースコード生成 ソースコードExcel
  59. ユースケース 58  ソースコードのチェックを行い、フィードバックMailを送信する INPUT OUTPUT ソースチェック フィードバックソースコード
  60. ユースケース 59  サーバから情報を取得して、レポートを出力する INPUT OUTPUT 情報収集 レポートサーバ
  61. いろいろありますが
  62. 結局どうなっているかというと 61 INPUT OUTPUT 何か 何か
  63. 結局どうなっているかというと 62  中ではツール(プログラム)が動いている INPUT OUTPUT 何か 何か
  64. 63 Jenkinsは ツール(プログラム)を呼び出すだけ
  65. 64 逆に言えば、コマンドで実行可能なことは Jenkinsで自動化可能 さらに逆に言えば、Jenkinsで自動化するには コマンドで実行可能する必要がある
  66. 65 結局、コマンドたたいてくれる ただのおじさんじゃね..??
  67. 66 そうとは言わせません
  68. 67 そのため、Jenkinsには 膨大の数のプラグインがあります https://plugins.jenkins.io/
  69. まとめ ユースケースいろいろ 68  Jenkinsのジョブ設計・構築で意識するのは “INPUT/OUTPUT”  Jenkinsはツール(プログラム)を呼び出すだけ  コマンド実行可能な処理はJenkinsで自動化可能  逆に、Jenkinsで自動化するにはコマンド実行可能な処理にする必要あり  Jenkinsには膨大な数のプラグインが用意されています。  それをうまく使って自動化を進めていくのが吉です。
  70. 自動化に対する考え方
  71. 自動化するかしないか 70  定型作業を自動化するかどうかを考える ・・・ コスト 月日 ・・・ いつものコスト
  72. 自動化するかしないか 71  自動化するためのコストと削減できるコストがある ・・・ コスト 月日 ・・・ いつものコスト 自動化するためのコスト 削減できるコスト
  73. 自動化するかしないか 72  自動化する OR しない どちらかを選択する際の観点 自動化する 自動化しない 自動化するための コスト 運用の変化の 重み 削減できる コスト オペミスの削減 効果 変化しないリスク 変化するリスク
  74. 自動化すれば 73  自動化が進めば余剰の時間が生まれ、さらなる自動化を進められる。  ※ あくまでも理想 作業の自動化 コスト削減 手作業がなくなる 余剰の時間が生まれる
  75. 74 そんなに、甘くない。
  76. ブラック ボックス 気を付けないといけないこと 75  自動化の処理がブラックボックスになってしまうと、、、 INPUT OUTPUT 何か 何か わからない
  77. 気を付けないといけないこと 76 運用自動化、不都合な真実 20171212 by opelab https://speakerdeck.com/opelab/20171212-automation 運用自動化をしっかり実現するには 使う人が自分で作るしかない、という結論
  78. 77 それでも、自動化を進めていくべき だと私は考えています
  79. 自動化するかしないか 78  自動化する OR しない どちらかを選択する際の観点 (私の考え) 自動化する 自動化しない 自動化するための コスト 運用の変化の 重み 削減できる コスト オペミスの削減 効果 変化しないリスク 変化するリスク
  80. 79 ちょっと煽りますが m(_ _)m
  81. 自動化するかしないか 80  自動化する OR しない どちらかを選択する際の観点 (私の考え) 自動化する 自動化しない 自動化するための コスト 運用の変化の 重み 削減できる コスト オペミスの削減 効果 変化しないリスク 変化するリスク 今、自動化ツールは次々と進化しています 私たちは、お客様の業務をシステム化するIT企業なのに その波に乗り遅れてよいのか
  82. 81 Jenkinsで簡単なことから 自動化進めましょう
  83. まとめ 自動化に対するの考え方 82  今までの作業を自動化する or そのままを検討する必要あり  もし、自動化が成功すれば良いサイクルが回り始める (はず)  しかし、自動化してもそれがブラックボックスになってしまってはダメ  ブラックボックスにせず、まずは簡単なところから自動化進めましょう
  84. 83 おわり だいぶ煽ってしまいましたが 人は時間が割けない背景は重々承知です。ごめんなさい。 ただ、少しでも自動化が進んでチームが幸せになれるのを祈っています
Publicité