DjangoでのCI/CDパイプライン設定の完全ガイド

この記事では、DjangoプロジェクトでCI(継続的インテグレーション)/CD(継続的デリバリー)パイプラインを設定する手順を詳細に説明します。具体的なコード例、その解説、さらには応用例を2つ以上含めています。

目次

CI/CDパイプラインとは?

CI/CDは、開発プロセスを効率化し、コードの品質を向上させる一連の自動化手段です。CIがコードのビルドとテストを自動化し、CDがビルド成果物をデプロイするプロセスを自動化します。

なぜCI/CDが必要なのか

CI/CDの導入によって、コードの変更がすぐにテストされ、素早くフィードバックを得ることができます。これにより、バグの早期発見や、新しい機能の迅速なリリースが可能となります。

DjangoプロジェクトでのCI/CDの基本

DjangoでCI/CDパイプラインを設定するには、主に以下のステップがあります。

  • リポジトリにテストを書く
  • ビルドとテストの自動化(GitHub Actions, GitLab CIなど)
  • デプロイの自動化(AWS, Herokuなど)

必要なツール

  • Gitリポジトリ(GitHub, GitLabなど)
  • CI/CDツール(GitHub Actions, GitLab CI, Jenkinsなど)
  • クラウドサービス(AWS, Heroku, GCPなど)

実装手順

以下に、DjangoプロジェクトでCI/CDパイプラインを設定する手順を具体的なコードとともに説明します。

GitHub ActionsでのCI設定

1. リポジトリのルートに`.github/workflows`ディレクトリを作成し、その中に`django.yml`ファイルを作成します。

# .github/workflows/django.yml
name: Django CI

on:
  push:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: 3.8
    - name: Install dependencies
      run: pip install -r requirements.txt
    - name: Run tests
      run: python manage.py test

この設定により、mainブランチにpushされるたびにテストが実行されます。

デプロイの自動化

ここではAWSを使用してDjangoアプリケーションをデプロイする例を紹介します。

1. AWSのEC2インスタンスを作成します。
2. GitHubからコードをクローンします。
3. 必要な環境変数を設定します。
4. Djangoアプリケーションを起動します。

# AWS EC2での設定例
sudo apt update
sudo apt install git python3-pip
git clone your_repo_url
cd your_repo
pip3 install -r requirements.txt
export DJANGO_SETTINGS_MODULE=your_settings
python3 manage.py runserver

応用例

マトリックスビルドで複数バージョンをテストする

GitHub Actionsではマトリックスビルドを使って、複数のPythonバージョンでテストを行うことができます。

# .github/workflows/django_matrix.yml
name: Django Matrix CI

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.7, 3.8, 3.9]

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: pip install -r requirements.txt
    - name: Run tests
      run: python manage.py test

環境に依存しないDockerデプロイ

Dockerを用いることで、環境依存問題を解消できます。

# Dockerfile
FROM python:3.8
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver"]

まとめ

DjangoプロジェクトでのCI/CDパイプラインの設定は、開発の効率化と品質向上に大いに貢献します。この記事で紹介した設定例や応用例を参考に、自分のプロジェクトに適用してみてください。

コメント

コメントする

目次