Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHub X CircleCIで実現するDevOps: CircleCI 資料
Search
Kim, Hirokuni
January 29, 2019
2
830
GitHub X CircleCIで実現するDevOps: CircleCI 資料
共同セミナー:GitHub X CircleCIで実現するDevOpsでCircleCIから発表した資料です。
https://peatix.com/event/582857
Kim, Hirokuni
January 29, 2019
Tweet
Share
More Decks by Kim, Hirokuni
See All by Kim, Hirokuni
How We Migrated K8S Without Downtime
kimh
0
180
エンジニアが起業する意味: 起業経験ゼロから電動キックボード 事業を創る話
kimh
0
1.1k
K8sとTraefikでつくるマイクロフロントエンド
kimh
14
2.7k
CI/CDを使い倒して数段上のソフトウェア開発をしよう (デブサミ関西)
kimh
2
920
デブサミ福岡: CI/CDを使い倒して数段上のソフトウェア開発をしよう
kimh
0
500
CircleCI 2.0を支える2つの コンテナクラスターとSRE
kimh
6
6.1k
なぜ今CI/CDがアジャイル組織に必要とされるのか?
kimh
0
330
CircleCI 2.0を支える2つのコンテナクラスター
kimh
2
4.4k
CircleCI 2.0を支えるインフラとSREの役割
kimh
5
2.2k
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Producing Creativity
orderedlist
PRO
341
39k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Building Your Own Lightsaber
phodgson
103
6.1k
A Philosophy of Restraint
colly
203
16k
Agile that works and the tools we love
rasmusluckow
328
21k
Transcript
1 CI/CDとは何か? なぜ今必要なのか?
2 CI/CD 戦国時代 Google GCP Cloud Build Microsoft Azure Pipelines
AWS CodeBuild
3 自己紹介: Kim, Hirokuni (金 洋国) - 元CircleCI 開発者 -
CircleCI Japan Tech Lead
4 自己紹介 CodeZineで記事を書かせていただきました
5 CI/CD概要
6 CI/CDとは - CI (Continuous Integration / 継続的インテグレーション) - CD
(Continuous Delivery / 継続的デリバリ)
7 継続的インテグレーション - What? 全ての開発者が共有リポジトリにコミットを積み重ね、 全てのコミットをトリガーにしてビルドとテストを繰り返すこと。 これによりテストに失敗した場合に素早く修正することが可能となる。 - Why? チームの生産性・効率・満足度を上げるため。
品質を上げ、スピードを上げ、より安定した製品を生み出すため。
8 CIでできること • テスト実行 • コードのビルド • 静的コード解析 • 脆弱性チェック
• テストサマリー
9 CIが解決する問題 • 全てのコミットに対してCIする ◦ 早い段階でバグを発見できる ◦ 設定で制御可能 • 静的解析などでの標準化
◦ コードの品質UP • テスト失敗したコードのマージブロック ◦ masterブランチの安全保証
10 継続的デリバリー/デプロイメント - What? 継続的インテグレーションに加えて、本番環境またはテスト環境に資産が配備され ることを継続的デリバリーという。デプロイはあくまで人間が手動で行う。この作業 をさらに自動化することを継続的デプロイメントという。 - Why? 成果物を素早く顧客に提供し、より早くフィードバックを得るため。
日々変化する市場・顧客の状況に素早く対応するため。
11 継続的デリバリー (CD) vs 継続デプロイメント(CD) - 継続デプロイメントはデプロイの自動化までするのに対し、継続デリバリーはデプロ イに人間の手が入る - ただし、広義ではEnd
To Endの自動化を継続的デリバリーと呼ぶこともある。
モダンソフトウェアデリバリの3つの柱
モダンソフトウェアデリバリの3つの柱 本番環境
モダンソフトウェアデリバリの3つの柱 本番環境
15 様々な問題点 • ヒューマンエラー • デプロイ作業の属人化 • エンジニア工数 • ロールバック
モダンソフトウェアデリバリの3つの柱 Continuous Delivery 本番環境
17 CI/CDによる改善 • 常に同じ処理をCI/CDが行う • コードによる作業の明文化 • 自動で行われる • 迅速なロールバック
• ヒューマンエラー • デプロイ作業の属人化 • エンジニア工数 • 遅いロールバック
18 Puppet: State of DevOps Report 2018 Puppet社が30,000人に対する調査結果を公開(内、6-7%が日本) 業績が上がった上位11%を「高」、下位10%を「低」、それ以外を「中」で分類 デプロイパターンの再利用
業績(低) 業績(中) 業績(高) いつも 2% 14% 46% ほとんど 7% 44% 47% ときどき 34% 33% 6% たまに 40% 8% 1% 一度もない 18% 1% - テストパターンの再利用 業績(低) 業績(中) 業績(高) いつも <1% 10% 44% ほとんど 6% 38% 48% ときどき 32% 39% 7% たまに 40% 11% <1% 一度もない 21% 2% - 業績の良い企業は、 44倍テストパターンを再利用し、 23倍デプロイパターンを再利用している https://puppet.com/resources/whitepaper/state-of-devops-report
19 CircleCIの最新機能紹介
20 CircleCIの主な特徴 - ワークフロー - Dockerサポート - 多言語サポート - .circleci/config.ymlでテスト環境を統一
- SSHデバッグ - Orbs
21 ワークフロー 柔軟なパイプラインを構築が可能
22 ワークフローのタイプ • スケジューリング: ナイトリービルドのように決まった時刻に実行 • マニュアル承認: ワークフローの一部で自動実行を中断し、手動による承認によって再開 • ブランチ指定:
特定のブランチへのコミットによって実行 • タグ指定: Gitのタグによって実行
23 Dockerサポート - CircleCIはネイティブでDockerをサポートしています。 - VMによるCIと比べて非常に高速にビルド環境を構築することが可能です。 - ただし、Dockerの知識がなくても使いはじめることができます。 https://circleci.com/docs/2.0/circleci-images/
24 多言語サポート • Android • Clojure • Elixir • Go
(Golang) • JRuby • Node.js • OpenJDK (Java) • PHP • Python • Ruby • Rust CircleCIでは、下記の言語をサポートした公式Dockerイメージをご提供 https://circleci.com/docs/2.0/circleci-images/
25 .circleci/config.ymlでテスト環境を統一 https://circleci.com/docs/2.0/sample-config/ Dockerイメージを指定 コードの取得やテスト内容を ステップとして記述 個々のジョブ定義 ジョブを組み合わせたワークフロー定義 ・連続実行 ・ファンアウト・ファンイン
・スケジューリング ・ブランチ別 ・タグ別 ...等
26 SSHデバッグ ビルドに失敗した場合など、SSHデバッグをOnにして再実行することで、 ビルド終了後2時間、もしくはSSHセッションが終わって10分間までは コンテナを起動した状態で維持します https://circleci.com/docs/2.0/ssh-access-jobs/
27 デプロイ https://circleci.com/docs/2.0/deployment-integrations/ • AWS • Azure • Capistrano •
Cloud Foundry • Firebase • Google Cloud • Heroku • NPM • SSH 下記のクラウド・プラットフォームへのデプロイをサポート
28 Orbs: CircleCIの新しいエコシステム https://circleci.com/docs/2.0/deployment-integrations/ Before After https://circleci.com/orbs/registry/ • 他の開発者のOrbsの利用 •
誰でもOrbsを登録できる • 将来はプライベートOrbs
29 CircleCI Japanの紹介
CircleCI • ソフトウェア開発者をターゲットに、より良いコードをより早くデリバリす るためのサービスを提供 • 2011年に米国サンフランシスコで創業 • 世界中に170名以上の従業員 • 2018年1月にシリーズC($31M)を調達。合計で$59.5M(≒66億円)
REPRESENTATIVE CUSTOMERS
31 グローバルで100,000社以上にご利用頂いています
32 2018/19 CI/CD動向 古株のCI/CDプレイヤーの買収: - Wercker: Oracle - Travis CI:
Idera - CodeShip: Cloud Bees 大手からの新しいプレイヤーの参入 - GCP Cloud Build: Google - AWS CloudBuild: Amazon/AWS - Azure Pipelines: Microsoft
33 2018.06.11 CircleCI Japan発足 @CircleCIJapan https://www.faceboo k.com/groups/218073 5222207131/
34 日本語サポート https://support.circleci.com/hc/ja
35 日本語ドキュメント https://circleci.com/docs/ja/2.0
36 その他日本語での情報
37 ユーザーコミュニティー @CircleCIJapan https://www.facebook.com/grou ps/2180735222207131/
Thank you. 38 Optional Name