Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy

15.172 Aufrufe

Veröffentlicht am

第7回大阪Jenkins勉強会(2016/06/18)
第9回(東京)Jenkins勉強会(2016/08/10)
で発表させて頂いたスライドに「ボツ稿」を加えたものです。(時間:35分)

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

「実録!となりのJenkins2.0」 - 第7回大阪 / 第9回(東京)Jenkins勉強会 #jenkinsstudy

  1. 1. 第9回Jenkins勉強会 & 第7回大阪Jenkins勉強会 実録!となりの Ver 2.0
  2. 2. Part.1 アンタだれ?
  3. 3. 自己紹介 • 通称:みうみう,「なんで来たん?」氏 • Twitter:@kazuhito_m • Github:kazuhito-m • 老害度:38歳、独身、意識低い系 • 職業:プログラマ(SIer、ビジネスアプリ 属),自動家(オートメータ) – フリーランス,屋号「みうらさんとこ」 • 好きなもの:自動化,「継続的なんとか」 – CI/CDとか大好物 – 「楽する」ためには「苦労は厭わない」 三浦 一仁(ミウラ カズヒト)
  4. 4. 自己紹介 • 通称:みうみう,「なんで来たん?」氏 • Twitter:@kazuhito_m • Github:kazuhito-m • 老害度:38歳、独身、意識低い系 • 職業:プログラマ(SIer、ビジネスアプリ 属),自動家(オートメータ) – フリーランス,屋号「みうらさんとこ」 • 好きなもの:自動化,「継続的なんとか」 – CI/CDとか大好物 – 「楽する」ためには「苦労は厭わない」 三浦 一仁(ミウラ カズヒト) 最近は… 「現場のみなさんとともに 現場のみなさんの手で 現場とプロダクトを 良くしてく」 のお手伝いがしたい
  5. 5. あれっ?
  6. 6. 自己紹介 • 通称:みうみう,「なんで来たん?」氏 • Twitter:@kazuhito_m • Github:kazuhito-m • 老害度:38歳、独身、意識低い系 • 職業:プログラマ(SIer、ビジネスアプリ 属),自動家(オートメータ) – フリーランス,屋号「みうらさんとこ」 • 好きなもの:自動化,「継続的なんとか」 – CI/CDとか大好物 – 「楽する」ためには「苦労は厭わない」 三浦 一仁(ミウラ カズヒト) 最近は… 「現場のみなさんとともに 現場のみなさんの手で 現場とプロダクトを 良くしてく」 のお手伝いがしたい オレおらんでも 成るんじゃね?
  7. 7. Part.2 ナンデキタン? (本日の目的)
  8. 8. トツゼンですが アンケートです
  9. 9. みなさんを知りたい • みなさんは今日どんな感じですか? ①Jenkinsを今から始める ②Jenkinsは使ってるがJenkins2は 触ってない(今回、学びにきた) ③Jenkins2を使ってる ④Jenkins生んだ、あるいは作ってる
  10. 10. ありがとう ございます。 …で、アンタは?
  11. 11. 登壇させて頂いてなんですが… •不詳みうら、 「Jenkins大好き!」 は公言しているものの…
  12. 12. 一番下 is オレ
  13. 13. オレを知ってもらおう • みなさんは今日どんな感じですか? ①Jenkinsを今から始める ②Jenkinsは使ってるがJenkins2は 触ってない(今回、学びにきた) ③Jenkins2を使ってる ④Jenkins生んだ、あるいは作ってる
  14. 14. なので 本日は…
  15. 15. 「こんな感じ」を… • みなさんは今日どんな感じですか? ①Jenkinsを今から始める ②Jenkinsは使ってるがJenkins2は 触ってない(今回、学びにきた) ③Jenkins2を使ってる ④Jenkins生んだ、あるいは作ってる
  16. 16. 「こんな感じ」を… • みなさんは今日どんな感じですか? ①Jenkinsを今から始める ②Jenkinsは使ってるがJenkins2は 触ってない(今回、学びにきた) ③Jenkins2を使ってる ④Jenkins生んだ、あるいは作ってる オレ式パイプラインを Jenkins「1」と「2」で 作るところを観て頂くことで… みなさま-「となりの人のやり方」 オレ-「未だとなりのしばふの2.0」 を見てみましょう!
  17. 17. ただ あくまでも 「オレの知識のみでやる」ので… 「ソレちゃうで!」 あったら後で教えて下さい。
  18. 18. Part.3 本日やること (かけ足で)
  19. 19. 多分…無茶言うてるな 対象アプリ紹介 軽くパイプライン設計 Jenkinsインストール ・設定 Jenkins1で パイプライン作成 Jenkins2へ アップグレード Jenkins2で パイプライン作成 オレ、ドヤ顔!
  20. 20. 多分…無茶言うてるな 対象アプリ紹介 軽くパイプライン設計 Jenkinsインストール ・設定 Jenkins1で パイプライン作成 Jenkins2へ アップグレード Jenkins2で パイプライン作成 オレ、ドヤ顔! を、 35分 でっ! とか無理なんで 動画とか 駆使しながら
  21. 21. Part.4 実Jenkins! (実技)
  22. 22. 対象アプリ紹介 軽くパイプライン設計 Jenkinsインストール ・設定 Jenkins1で パイプライン作成 Jenkins2へ アップグレード Jenkins2で パイプライン作成 オレ、ドヤ顔! 4-1. 対象アプリ紹介 対象アプリ紹介
  23. 23. 4-1.対象アプリ紹介 • ズンドコボタン with DB – http://kazuhito-m.github.io/zundoko-kiyoshi-ts/ –(ちょっと嘘、同機能のサンプルページ) • 今回使う「すべて」のソースはこちら – https://github.com/exemplary-buildpipeline-projects/jenkins1-2-sample
  24. 24. 4-1.対象アプリ紹介 DB ボタン押すたび、 JSONで 保存命令投げる。 (端末ごと) w 画面初期表示時 JSONで 以前の状態取得 (端末ごと) Logic ロジックは、 ほぼTypescript(js) で画面側に サーバ側はSpring-boot でRESTとDBアクセス のなかだちするだけ The InternetLocal
  25. 25. 4-1.対象アプリ紹介 DB Logic The InternetLocal 環境的には… 本番サーバ zndk.jpn.ph 開発サーバ zndkdev.jpn.ph Jenkinsサーバ jenkins2.jpn.ph
  26. 26. 4-1.対象アプリ紹介 • 予め仕込んであるもの –Jenkins用サーバ1台、デプロイ用サーバ(開発、本 番)の2台を起動済み • 「Amazon Linux」にて構築 • DDNSで名前付け • 全サーバにssh,8080のポート穴あけ –Jenkinsサーバに以下のパッケージ • Git,java-1.8.0-openjdk –Jenkinsサーバに 「自分->デプロイサーバへ接続の秘密鍵」 を/etc/key.pem に配置 –sshコマンドを「確認不要で接続」出来る設定
  27. 27. 対象アプリ紹介 軽くパイプライン設計 Jenkinsインストール ・設定 Jenkins1で パイプライン作成 Jenkins2へ アップグレード Jenkins2で パイプライン作成 オレ、ドヤ顔! 4-2. Jenkins インストール・設定 Jenkinsインストール ・設定
  28. 28. 4-2.Jenkinsインストール・設定 • デモ動画(youtube)
  29. 29. 4-2.Jenkinsインストール・設定 • インストール –AWS(Amazon Linux)上に本家Jenkinsからrpmにて •古いのを入れるためあえてrpmをcurl等で DL/Inst • プラグインインストール –Jenkins-cliでAsCode •Build Pipeline Plugin •Git Plugin •Clone Workspace SCM Plugin • ツール設定 –Mavenは「最新をダウンロード」するように
  30. 30. 対象アプリ紹介 軽くパイプライン設計 Jenkinsインストール ・設定 Jenkins1で パイプライン作成 Jenkins2へ アップグレード Jenkins2で パイプライン作成 オレ、ドヤ顔! 4-3.軽くパイプライン 設計 軽くパイプライン設計
  31. 31. 4-3.軽くパイプライン設計 テスト ビルド 開発環境 っぽいとこに デプロイ 本番に デプロイ 人間の判断 前ジョブの 成果物 受け継ぎ 前ジョブの 成果物 受け継ぎ GitHubにソース ソースの 変化を 検知!
  32. 32. 対象アプリ紹介 軽くパイプライン設計 Jenkinsインストール ・設定 Jenkins1で パイプライン作成 Jenkins2へ アップグレード Jenkins2で パイプライン作成 オレ、ドヤ顔! 4-4. Jenkins1で パイプライン作成 Jenkins1で パイプライン作成
  33. 33. 4-4.Jenkins1でパイプライン作成 • デモ動画(youtube)
  34. 34. 4-4.Jenkins1でパイプライン作成 • 基本、以下の感じで作る –ジョブを小分けにする • 成果物だけ継ぐ –「後続ジョブ」としてつなげる –「Build Pipeline Plugin」でビュー作ってお く • (少し前ですが)こことか良くまとまっていい感じ♪ –最期、本番デプロイだけ「人の意思」挟む • “Build Pipeline Plugin”の ”Build other projects (manual step)” を使う
  35. 35. 対象アプリ紹介 軽くパイプライン設計 Jenkinsインストール ・設定 Jenkins1で パイプライン作成 Jenkins2へ アップグレード Jenkins2で パイプライン作成 オレ、ドヤ顔! 4-5. Jenkins2へ アップグレード Jenkins2へ アップグレード
  36. 36. 4-5.Jenkins2へアップグレード • デモ動画(youtube)
  37. 37. 4-5.Jenkins2へアップグレード • このデモでの「アップグレード」方針 –RPMをアンインストールして、 本家yumリポジトリからインストールし直し • データの場所は「デフォルト」だから、引き つでいくれる…ハズ
  38. 38. 4-5.Jenkins2へアップグレード • やり方 (以下はすべてrootユーザにて実行) – RPMをアンインストール • service jenkins stop • rpm -e jenkins – Yumリポジトリで「Jenkins本家」を加えインストール • curl http://pkg.jenkins-ci.org/redhat/jenkins.repo > /etc/yum.repos.d/jenkins.repo • rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.or g.key • yum install -y jenkins • service jenkins start
  39. 39. 4-5.Jenkins2へアップグレード 長年使って来た人だけが見ることが出来る アップデート促し画面 (○in10とかとは爪の垢でも煎じて飲m(ry)
  40. 40. 4-5.Jenkins2へアップグレード • 変わる箇所 –「Pipeline」「GitHub Organization」 「Multibranch Pipeline」「Folder」など のジョブ種が増える –「いくつかのプラグインをインストールす る」よう促される –“Jenkinsの管理”画面が整理され、 ”Global Tool Configuration”など 一部画面が独立している
  41. 41. 4-5.Jenkins2へアップグレード • 「新規で2.0を立上げた場合」変わる箇所 –一回だけ「サーバ内部からファイルを 取ってこい」って言われる –ログイン必須になる –「有用プラグイン」は「プリインストー ルする」よう促される
  42. 42. 対象アプリ紹介 軽くパイプライン設計 Jenkinsインストール ・設定 Jenkins1で パイプライン作成 Jenkins2へ アップグレード Jenkins2で パイプライン作成 オレ、ドヤ顔! 4-6.Jenkins2で パイプライン 作成 Jenkins2で パイプライン作成
  43. 43. 4-6.Jenkins2でパイプライン作成 • デモ動画(youtube)
  44. 44. 4-6.Jenkins2でパイプライン作成 • ジョブ種「Pipeline」で、 先ほど作ったのと同様のパイプラインを作る! –元は「Workflow Pluguin」だった機能を2.0で本 体に標準装備になったもの –Groovyライクな 「パイプラインを作るためのDSL」を使う •制限ありGroovyやJavaっぽくは使えない •正式名称だれか教えて下さい –ググるの難しい… –個人的には「ジェンキンスクリプト」と呼んでいる –「パイプラインスクリプト」 (Pipeline Script)という呼称
  45. 45. 4-6.Jenkins2でパイプライン作成 • 「今までPluginでやってたことをDSLで書 けるかどうか」確認 –こちらの一覧が使えます •https://github.com/jenkinsci/pipel ine-plugin/blob/master/COMPATIBILI TY.md –「書き方」は各Pluginのサイトで
  46. 46. One more thing... (この先に進むなら?)
  47. 47. 5.この先に進むなら? 1.gitの複数ブランチ対応 –2.0の新ジョブ種 「Multibranch Pipeline」を使う • リポジトリ一つまるごと監視する –全リモートブランチのpushに反応 –直下に置いた”Jenkinsfile”を実行 2.デプロイ環境をgitブランチごとに生成 –ここは自力で作る –仮想OS/コンテナ技術/Cloudなどを用い 「開発環境のデプロイ先」を都度生成 • JenkinsはDockerを使う手段が豊富
  48. 48. Part.6 個人的感想
  49. 49. .個人的感想 • 2.0の「Pipeline」ジョブ&DSL、 いいですね! –AsCodeできて「そのプロダクト側に 紐づく」のが超好み • 「ジョブ」がAsCode&VCSで管理したいって ずっと思ってた。 –みなさん、 使ってくれるとうれしいです! • 日本語情報的な意味で
  50. 50. 実録!となりの Jenkins2.0Jenkins2.0リリースリリース おめでとうございます!おめでとうございます! 第9回Jenkins勉強会 & 第7回大阪Jenkins勉強会
  51. 51. ボツ稿 (実際の発表は 前のページまで) ここからは本編外
  52. 52. トラブル 発生!
  53. 53. 4-4.Jenkins2へアップグレード • そのままじゃ「ちゃんとした2.0に成らなかった」箇所 –※2016/06/18現在 –「いくつかのプラグインをインストールする」すると き「依存性の問題」でインストールがこけた •Pipline plugin,GitHub Organization –エラーを読む限りでは「structs1.1」というプラグイ ンが足りないぽいので、入れた •画面上にもないので、サイトからhpiファイルをダ ウンロードしてインストール –場合によっては「Plugin全部アップデート」したほう が良い(かも?) • 1系のインストールからやり直したら、上手く行った
  54. 54. 5-1. gitの複数ブランチ 対応
  55. 55. 5-1.gitの複数ブランチ対応 • デモ動画(youtube)

×