Slide 1

Slide 1 text

1 CircleCIのご紹介 2018/10/31 ソフトウェア開発における CI/CDの重要性とCircleCIの特徴

Slide 2

Slide 2 text

2 車井 登 / Noboru Kurumai Solutions Engineer & Customer Success Engineer @ CircleCI [email protected] 自己紹介

Slide 3

Slide 3 text

CircleCI ● ソフトウェア開発者をターゲットに、より良いコードをより早くデリバリす るためのサービスを提供 ● 2011年に米国サンフランシスコで創業 ● 世界中に170名以上の従業員 REPRESENTATIVE CUSTOMERS

Slide 4

Slide 4 text

4 グローバルで100,000社以上にご利用頂いています

Slide 5

Slide 5 text

5 Why CI/CD? 継続的インテグレーションと継続的デリバリはなぜ必要なのか

Slide 6

Slide 6 text

モダンソフトウェアデリバリの3つの柱

Slide 7

Slide 7 text

モダンソフトウェアデリバリの3つの柱 本番環境

Slide 8

Slide 8 text

モダンソフトウェアデリバリの3つの柱 Continuous Delivery 本番環境

Slide 9

Slide 9 text

継続的デリバリを実現するための要素 課題管理 依存関係管理 アプリケーション フレームワーク コード品質 コードレビュー データストア コミュニケーション ビルド自動化ツール テスト自動化 コンテナレジストリ デバイス&ブラウザテスト 成果物管理 モニタリング ロギング コンテナ オーケストレーション サービス マネジメント 本番環境 スケジューリング &デリバリ セキュリティ

Slide 10

Slide 10 text

10 CI/CDとは - CI (Continuous Integration / 継続的インテグレーション) - CD (Continuous Delivery / 継続的デリバリ)

Slide 11

Slide 11 text

11 継続的インテグレーション - What? 全ての開発者が共有リポジトリにコミットを積み重ね、 全てのコミットをトリガーにしてビルドとテストを繰り返すこと。 これによりテストに失敗した場合に素早く修正することが可能となる。 - Why? チームの生産性・効率・満足度を上げるため。 品質を上げ、スピードを上げ、より安定した製品を生み出すため。

Slide 12

Slide 12 text

12 継続的デリバリー - What? 継続的インテグレーションに加えて、本番環境またはテスト環境に資産が配備され ること。またはデプロイ可能な最新の(新鮮な)資産が常に手元にあること。 - Why? 成果物を素早く顧客に提供し、より早くフィードバックを得るため。 日々変化する市場・顧客の状況に素早く対応するため。

Slide 13

Slide 13 text

13 CI/CDのさまざまな価値 - アジャイルによる開発速度の向上 - マニュアル作業からの開放 - 開発者は小さな変更を(自信を持って)逐次Pushできる - テスト環境の統一による品質向上 - “自分の環境だとテストはパスしました”を失くす - データストアの準備など開発環境での完全なテストが難しくなっている

Slide 14

Slide 14 text

継続的デリバリを実現するための要素 課題管理 依存関係管理 アプリケーション フレームワーク コード品質 コードレビュー データストア コミュニケーション ビルド自動化ツール テスト自動化 コンテナレジストリ デバイス&ブラウザテスト 成果物管理 モニタリング ロギング コンテナ オーケストレーション サービス マネジメント 本番環境 スケジューリング &デリバリ セキュリティ

Slide 15

Slide 15 text

15 Why CircleCI? CIrcleCIの特徴

Slide 16

Slide 16 text

16 CircleCI

Slide 17

Slide 17 text

17 デモ サンプルJavaプロジェクトをCircleCIに登録してCIを開始するまで

Slide 18

Slide 18 text

18 アーキテクチャ

Slide 19

Slide 19 text

19 CircleCIの主な特徴 - ワークフロー - Dockerサポート - 多言語サポート - .circleci/config.ymlでテスト環境を統一 - SSHデバッグ - パラレルジョブ・マルチコンテナ - デプロイ

Slide 20

Slide 20 text

20 ワークフロー ● ステップ: 実行可能なコマンド ● ジョブ: 複数のステップから構成され、実行環境で実行される単位 ● ワークフロー: それぞれのジョブ(ビルド、テストなど)がどのように動くかを定義したもの ● ビルド: ジョブやワークフローの総称 ● ファンアウト・ファンイン : 複数のジョブへの分岐・複数のジョブからの収束

Slide 21

Slide 21 text

21 ワークフローのタイプ ● スケジューリング: ナイトリービルドのように決まった時刻に実行 ● マニュアル承認: ワークフローの一部で自動実行を中断し、手動による承認によって再開 ● ブランチ指定: 特定のブランチへのコミットによって実行 ● タグ指定: Gitのタグによって実行

Slide 22

Slide 22 text

22 Dockerサポート - CircleCIはネイティブでDockerをサポートしています。 - VMによるCIと比べて非常に高速にビルド環境を構築することが可能です。 https://circleci.com/docs/2.0/circleci-images/

Slide 23

Slide 23 text

23 多言語サポート ● Android ● Clojure ● Elixir ● Go (Golang) ● JRuby ● Node.js ● OpenJDK (Java) ● PHP ● Python ● Ruby ● Rust CircleCIでは、下記の言語をサポートした公式Dockerイメージをご提供 https://circleci.com/docs/2.0/circleci-images/

Slide 24

Slide 24 text

24 .circleci/config.ymlでテスト環境を統一 https://circleci.com/docs/2.0/sample-config/ Dockerイメージを指定 コードの取得やテスト内容を ステップとして記述 個々のジョブ定義 ジョブを組み合わせたワークフロー定義 ・連続実行 ・ファンアウト・ファンイン ・スケジューリング ・ブランチ別 ・タグ別 ...等

Slide 25

Slide 25 text

25 SSHデバッグ ビルドに失敗した場合など、SSHデバッグをOnにして再実行することで、 ビルド終了後2時間、もしくはSSHセッションが終わって10分間までは コンテナを起動した状態で維持します https://circleci.com/docs/2.0/ssh-access-jobs/

Slide 26

Slide 26 text

26 パラレルジョブ・マルチコンテナ - パラレルジョブ(1つのジョブを複数のコンテナで並列に実行) - 名前による分割 - ファイルサイズによる分割 - タイミングによる分割 - マルチコンテナ(複数のジョブを複数のコンテナで並列に実行) https://circleci.com/docs/2.0/parallelism-faster-jobs/ https://circleci.com/docs/2.0/workflows/

Slide 27

Slide 27 text

27 デプロイ https://circleci.com/docs/2.0/deployment-integrations/ ● AWS ● Azure ● Capistrano ● Cloud Foundry ● Firebase ● Google Cloud ● Heroku ● NPM ● SSH 下記のクラウド・プラットフォームへのデプロイをサポート

Slide 28

Slide 28 text

28 Twitter CircleCIの最新情報はTwitterで発信しています。ぜひフォローしてください。 ( @CircleCIJapan )

Slide 29

Slide 29 text

29 WEB+DB PRESS Vol.107

Slide 30

Slide 30 text

30 エンジニアのためのCI/CD再入門 https://codezine.jp/article/corner/754

Slide 31

Slide 31 text

31

Slide 32

Slide 32 text

Thank you. 32

Slide 33

Slide 33 text

33