『CircleCIオンラインセミナー:はじめてのCircleCI』を受けたときのメモ

5月 14, 2021

CircleCIの入門のオンラインセミナーを受けたので、ささっとメモしておきます。

きっかけは、社内で「みんなどんなCI/CD使ったことある?」って話をしてた時です。
そういえば、Jenkinsしか使ったことがないなとなり、他のも見てみようと思い始めました。

いろいろ調べると、直近でCircleCIのオンラインセミナーがあることがわかったので、ひとまず参加してみようと思ったしだいです。

CI/CDとは

セミナーの話の前に、ざっとCI/CDについておさらいです。

引用で楽をする…(笑)


CI/CDとは「Continuous Integration/Continuous Delivery」の略で、日本語では継続的インティグレーション/継続的デリバリーといいます。CI/CDは1つの技術を指すものでなく、ソフトウェアの変更を常にテストして自動で本番環境にリリース可能な状態にしておく、ソフトウェア開発の手法を意味します。CI/CDを取り入れると、バグを素早く発見したり、変更を自動でリリースしたりできるようになります。
CI/CDには大きく分けてオンプレミス型とクラウド型があり、オンプレミス型としてはJenkins、クラウド型としてはTravis CIやCircleCIなどが有名です。オンプレミス型は一般的に拡張性が高い一方、自分たちで構築・運用する管理コストが発生します。クラウド型は拡張性が低いですが、サーバーなどを自前で用意する必要がなく、すぐに使い始めることができるのが大きな魅力です。

今回のCircleCIはクラウド型ということになります。



以降、セミナーのときのメモです。

CircleCIのおおまかな流れ

  1. GithubへPush
  2. GithubからCircleCIへWebhookが送られる
  3. CircleCIでビルド
  4. デプロイ
  5. ユーザーフィードバック

継続的インテグレーション

流れ

  • リポジトリを作成する
  • circleciにgithubでログイン
  • 左欄->project
    • どのプロジェクトをビルドするか
    • setupprojectをクリック
      • configが編集できる
      • add configでブランチが作成される
      • ビルドが開始される
  • githubでコミットされると、自動でcircleciのビルドが実行される

config.ymlの構造

  • jobs
    • 個々のジョブ定義
  • workflows
    • ジョブを組み合わせたワークフロー定義

ワークフローのタイプ

  • スケジューリング
  • マニュアル承認
  • ブランチ指定
  • タグ指定

ジョブ間のデータ引継ぎ

workspaceを使う
workflowが終了すると消える

依存関係のキャッシュ

restore_cache->save_cache
workflowをまたいで保持される

テストの並列処理

  • どうコンテナに割り振るか
    • 過去の実行結果より、均等になるようにコンテナに割り振る

Serviceコンテナの利用

データベースなど、アプリケーションのテストに必要なコンテナを同一ネットワークに起動する

リソースクラスの指定

起動するコンテナやVMのサイズをジョブごとに指定する

リソースクラス

公式ドキュメントを参照

データの保存

  • テスト結果の保存
    • store_test_results
  • ビルド結果の保存
    • atore_artifacts

効率よくパイプラインを作るには

Tips

  • CLIでスキーマのバリデーションをする
    • ドキュメントを参照
    • config validate
  • 動くかどうかわからないものはSSHビルドで実機で試してみる
    • 空のconfigでSSHビルドONにして試してみる
  • キャッシュやテスト並列化は含まず、まず動くことを確認してから少しづつ高速化していく
  • 最初から複雑なワークフローを作らない
  • 冗長な記述はExecutorやcommandsを使う
    • Commands
      • 複数のステップを人るにまとめてコマンドして管理
    • Executor
      • 実行環境の定義をExecutorとして管理
    • Jobs

継続的デプロイメント

設定のパッケージングと再利用(Orbs)

  • orbsとは、CircleCIの設定を再利用し、さらにそれを自由に配布する仕組み
  • 他の人が書いたものを再利用できる

環境変数とContext

デプロイのためのキーなどはconfigに記載せずに環境変数またはcontextとして設定可能

Dcokerレイヤーキャッシュ

DLCをONにするとDockerイメージがキャッシュされる
別途料金はかかる

参考URL