ちょっと大阪までおでかけして勉強会に参加してきました。内容を軽くメモ。
長いので感想を先に。
- Jenkinsすごい進化してる!
- Pipeline 使わないと損!
- 新しいBlue ocean UIめっちゃ使いたい!
目次
- 目次
- 参加した勉強会
- はじめに
- 13:45 - 30min 大畔祐輝さん 初めての自動化、Jenkins
- 14:15 - 20min @nobuokaさん Jenkins Pipeline Plugin と Android アプリ開発 (仮)
- 14:35 - 30min @kazuhito_mさん 実録!隣のJenkins2
- 15:15 - 30min 川口耕介さん Jenkins 2.0の紹介
- 15:45 - 30min James Dumayさん Blue ocean UI
- 16:30 - 45min @Posauneさん Travis, Circle, そしてJenkins 2.0
- まとめ
参加した勉強会
はじめに
Jenkins1.xは趣味でも仕事でも使っていました。 でも2.xはインストールしただけで全然使ってません。
2.0になってどーかわったのかなーってのが気になったので参加しました。
13:45 - 30min 大畔祐輝さん 初めての自動化、Jenkins
遅刻したので途中から参加。
GitBucketにあるリポジトリをJenkinsで取得してビルドする。
ってのを初めてやってみた!って発表。
- Jenkinsのインストールは簡単!
- 知らなくてもなんとかなる
- プラグインによってはヘルプがおかしい
- はじめてでも自動ビルドまでできた
14:15 - 20min @nobuokaさん Jenkins Pipeline Plugin と Android アプリ開発 (仮)
NOBUOKAさん
- https://twitter.com/nobuoka
- はてなの中の人
- Android / UWP
- Web (Scala Java TypeScript Perl0
- Android版はてなブックマークとか
Pipeline Plugin
- ジョブの流れをコードで表現
- GroovyによるDSL
- Pipeline pluginにより実現
Pipeline Pluginの以前との比較
以前は
- Shellスクリプトにゴリゴリ書く
- 複数のJenkinsジョブを組み合わせる
複数ジョブ組み合わせて〜ってやってましたわ・・・
PipelinePluginだと
- リポジトリで処理の流れを管理できる
- 柔軟に複雑な処理をかける
- 失敗箇所がわかりやすい
デモ
- 新規プロジェクト作成(マルチブランチパイプライン)
- Gitで複数のブランチを使って開発してる時に便利
- ブランチごとに状況が見れる
Androidのテスト
- Android SDKのセットアップ
- SDKコンポーネントのインストール
- エミュレータ起動
- テスト実行
- エミュレータ終了
- とか。
ビルドの成否を通知
- Slack
- GitHub
これまでの知見
オススメ構成(Git x 複数ブランチ)
- PipelinePluginのMultiBranchプロジェクト
- Branch sourceとしてGitリポジトリを指定
- GitリポジトリにJenkinsfileをコミット
- ここにJenkinsのジョブの処理を記述
RejectedAccessExceptionが発生
- セキュリティのためのエラー
- 管理者が許可しないと使えない
- Jenkinsの管理 -> InProcessScriptAprovalを許可
Shellスクリプトの標準入出力やエラー出力はファイルを介す
めんどいね。Issue立ってるらしい。
publishHtmlのパラメータ
Snippet Generatorで生成したGroovyスクリプトが間違ってるらしい
これもIssue立ってるらしい。
AndroidManifest
- ファイルパスがエスケープされない
- / => %2F
- 例外が発生してAndroidビルドがとまる
なぜかMultibranchのときだけ発生する。
まとめ
Pipeline使うと幸せになれるよ!
資料
14:35 - 30min @kazuhito_mさん 実録!隣のJenkins2
三浦カズヒトさん
- https://twitter.com/kazuhito_m
- Jenkins大好き
- フリーランス
この人の話を聞きたくて来た
実Jenkins!
- ズンドコボタン
- Jenkins 1.xも2.xも両方入れて試す!
すげー早口だけど面白かったw
Jenkins1.xの場合
やること
- テスト→ビルド→開発環境にデプロイ→(人間の判断で)本番にデプロイ
デモ
- Jenkinsインストール 5分ぐらい
- Job3つ作ってつなぐ。ゴリゴリ書く。これで開発環境デプロイ完了
- 本番環境デプロイ
- Build Other Project Manual Style?みたいなものがあるらしい
これが伝統的な1.x Style。
自分もずっとこの感じでやってた。
Jenkins 2.xの場合
デモ
- Jenkinsアンインストール
- Jenkins 2.9.1.1をインストール(yum経由)
- Jenkins起動
- 1.xからアップデートした人用のプラグインインストール画面が出る
- 既存のJob実行(1.xからのジョブがそのまま動く)
- 新規Job作成画面が項目増えてる
- ジョブ(フォルダ作成)
- これいいな!
- ジョブ作成(パイプラインを2.0に移植)
- ジョブ名日本語使えるのか
- サンプルいくつかあり
- すげー書きやすそう
- 結果も見やすい
- 人間の判断で本番デプロイ。はできるのか?
- もちろん。→Groovyスクリプトに書いていく。
- 書き方はPipelineSyntaxというヘルプを見ればわかる。
- Generate Groovy でスクリプト生成される。→コピペ
- めっちゃ使いやすそう
- JenkinsfileをGitにPush
- ソースファイルにJenkinsfileを含むことができる。
- 超便利
まとめ
- 2.0のジョブ:Pipeline いい!
ほんとよかった。これは使う。
資料
www.slideshare.net
15:15 - 30min 川口耕介さん Jenkins 2.0の紹介
- 川口さん
- Jenkins生みの親
- CloudBees
- Jenkins 100k突破
- Jenkins、次の10年どうするか
Jenkins利用の拡大
- Jenkinsの用途の拡大
- ビルドだけでなくデプロイ、運用まで
- どこまで達成したか?
- CIまでが6割
- CD + 手動デプロイ 3割
- CD + 自動デプロイ 1割
CIだけでなくCDまで行えるように
- パイプライン
今後10年
- GUIで操作→NG
- コード化(As Code) が必要
パイプラインを作ってみよう
- すでに前の2人紹介したのでパスw
- Jenkinsfile == パイプラインスクリプト
- 並列処理
- クリーンナップ作業
- 人間の作業を含める
- 実行結果の表示
GitHub Organization Folder
- JenkinsにGitHubのOrganizationを教えておくだけで、Jenkinsfileを見つけて勝手に判断してくれる。
- 利点
- Jenkinsの設定は一度だけ
- Jenkinsfileをコミットするだけ
- ブランチ別のビルド履歴
- プルリクエストの自動ビルドと結果の通知
誰でも書けるように
- Snippet
- ドキュメント
パイプラインの抽象化と再利用
- container_build 'jenkinsinfra/bind'
パイプラインまとめ
- 複雑な処理にうってつけ
- テキストでかくのでバージョン管理
- ジョブが多くてもテンプレート化
- Jenkinsを再起動しても続く
Jenkins再起動しても続くってマジか!!!
UIの改善
- ジョブ作る画面とか
- 設定画面のタブ分けとか
「要組み立て」からの脱却
- Jenkinsを初めて使う人は組み立てが必要
- 最初は玄人向けだったからよかった
- 普及が進んできて敷居が高くなってきた
- 最初から8割の要求を満たす
- インストール時におすすめプラグインを出すのはそういう意図
ドキュメンテーション
ユーザーを守る
- 鍵のかかっていないJenkinsを狙うBOT
- 最初から安全なデフォルト
後方互換生
- コアは1.xと同系列
- 今までと同じアップデートの仕方で!
Jenkins 2.0まとめ
- Pipeline
- UI
- 要組み立てからの脱却
- セキュリティ
- CI -> CD
15:45 - 30min James Dumayさん Blue ocean UI
- ジェームスさん
- オーストラリアから
BlueOcean
- Jenkinsの新しいUI
- JenkinsのUIは10年変わっていない
- UIは使ってて楽しいものじゃないといけない
- Jenkinsをもっと簡単に使えないといけない
新しいダッシュボード
- ジョブ一覧
- 状態
- お気に入り
- 大事な情報のみ表示
- 意図的に情報量を減らしている
パイプライン
- パイプラインで起こっている全てを一覧できる
- ブランチごとの確認も
- ほとんどの場合最新のビルド結果さえ分かればよい
- PullRequestタブ
- プルリクエストの情報を表示できる
- 裏で動いているのは既存のパイプライン
パイプラインの処理結果
- どのステージで失敗しているかが一目瞭然
- ログをステップごとに分割して表示できる
- 失敗したパイプラインを見ている時、失敗部分に最初から注目できる
成功したパイプライン
- All Green
- 必要なものだけを見せる
パーソナライズ
- ダッシュボードを開発者1人1人のためにカスタマイズできる
- お気に入りのパイプライン、関連するパイプラインに関する情報だけを表示するとか
- 入力が必要なパイプラインを先頭に表示とか
- 実行中のパイプラインとか
- 結果によって表示順も変わる
- リロードをJenkinsから排除できた!
実物のデモ
- 開発中のバージョンのBlueOceanをデモ
- お気に入り押した時のアニメーションとかこだわってる
- pixelレベルの作り込みが積み重なって大きな経験の違いとなる
- より簡単に使えるようにしたい
感想
Blue Oceanすごい。これは使う。
16:30 - 45min @Posauneさん Travis, Circle, そしてJenkins 2.0
@Posauneさん
- ギルドワークス株式会社
- 前川さん
- ALM(Application Lifecycle Management)エンジニア
- アプリケーションの一生を面倒見る
ギルドワークス
- GuildWorks -ギルドワークス-
- アジャイル開発
Jenkinsの功績と課題
- 自動化を当たり前に
- 職人技から自動ビルドの世界へ
- 豊富なプラグイン
- 自動化の一例
- ビルド・テスト・デプロイ
- 定期的なファイル収集
- 簡易ChatBot
- アップデート自動配信
- Jenkinsすごい
- 結果的にJenkinsの設定が職人技になる
- Jenkins職人の誕生
Jenkins一択時代の終焉とCI Serviceの波
- Jenkins以外を選択できるようになった
- GitHubを始めとしたソースコードをオープンな場所に置くことが一般化した
- ビルドもオープンに
- CI as a Serviceとは?
- クラウド上で構築されたビルドサーバ
- Circle ci / wercker / bitrise / vs online とかとか
- ビルド・デプロイごとにフレッシュなVMを起動する仕組み
Jenkins 2.0のブレイクスルー
- 推奨構成の導入
- できるだけ推奨構成だけで実行できるようにする
- まずはPipelinePluginとDSLでできないか考える
- Docker pipeline plugin
- フレッシュなVM
CIサービス事情
- どんどん値上げしてる
- サービス自体止まることもある
- なんでもかんでもCIServiceで、、、は辛くなってきた
Jenkins 2.0
- CI Serviceからの影響を大きく受けている
- さらに導入の気軽になってきている
- クラウド上にCIファームを作るという選択肢も
これからのCI
- 職人化したJenkinsはどこかで区切り
- 自分たちにあったCI/CDを考えよう
まとめ
Jenkinsすごい進化してた。 使ってみよう。
登壇された皆様お疲れ様でしたー。