9.3 CI/CD パイプラインの構築 (GitHub Actions) #
この記事では、PythonのWebフレームワークであるFlaskと、サーバレスコンピューティングサービスであるAWS Lambda、それを接続するためのZappa、そしてGitHub Actionsを使用して、継続的インテグレーション/継続的デプロイメント(CI/CD)パイプラインを構築する方法について説明します。
前提条件
- PythonとFlaskに基づいたWebアプリケーションが存在すること
- AWSアカウントがあり、AWS Lambdaを利用できること
- GitHubアカウントがあり、リポジトリが作成できること
1. GitHub Actionsの設定 #
.github/workflowsディレクトリを作成し、その中にCI/CDワークフローファイル(例えばmain.yml)を作成します。以下はその一例です。
name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install zappa flask
- name: Zappa Deploy
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
zappa deploy production
この設定ファイルにより、mainブランチへのpushイベントが発生すると、CI/CDパイプラインがトリガーされます。このパイプラインでは、まず、Python 3.8をセットアップし、その後必要な依存関係をインストールします。最後に、Zappaを使用してアプリケーションをデプロイします。
注意点として、AWS_ACCESS_KEY_ID
とAWS_SECRET_ACCESS_KEY
はGitHubのSecretsから取得され、ZappaがAWSにアクセスできるように設定されています。
2. デプロイの確認 #
このパイプラインをセットアップしたら、コードの変更をmainブランチにプッシュしてみましょう。GitHubは自動的にアクションを開始し、結果はActionsタブで確認できます。
Zappaはデプロイが成功したかどうかに応じて、ステータスコードを返します。これにより、CI/CDパイプラインが成功したかどうかをGitHub Actionsが判断できます。
3. パイプラインの調整 #
この基本的なパイプラインは、あなたのアプリケーションの必要性に応じてさらに拡張や調整が可能です。たとえば、テストステージを追加して、デプロイ前に自動テストを実行することが可能です。
# ...
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run tests
run: |
python -m pytest
# ...
これにより、すべてのテストがパスするまでデプロイがブロックされ、品質を維持することができます。
以上が、Flask, AWS Lambda, ZappaとGitHub Actionsを利用したCI/CDパイプラインの基本的な構築手順です。このパイプラインは、開発チームがより速く、より安全にリリースを行うための一助となるでしょう。