Upgrade to Pro — share decks privately, control downloads, hide ads and more …

はじめてのCircleCI

 はじめてのCircleCI

More Decks by Masahiko Funaki(舟木 将彦)

Transcript

  1. 2 はじめに - 質問がある場合は、いつでも Q&A でお聞きください。 時間の都合上、すべての質問にお答えできない場合が ありますが、できるだけ対応いたします。 - チャットは参加者全員が見ることができますので、

    個人情報、秘密情報は絶対に記載しないでください。 - 終了後アンケートへのご回答をお願いいたします。 アンケートは5分程度で完了します。ご意見やご感想を お聞かせください。
  2. 3 今日のゴール - ソフトウェア開発に CI/CD が必要な理由を理解する - CircleCI の特徴やメリットを知る -

    CircleCI を導入する場合の、CI/CD パイプラインの 設計方法や考え方を知る
  3. 7 継続的 (Continuous) とは • 「コードは常にテストされ、リリース可能な状態である」ためには、 ◦ ビルド、テスト、リリース、デプロイの担当者がいる/いない、同じことをたのんで 申し訳ないといった要因ですぐにできない、抜け漏れが出ることがないように、 ◦

    ビルド、テスト、リリース、デプロイに関しては、コードの追加・修正を起点に 自動実行する(コードを起点に、ビルド以降のフェーズを順次つなげて実行) • 継続的であることにより、 ◦ 問題に早く気が付くことができる、その結果、問題を早く修正することができる ◦ 開発の現況を示すメトリックスを常時、自動的に計測、記録することができる
  4. 9 1. 今すぐに始められる • 自動実行のための環境を用意したり、 ソフトウェアをインストールしなくても、 サインアップすればすぐに使える (Free プランで毎月6,000分まで自動実行可能) •

    コードを格納するリポジトリとして、 GitHub / GitLab / Bitbucket と連携可能 • ビルドやテストを実行する環境として、 Linux コンテナやVM、Windows VM、 macOS 環境、GPU環境 を幅広いスペックで クラウド上に用意 https://qiita.com/mfunaki/items/14080547b352be9d265c
  5. 10 2. 充実したドキュメントとサポート • 日本語のドキュメントや チュートリアル、ビデオなどを 提供 • 日本語での、日本の時間帯に 合わせた技術サポートを提供

    (翻訳や取り次ぎではなく、 サポートエンジニアが在籍) • ドキュメントや過去のサポート 事例をもとに Ask AI で AI が 24時間日本語で対応可能 https://circleci.com/docs/ja/
  6. 11 2. 充実したドキュメントとサポート • 日本語のドキュメントや チュートリアル、ビデオなどを 提供 • 日本語での、日本の時間帯に 合わせた技術サポートを提供

    (翻訳や取り次ぎではなく、 サポートエンジニアが在籍) • ドキュメントや過去のサポート 事例をもとに Ask AI で AI が 24時間日本語で対応可能
  7. 12 3. 自動化+効率化、高速化や品質向上をサポート • 効率化サポート ◦ CircleCI Orb を使った自動化定義の部品化・再利用促進 (よく似た一連の処理を切り出し、変化する部分だけをパラメータで渡す)

    • 高速化サポート ◦ 低スペック~高スペックまでさまざまな実行環境を用意 ◦ 過去100回のテストログをもとに実行時間を平準化した並列実行をサポート • 品質向上サポート ◦ テスト結果分析ダッシュボード「テストインサイト」でテスト実行結果を見える化 • 全社向けルール、監査サポート ◦ 設定ファイルのポリシーを組織に対して適用可能(禁止事項の定義) ◦ 監査ログの提供や CircleCI が使用する IP アドレスを特定の範囲に限定可能
  8. 15 設定ファイル (config.yml) の基本的な構造 個々のジョブ 定義 Dockerイメージを指定 コードの取得やテスト内容を ステップとして記述 ジョブを組み合わせた

    ワークフロー定義 ・連続実行 ・ファンアウト・ファンイン ・スケジューリング ・ブランチ別 ・タグ別 ...等
  9. 17

  10. 19 リソースクラスやサイズを上げて時間を短縮 • Docker, Linux VM(Intel, Arm), Windows VM, macOS

    VM などの プラットフォームに対応 • CPU・RAMをカスタマイズする ことによるパフォーマンス向上 ◦ https://circleci.com/docs/ja/2.0 /configuration- reference/#resource_class • Docker リソースに関しては、 CPU・RAM 使用率を WebUI で 確認することが可能
  11. 22 CircleCI Orb レジストリ • 公開された Orb の一覧 https://circleci.com/developer/orbs •

    命名規約 組織名/Orb名@バージョン番号 • 自組織にのみ公開することも可能 (プライベート Orb)
  12. 24 カスタムリソース 最適なパフォーマンスを発揮し、 スピードを向上するリソースを 選択できます。 (Docker, Linux, macOS, Windows など)

    Docker レイヤーの キャッシュ 高度なレイヤーキャッシュで 実行時間を短縮します。 カスタムキャッシュ 制御可能なキーを使用して、実行され るすべてのファイルをキャッシュし、 ビルドを高速化します。 並列ジョブ 柔軟で自動化されたプロビジョニング により、チームは並列実行を最大限に 活用し、ワークフローが完了するまで 待機するダウンタイムを 短縮できます。 テスト分割 複数のコンテナでテストを自動的に 分割し、RSpec、Cucumber、 minitest、Django、Node などの多く のテストを実行できます 最速でデプロイできるプラットフォーム性能
  13. 25 コードとしてのコンフィグ パイプラインを他のソースコードと 同じように管理。パイプラインで何が起こって いるのかを簡単に理解することができます。 SSH デバッグ ビルドコンテナに SSH 接続して、

    ログファイル、実行中のプロセス、 ディレクトリパスを表示します。 クリーンな環境 自動的にジャストインタイムで プロビジョニングされる クリーンなイメージで、実行を開始できます。 Orbs CircleCIの設定ファイルの一部を パッケージング、共有、再利用することが可能 開発生産性を向上させる強力な機能
  14. 29 SSH を使用したデバッグ 一番良いトラブルシューティングの方法は、ジョブの 実行中にジョブ環境にセキュアにアクセスして問題を デバッグすることです。 ビルド環境に SSH で接続できない場合、開発者が取れる 道はひとつです。開発環境に

    CI/CD 環境を再現して、 アプリケーション、スタック トレース、およびシステム ログだけを頼りに問題を正確に特定し、解決しなければ なりません。 このようなトラブルシューティングでは、開発者も SRE チームも膨大な時間を浪費することになります。
  15. 36 今日のゴール (振り返り) - ソフトウェア開発に CI/CD が必要な理由が理解できた - CircleCI の特徴やメリットが分かった

    - CircleCI を導入する場合の、CI/CD パイプラインの 設計方法や考え方を知ることができた