【CI/CD入門】GitHub ActionsでPythonコードの自動テストとデプロイをやってみよう

「コードを書いたら、自動でテストして、本番に反映したい」
そんな理想を実現するのが、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. よくあるエラーと対処法

現象対処法
ModuleNotFoundErrorpip install忘れや依存ファイルが.gitignore対象か確認
Permission deniedトークンの設定(GITHUB_TOKENsecrets)を確認
Command not foundランナー上でコマンドが存在しない → 依存をインストール

7. おわりに|まずは小さく試して、業務自動化へ

CI/CDは初めて触ると難しく感じますが、GitHub Actionsを使えば簡単にスタートできます。
まずはテストの自動化から始めて、少しずつ本番環境への自動反映(CD)にも挑戦していきましょう。


関連記事

タイトルとURLをコピーしました