「コードを書いたら、自動でテストして、本番に反映したい」
そんな理想を実現するのが、CI/CDです。本記事では、GitHub Actionsを使ってPythonコードの自動テスト → 自動デプロイまでを一通り体験できる構成になっています。
この記事でわかること
- CI/CDとは何か、その基本概念
- GitHub ActionsでCI/CDを構築する流れ
- Pythonコードを自動テストする方法(
pytest
使用) - デプロイを自動化する基本的な構成(例:GitHub PagesやFTP)
1. CI/CDとは?|開発を“自動で回す”仕組み
用語 | 意味 |
---|---|
CI(継続的インテグレーション) | プッシュのたびに自動でテスト・ビルドすること |
CD(継続的デリバリー/デプロイ) | テストが通れば自動で本番環境に反映すること |
CI/CDを使えば、手動作業によるミス防止・工数削減・リリース高速化が可能になります。
2. GitHub Actionsとは?
GitHubが提供するCI/CDの仕組みで、.github/workflows
配下にYAMLファイルを置くだけで、自動実行フローが構築可能です。
メリット
- GitHubに統合されていてセットアップが簡単
- 豊富なテンプレートとMarketplaceの存在
- 無料枠でも十分学習・小規模運用が可能
3. サンプルプロジェクトの準備
以下のようなシンプルなPythonコードを使って、自動テストを組み込みます。
app.py
def add(a, b):
return a + b
test_app.py
from app import add
def test_add():
assert add(2, 3) == 5
pytest
でこのテストを通すことが目的です。
4. GitHub Actionsの設定|CI(テスト)部分
フォルダ構成
.github/
└── workflows/
└── python-ci.yml
python-ci.yml
name: Python CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
- name: Run tests
run: |
pytest
このYAMLをコミットすると、main
ブランチへのプッシュやPR時に自動でpytest
が実行されます。
5. 自動デプロイの構成例(GitHub Pagesにデプロイ)
例えば、mkdocs
などで生成した静的サイトを自動デプロイする構成は以下の通り。
deploy.yml(例)
name: Deploy to GitHub Pages
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install and build docs
run: |
pip install mkdocs
mkdocs build
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./site
注意
- GitHub Pagesを使うには、リポジトリの「Settings」から
gh-pages
ブランチを有効にする必要があります。 - 他にもS3、FTP、Herokuなどにも応用可能です。
6. よくあるエラーと対処法
現象 | 対処法 |
---|---|
ModuleNotFoundError | pip install 忘れや依存ファイルが.gitignore 対象か確認 |
Permission denied | トークンの設定(GITHUB_TOKEN やsecrets )を確認 |
Command not found | ランナー上でコマンドが存在しない → 依存をインストール |
7. おわりに|まずは小さく試して、業務自動化へ
CI/CDは初めて触ると難しく感じますが、GitHub Actionsを使えば簡単にスタートできます。
まずはテストの自動化から始めて、少しずつ本番環境への自動反映(CD)にも挑戦していきましょう。