第10回 Jenkins勉強会
https://www.meetup.com/ja-JP/Tokyo-Jenkins-Area-Meetup/events/240833004/
改訂第3版Jenkins実践入門
Pipeline as Code
ビルドをDSLで記述
Jenkinsfileという名前でバージョン管理できる
ScriptedPipeline
GroovyDSL
やや上級者向け
DeclarativePipeline
宣言的に、かつブロックベースでPipelineが記述できる
初心者向け
"第十章Pipelineの設定"
BluOcean
UIの改善 * GUI Pipeline Editor
Pipeline Visualization
Git/Github Integration
Personalization
ロードマップ
JenkinsfileとBlueOceanのどっちがいい?
Jenkinsのいいところはプラグインアーキテクチャ
チームのスタイルに合わせる
Java関連ツールのバージョンアップ
Python,Ruby
Docker
Dockerにinstall
Dockerをビルドエージェントにする
ChatOps
Backlog/TFS
Rebuildfm #161
Multibranch Pipeline with Docker 入門編
SVN→Git
GUI→
Parametarized→
GUIは変更履歴が追いづらい
→PipelinePlugin
Pipelineプロジェクト
PluginがPipelineに対応している必要がある
→メジャーどころはだいたい対応済み
PypelineSyntax
GUIからStepを自動生成
特定ノードでしか動かない部分を作らない
GUIだと変更が即反映されるので動作確認しずらい
日々増えるブランチをどう管理すればいいのか?
→ Multibranch Pipeline
Gitのブランチごとにジョブを作成してくれる
ブランチごとにJenkinsfileを持てるので、Pluginを試せる
デフォルトはビルド履歴はすべて保存される!
不要なブランチはこまめに消そう
→DiskUsagePlugin
PRを扱うには
GithubBranchSourcePlugin
ビルドはクリーンなコンテナで行いたい
slave毎に乖離ができる…
→Docker
DockerPlugin
DockerPipelinePlugin
シェルでDockerを動かす
開発者のローカル環境で動かせるように
Dockerfile
各種ライブラリをインストールしたイメージを作成する
DockerコマンドをMakefileにまとめるとJenkinsfileの見通しが良くなる
まとめ
Pipelineでジョブをコードとして構成管理できる
Multibranch
Docker
巨大不明ビルド
巨大不明ビルドと戦う
通知周りをどうする?
APIを叩く
ポーリングしないといけない
ジョブごとに設定がいる
Websoketplugin
pushしてもらう
Slack
ジョブごとに設定がいる
ServerSentEvents GateWay Plugin
ステージごとに通知できる
Jenkins側での設定は不要
Multibranch Pipelineでいろいろ学んだこと
変更があったブランチやPRをビルド
Webhook設定を忘れがち
Multibranchでも手動
Githubの設定に注意
ブランチの設定箇所
→条件によって使い分ける
JenkinsとLint
Jenkinsファイル
たまにしか書かないから構文を間違える…
→公式Linterがある
実行方法
SSH
curl
使いにくいからnpmiパッケージ作った!
jflint
無用な死を避ける!
本番環境のリリースを自動化した話
まだWinSCPで消耗しているの?(言ってみたかった)
サービスを早く改善→リリースを自動化→ビジネス価値
固い組織で
検証環境で実績作り
同じ手順で本番へ
ビルド職人にお金を!
プルリクエストCI時のTIPSとJenkinsおじさん
プルリクエストCI?
メインブランチにマージする前に、PRのブランチでテスト
TIPS
自動PRジョブ作成
backlog-multibranch-plugin
backlogと連携できる
複数リポジトリにまたがったPR
Jenkinsfile職人
画面ぽちぽち系がへった
こったことをしようとするとJenkinsや周辺知識がそれなりに必要
インフラ、ビルドツール
コード化によって以前より抽象度が高い・高度なものが実現しやすくなっている。
Jenkinsおじさんがこの先生き残るには
Jenkins+αで攻める
Jenkins職人芸を磨いていく