この記事では、PythonのWebフレームワークであるFlaskを使用してCI(継続的インテグレーション)/CD(継続的デリバリー)を設定する方法について詳しく解説します。具体的なコード例とその解説、応用例を含めています。
はじめに
CI/CDは現代のソフトウェア開発において非常に重要なプロセスです。特にWebアプリケーションの開発においては、頻繁な更新と迅速なデプロイが求められます。今回はFlaskでのCI/CDの設定方法をGitHub Actionsを用いて説明します。
基本的なCI/CDの流れ
継続的インテグレーションと継続的デリバリーの基本的な流れを理解することが、具体的な設定に進む前の第一歩です。
継続的インテグレーション(CI)
CIは、開発中のコードを定期的に統合するプロセスです。
# 一般的なCIの処理フロー
# 1. コードの変更をリモートリポジトリにプッシュ
# 2. 自動テストの実行
# 3. ビルド
# 4. レポートの生成(オプション)
継続的デリバリー(CD)
CDは、CIの結果を自動でプロダクション環境にデプロイするプロセスです。
# 一般的なCDの処理フロー
# 1. テストがパスしたらデプロイの準備
# 2. コードの圧縮、最適化
# 3. プロダクションサーバにデプロイ
FlaskでのCI/CD設定のステップ
GitHub ActionsのYAMLファイルを作成
GitHub ActionsでCI/CDを設定するためには、YAML形式の設定ファイルを作成します。
# .github/workflows/main.yml
name: Flask CI/CD
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.x
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: python -m unittest
YAMLファイルの解説
このYAMLファイルでは以下のような処理が行われます。
1. `main` ブランチにpushされたときにGitHub Actionsがトリガーされます。
2. テストがUbuntu環境で行われます。
3. Python 3.xがセットアップされます。
4. `requirements.txt`から依存関係がインストールされます。
5. unittestが実行されます。
応用例
デプロイ先としてAWSを利用する場合
AWSをデプロイ先として利用する場合、AWS CLIを設定ファイルに追加できます。
# .github/workflows/main.yml
# (前略)
- name: Deploy to AWS
run: |
pip install awscli
aws s3 sync ./static s3://your-bucket-name/
Dockerコンテナとしてデプロイする場合
Dockerを使ってコンテナとしてデプロイする場合も考慮できます。
# Dockerfile
FROM python:3.x
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
まとめ
FlaskでのCI/CD設定はGitHub Actionsを使うことで比較的容易に行えます。設定ファイル一つで様々な環境へのデプロイも自動化できますので、ぜひこの機会に設定してみてください。
コメント