FlaskでのCI/CD設定の実践的ガイド

この記事では、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を使うことで比較的容易に行えます。設定ファイル一つで様々な環境へのデプロイも自動化できますので、ぜひこの機会に設定してみてください。

コメント

コメントする

目次