Contenu connexe
Similaire à JenkinsとCodeBuildとCloud Buildと私 (20)
JenkinsとCodeBuildとCloud Buildと私
- 2. 自己紹介
白鳥 昇治(シロトリ ショウジ) / @irotoris
データエンジニア@リクルートライフスタイル
社内データ分析基盤/データパイプラインの開発を担当(分析もします)
Docker ❤ Kubernetes ❤ CD/CI ❤ Serverless ❤ BigData
- 14. AWS CodeBuild ???
マネージドなコンテナベースのビルド実行環境
- 指定したランタイムのコンテナや自作コンテナを実行
- ビルド成果物はECRやS3へ保存
分単位の従量課金、無料枠あり
yamlでコマンドや処理順序を記述していく
選べるインスタンスタイプ、並列実行もOK
AWS Codeシリーズと組み合わせてCI/CDパイプラインを作る、そのパーツ
Jenkinsプラグイン(https://github.com/awslabs/aws-codebuild-jenkins-plugin)
- 15. Google Cloud Build ???
マネージドなコンテナベースのビルド実行環境
- 指定したランタイムのコンテナや自作コンテナを実行
- ビルド成果物はGCRやGCSへ保存
分単位の従量課金、無料枠あり
yamlでコマンドや処理順序を記述していく
選べるインスタンスタイプ、並列実行もOK
CI/CDパイプラインとしても使える
Jenkinsプラグイン(https://github.com/jenkinsci/google-cloudbuild-plugin)
- 16. JenkinsとCodeBuildとCloud Buildと私
どこまでCodeBuild / Cloud Buildにまかせるか??
1. CI / CDパイプライン全部。もうJenkinsいらないやつ。
2. ビルド実行環境のみ。Jenkinsからビルドサービスをキックする。
Cloud
Build
Build / UT Deploy - Dev
Integration Test
UI Test
Deploy - Prd
Build / UT Deploy - Dev
Integration Test
UI Test
Deploy - Prd
Cloud
Build
Cloud
Build
Cloud
Build
Cloud
Build
Cloud
Functions
- 17. JenkinsとCodeBuildとCloud Buildと私
どこまでCodeBuild / Cloud Buildにまかせるか??
1. CI / CDパイプライン全部(もうJenkinsいらないやつ)
2. ビルド実行環境のみ。Jenkinsからビルドサービスをキックする。
→現状、オンプレ+マルチクラウド
→インフラのビルドやデプロイは同じ場所で統合されたパイプラインにしたい
→でもコンテナだけのデプロイは統合しなくても OK
→デプロイ単位に応じてどっちも試す
● コンテナのビルド・デプロイとかの単発ジョブで済むやつ →1
● ビルド・テスト・Devデプロイ・Prdデプロイ、とパイプラインが長いやつ →2
- 25. CodeBuild / Cloud Buildのいいところ
yamlでビルドステップが書ける、シンプルな構成
ビルド高速化Tipsがある
● ステップの並列実行が簡単に設定可能
● Container Registory、S3 or GCSをキャッシュ置き場として使える
ビルドマシンのリソースマネジメントがいらない
API経由での実行ができる、CIサーバーから切り離されたリソースとして使える
- 26. CodeBuild / Cloud Buildのかゆいところ①
Cloud BuildはGithub EnterpriseからWebhookで連携できない
● JenkinsがHubとして大活躍
○ APIでCloud Buildを実行
○ JenkinsがGoogle Cloud Source Repository(GCSR)へGit Push、GCSRからCloud Buildをキック
CodeBuild / Cloud Buildではビルド/テスト結果の統計レポート機能が乏しい
● Jenkinsがビルド/テスト成果物を表示
● 結果確認はSlackで頑張る
- 27. CodeBuild / Cloud Buildのかゆいところ②
CodeBuild / Cloud BuildはSlack Integration機能がない
● LambdaやCloud Functionで通知機能作ればOK
● CloudWatch Event、Cloud Pub/Subでビルドステータスが取得可能
CodeBuild / Cloud Buildでは複雑なパイプラインは表現しきれない
● 条件による分岐など。結局 Shellで書くことに。
● そもそも「Build」サービスだし。
パイプラインの可視性に乏しい
● やっぱりJenkinsのBlue Oceanがナンバーワン!
- 28. まとめ
AWS CodeBuild / Google Cloud BuildにJenkinsのビルド実行環境を委譲して得られ
るもの
● Jenkins Agentのインスタンス・ランタイム・パッケージ管理からの解放
● CI用の権限強めのアクセスキーの発行・管理がなくなる
● Jenkinsプラグイン管理の最小化
● (実行環境がスケールするCron)
- 29. まとめ
AWS CodeBuild / Google Cloud BuildにJenkinsのビルド実行環境を委譲して得られ
るもの
● Jenkins Agentのインスタンス・ランタイム・パッケージ管理からの解放
● CI用の権限強めのアクセスキーの発行・管理がなくなる
● Jenkinsプラグイン管理の最小化
● (実行環境がスケールするCron)
あともう少し…残りの問題は高可用性なJenkins Masterだ!!
To Be Continued...