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