TechCraft – エンジニアのためのスキルアップメモ

エンジニアのスキルアップを少しでも加速する技術ブログ

CircleCIとは CI/CDの基本

CircleCIとは?CI/CDを自動化する強力なツールの特徴と使い方

1. はじめに

CircleCIは、継続的インテグレーション(CI)および継続的デリバリー(CD) のための人気の高い自動化ツールです。
ソフトウェア開発において、コードのビルド・テスト・デプロイを自動化 することで、開発のスピードと品質を向上させます。

本記事では、CircleCIの特徴、基本的な使い方、応用的な活用方法について解説します。


2. CircleCIの特徴

2.1. 高速なCI/CD環境

  • CircleCIはクラウドベースのサービス を提供しており、高速なビルド・テスト・デプロイが可能。
  • Dockerを活用 することで、環境構築をシンプルにできる。

2.2. 柔軟な設定(YAMLベースのワークフロー)

  • .circleci/config.yml ファイルでCI/CDのフローを定義。
  • シンプルな構文で、複雑なパイプラインも簡単に設定可能

2.3. マルチプラットフォーム対応

2.4. GitHub/GitLabと簡単に統合

  • GitHubやBitbucket との連携がスムーズ。
  • プルリクエストごとに自動テストを実行 し、品質を担保できる。

2.5. 並列処理(パラレルジョブ)

  • テストを並列実行 することで、ビルド時間を短縮。
  • ワークフローの分岐 により、複数のジョブを同時に実行可能。

3. CircleCIの基本的な使い方

3.1. 環境構築

CircleCIを利用するには、以下の手順を実行します。

  1. CircleCIのアカウント作成

  2. リポジトリを追加

  3. 設定ファイルを作成

    • プロジェクトのルートディレクトリに .circleci/config.yml を作成。

3.2. CircleCIの設定(基本編)

以下は、Node.jsプロジェクトのCircleCI設定例です。

version: 2.1

jobs:
  build:
    docker:
      - image: circleci/node:14
    steps:
      - checkout
      - run: npm install
      - run: npm run build

  test:
    docker:
      - image: circleci/node:14
    steps:
      - checkout
      - run: npm install
      - run: npm test

workflows:
  version: 2
  build_and_test:
    jobs:
      - build
      - test:
          requires:
            - build

ポイント - jobsビルドとテストのステージ を定義。 - docker で実行環境を指定(circleci/node:14)。 - workflowsワークフロー(処理の流れ) を設定。 - requires を使い、ビルド後にテストを実行


4. CircleCIの応用テクニック

4.1. Dockerを使ったCI/CD

CircleCIはDockerと組み合わせて使うことで、環境構築を自動化 できます。

Dockerを使ったCircleCIの設定

version: 2.1

jobs:
  build:
    docker:
      - image: docker:latest
    steps:
      - setup_remote_docker
      - checkout
      - run: docker build -t myapp:latest .
      - run: docker run myapp

ポイント - setup_remote_dockerDockerをCircleCI環境で利用可能にする。 - docker build でアプリケーションのイメージを作成。 - docker runコンテナを起動し、動作確認


4.2. パラレルジョブを活用(並列テスト)

CircleCIのパラレルジョブ機能を使うと、テストを並列実行し、ビルド時間を短縮 できます。

version: 2.1

jobs:
  test:
    docker:
      - image: circleci/python:3.8
    parallelism: 4
    steps:
      - checkout
      - run:
          command: pytest --num-processes=4

ポイント - parallelism: 44つのプロセスで並列実行 。 - pytest --num-processes=4複数のテストを並列処理


4.3. AWSへ自動デプロイ

CircleCIを使って、AWS(EC2)へアプリケーションを自動デプロイ できます。

jobs:
  deploy:
    docker:
      - image: circleci/python:3.8
    steps:
      - checkout
      - run:
          name: "Deploy to AWS"
          command: |
            scp -i ~/.ssh/aws-key.pem myapp.zip ec2-user@my-aws-server:/var/www/
            ssh -i ~/.ssh/aws-key.pem ec2-user@my-aws-server "unzip /var/www/myapp.zip && sudo systemctl restart myapp"

ポイント - scpEC2サーバーへファイルを転送。 - sshリモートサーバーの再起動を実行


5. まとめ

機能 特徴
高速なCI/CD クラウドベースで高速にビルド・デプロイ
柔軟なワークフロー YAML形式で簡単に設定可能
Dockerとの統合 コンテナ化された環境でビルド・デプロイ
並列処理 テストを並列実行し、時間を短縮
AWSやHerokuへデプロイ 自動デプロイ機能で本番環境に適用

CircleCIを活用することで、ソフトウェア開発のスピードと品質を向上 させることができます。
CI/CDを導入して、より効率的な開発を実現しましょう!

CircleCI実践入門──CI/CDがもたらす開発速度と品質の両立