SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
CI/CDツール比較してみた
自己紹介
株式会社ランバーミル

甲斐翔也 @shonari123
経歴
• [専門学校]ヤクザのような恩師にシゴかれる

• [就職]”良い”企業に就職するが数ヶ月で辞めてニートへ

• [再就職]今の会社に就職

最近使う技術
• Java, PHP, MySQL, Vue.js, Firebase
CI/CDってなに?
CI/CDとは
「CI」とは「Continuous Integration(継続的インテグレーション)」の略で、ソフ
トウェア開発におけるビルドやテストを自動化し、継続的に行うアプローチのこと
です。

「CD」とは「Continuous Delivery(継続的デリバリー)」の略で、CIによってテス
トされたコードのマージや、本番環境向けのビルドの作成を自動的に行い、本番環
境にデプロイが可能な状態を整えるプロセスのことです。

また「CD」は「Continuous Deployment(継続的デプロイ)」の略として使われる
こともあります。継続的デプロイは継続的デリバリーとよく似た概念ですが、継続
的デリバリーがデプロイ可能な状態を準備するだけなのに対し、継続的デプロイは
実際に本番環境へのデプロイまでを行う点が異なります。

このようなビルド、テスト、デプロイを自動化し、継続的に行う手法のことを、あ
わせて「CI/CD」と呼びます。
ニフクラ『「CI/CD」とは』(https://pfs.nifcloud.com/navi/words/ci_cd.htm : 2019/07/04)
CI/CDとは
CI: テストやビルドを自動で行うこと

CD: CIがOKだったら自動でデプロイ
すること
Gitホスティングサービス
Push
Pull Request
CI/CDツール
Push, Pull Requestを検知
テスト・ビルドを実行
テスト・ビルドが
通ったらデプロイ
CI/CDの流れ
Init Test
Build
Deploy
checkoutしたり
yarn installしたり
テストとビルドを並列に実行
masterブランチの時のみ
全部通ったらデプロイ
比較するCI/CDツール
•Bitbucket Pipelines

•GitLab CI/CD

•Circle CI
Bitbucket Pipelines
feature/cicd
master
develop merge
checkout
pull request
pull request
commit
merge
ここだけ
チェックする
CI/CDする箇所
設定
「Enable Pipelines」をOnにする

プロジェクトのルートディレクトリに

「bitbucket-pipelines.yml」を作成
yml
yml
環境変数
Docker Image
UnitテストとBuildを
並列に実行
node_modules/を
全体で共有
前回実行した時の
node_modules/をコピー
全てのpull requestで
initとciを実行
cachesを利用するため
ローカルに保存
構文チェック
成功
失敗
コミット一覧
GitLab CI/CD
feature/cicd
master
develop merge
checkout
pull request
pull request
commit
merge
ここだけ
チェックする
CI/CDする箇所
設定
プロジェクトのルートディレクトリに

「.gitlab-ci.yml」を作成
yml
yml
Job
Jobの実行順
stageが同じ名前
だったら並列に処理
masterとプルリク時のみ
実行
Docker Image
環境変数
node_modules/とdist/を
全体で共有
前回実行した時の
node_modules/をコピー
構文チェック
成功
失敗
コミット一覧
Circle CI
feature/cicd
master
develop merge
checkout
pull request
pull request
commit
merge
ここだけ
チェックする
CI/CDする箇所
feature/cicd
master
develop merge
checkout
pull request
pull request
commit
merge
ここだけ
チェックする
CI/CDする箇所
設定
Circle CIにサインイン(サインアップ)しGithub/
Bitbucketアカウントと連携する

プロジェクトに「.circleci/config.yml」を作成
yml
yml
Docker Image
環境変数
node_modules/を保存
前回保存した
node_modules/読み込み
カレントディレクトリを共有
共有されたディレクトリをアタッチ
dist/を共有
masterだけ
で実行
完了を待つjobを指定
同じjobを指定すると
並列になる
構文チェック
成功
失敗
コミット一覧
Bitbucket
Pipelines
GitLab CI/CD Circle CI
ドキュメント
日本語あり

難しい
英語のみ

やや優しい
日本語あり

やや難しい
コンテナ数
無料枠
無制限? 無制限?
1

OSSの場合: 4
ビルド時間/月
無料枠
50分/月 2,000分/月 1,000分/月
キャッシュ あり あり 有料
ビルドにかかった時間 約2分 約5分30秒 約3分
構文チェック Validator

わかりずらい
CI Lint

ややわかりやすい
circleciコマンド

わかりやすい
比較
まとめ
• Bitbucket Pipelines

• !ビルドが一番早い

• "ビルド時間/月が短い(スタンダードプラン: 500分/月)

• Gitlab CI

• !ドキュメントがわかりやすく、ビルド時間/月が一番多い

• "サーバーの混み具合がかなり影響する(早い時は3分弱)

• Circle CI

• !構文チェックは一番わかりやすい

• "filtersにPull Requestを指定できない
ymlをGithubにて公開中!

https://github.com/KaiShoya/CICD-Examples

Mais conteúdo relacionado

Mais procurados

「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
A AOKI
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 

Mais procurados (20)

モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェースモジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
 
GitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみたGitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみた
 
GitLab CI/CD パイプライン
GitLab CI/CD パイプラインGitLab CI/CD パイプライン
GitLab CI/CD パイプライン
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
 
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
UEFIで始めるLinux From Scratch
UEFIで始めるLinux From ScratchUEFIで始めるLinux From Scratch
UEFIで始めるLinux From Scratch
 
DatadogでAWS監視やってみた
DatadogでAWS監視やってみたDatadogでAWS監視やってみた
DatadogでAWS監視やってみた
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 

Semelhante a CI/CDツール比較してみた

CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
Yuki Ando
 
Visual studioonlineとwebサイトで始めるci/cdの第一歩
Visual studioonlineとwebサイトで始めるci/cdの第一歩Visual studioonlineとwebサイトで始めるci/cdの第一歩
Visual studioonlineとwebサイトで始めるci/cdの第一歩
Kazunori Hamamoto
 

Semelhante a CI/CDツール比較してみた (20)

CI(継続的インテグレーション)
CI(継続的インテグレーション)CI(継続的インテグレーション)
CI(継続的インテグレーション)
 
CI to CD、ソフトウェアの継続的アプローチ
CI to CD、ソフトウェアの継続的アプローチCI to CD、ソフトウェアの継続的アプローチ
CI to CD、ソフトウェアの継続的アプローチ
 
XPFes2023_DevOps business-briefing_Hasegawa
XPFes2023_DevOps business-briefing_HasegawaXPFes2023_DevOps business-briefing_Hasegawa
XPFes2023_DevOps business-briefing_Hasegawa
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
CodePipeline入門
CodePipeline入門CodePipeline入門
CodePipeline入門
 
Xcode 7で始めるCI
Xcode 7で始めるCIXcode 7で始めるCI
Xcode 7で始めるCI
 
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD分かったうえではじめるCI/CD
分かったうえではじめるCI/CD
 
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
開発サイクルを爆速にする!~ Azure DevOpsでアプリのビルド・デプロイを自動化 ~
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.
 
Docker Enterprise Editionで実践するCaaS
Docker Enterprise Editionで実践するCaaSDocker Enterprise Editionで実践するCaaS
Docker Enterprise Editionで実践するCaaS
 
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
 
【研究報告】オープンソース開発における継続的インテグレーションの効果を発揮する条件
【研究報告】オープンソース開発における継続的インテグレーションの効果を発揮する条件【研究報告】オープンソース開発における継続的インテグレーションの効果を発揮する条件
【研究報告】オープンソース開発における継続的インテグレーションの効果を発揮する条件
 
JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私
 
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例
GitHubとTravisCIで回す社内ライブラリの継続的インテグレーション事例
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
Visual studioonlineとwebサイトで始めるci/cdの第一歩
Visual studioonlineとwebサイトで始めるci/cdの第一歩Visual studioonlineとwebサイトで始めるci/cdの第一歩
Visual studioonlineとwebサイトで始めるci/cdの第一歩
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationMicrosoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 

CI/CDツール比較してみた