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