CircleCiの処理を追う
目次
- 1. はじめに
- 2. CircleCIの基本概念
- 3. 環境のセットアップ:Spin up environment
- 4. 環境変数の設定:Build Environment Variables
- 5. 実際のデプロイ処理
- 6. 環境変数のセキュリティ
- 7. まとめ
1. はじめに
CircleCIは、自動化されたCI/CDツールとして人気を博しています。本記事では、CircleCIの処理の流れや内部で何が行われているのかを詳しく追ってみます。
2. CircleCIの基本概念
ワークフロー、ジョブ、ステップの定義
- ワークフロー:ジョブの実行順序や、一連のジョブがどのように連動して動くかを定義します。
- ジョブ:特定のタスク群を実行するための設定です。例えば、テストやデプロイなどのタスクを定義します。
- ステップ:ジョブ内で実行される具体的なコマンドやタスクを指します。
config.yml
の役割とサンプル
config.yml
はCircleCIの設定を定義する中心的なファイルです。以下は一例です。
version: 2.1
orbs:
ruby: circleci/ruby@0.1.2
jobs:
build:
docker:
- image: cimg/ruby:2.7.6
steps:
- checkout
- ruby/install-deps
3. 環境のセットアップ:Spin up environment
スピンアップとは?
スピンアップは、Dockerイメージを基に新しいコンテナを起動するプロセスを指します。このコンテナ内でジョブが実行されます。
DockerとCircleCIの関係
CircleCIのジョブは、指定されたDockerイメージ内で実行されることが多いです。これにより、必要なソフトウェアやツールがプリインストールされた環境で、一貫性を持ってタスクを実行できます。
イメージの選択とカスタマイズ
cimg/ruby:2.7.6
はCircleCIが提供する公式のRubyイメージの一例です。自分自身でカスタムイメージを作成することも可能です。
4. 環境変数の設定:Build Environment Variables
環境変数のソースとその優先度
CircleCIでの環境変数は、以下のソースから取得されます:
- CircleCIのUIでの設定
-
config.yml
での定義 - GitHubリポジトリやその他の外部ソース
CircleCIのUIでの設定
CircleCIのダッシュボードには、プロジェクトごとの環境変数設定セクションがあります。ここでの設定は、セキュリティのために非表示になります。
config.yml
での定義とサンプル
config.yml
での環境変数の設定例:
jobs:
build:
environment:
FOO: "bar"
この例では、FOO
という環境変数に"bar"
という値が設定されます。
5. 実際のデプロイ処理
Capistranoの基本
CapistranoはRuby製の自動デプロイツールです。deploy.rb
や環境別の設定ファイルに、デプロイに関する詳細な設定やタスクを定義します。
CircleCIとCapistranoの連携
CircleCIのジョブの中
で、cap <環境名> deploy
のようにCapistranoを呼び出すことで、自動デプロイを行います。環境変数はCapistranoの設定にも適用されるため、非常に柔軟にデプロイフローを構築できます。
6. 環境変数のセキュリティ
環境変数のマスキング
セキュリティ上の理由から、特定の環境変数(例: APIキー)はログに表示されないようマスキングされます。
ベストプラクティス
環境変数には機密情報を含むことが多いため、これらの情報が漏洩しないよう、定期的にアクセスキーやトークンをローテーションすることが推奨されます。
7. まとめ
CircleCIを最大限に活用するには、その内部の動作や設定方法を深く理解することが不可欠です。本記事を通じて、その基本的な流れやベストプラクティスについて理解を深める手助けとなれば幸いです。