2
0

More than 1 year has passed since last update.

CircleCiの処理を追う

Last updated at Posted at 2023-09-11

CircleCiの処理を追う

目次

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での環境変数は、以下のソースから取得されます:

  1. CircleCIのUIでの設定
  2. config.ymlでの定義
  3. 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を最大限に活用するには、その内部の動作や設定方法を深く理解することが不可欠です。本記事を通じて、その基本的な流れやベストプラクティスについて理解を深める手助けとなれば幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0