2026-04-30·実装·⏱ 約 7 分
GitHub Actions で ML プロジェクトに CI/CD を ─ 30 分入門
テスト ・ Lint ・ モデル学習 ・ 自動デプロイ を GitHub Actions で自動化する手順。Python ML プロジェクトのテンプレートをそのまま流用できる形で。
GitHub Actions は GitHub リポジトリに付属する CI/CD 基盤。`.github/workflows/*.yml` を置くだけで自動実行され、Pull Request チェック ・ 自動デプロイ ・ 定期実行など何でもできます。MLOps の入口として最適。
Hello World ─ Lint と Test
.github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Install
run: pip install -r requirements.txt -r requirements-dev.txt
- name: Lint
run: ruff check .
- name: Type check
run: mypy src
- name: Test
run: pytest -v --cov=srcコミット push → 自動で Lint ・ 型チェック ・ テストが走る。失敗すれば PR がブロックされる。
ML 学習パイプライン
.github/workflows/train.yml
name: Train Model
on:
push:
paths:
- 'data/**'
- 'src/train.py'
jobs:
train:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install
run: pip install -r requirements.txt
- name: Pull data with DVC
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: dvc pull
- name: Train
run: python src/train.py
- name: Evaluate
run: |
python src/evaluate.py --threshold 0.85
- name: Upload model
uses: actions/upload-artifact@v4
with:
name: model
path: model.pklシークレット管理
API キー ・ AWS 認証情報 ・ DB パスワードは GitHub Secrets に保管。`Settings → Secrets and variables → Actions` から登録 → `${{ secrets.NAME }}` で参照。
定期実行(Cron)
毎週月曜の朝にモデル再学習
on:
schedule:
- cron: '0 9 * * 1' # UTC 9:00 月曜 = 日本 18:00 月曜自動デプロイ ─ Vercel と連携
Vercel デプロイ
name: Deploy to Vercel
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.ORG_ID }}
vercel-project-id: ${{ secrets.PROJECT_ID }}
vercel-args: '--prod'Vercel の方が先に GitHub と連携している場合は、push だけで自動デプロイされるので Action は不要です。詳しくは [Vercel デプロイ](/blog/vercel-deployment-for-ai)。
PR にモデル評価結果をコメント
コメント付き PR
- name: Comment metrics
if: github.event_name == 'pull_request'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const metrics = JSON.parse(fs.readFileSync('metrics.json'));
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `## 📊 評価結果\n\n- Accuracy: ${metrics.accuracy}\n- F1: ${metrics.f1}`,
});Tips
- キャッシュ活用: pip ・ npm ・ DVC のキャッシュで高速化
- Matrix ビルド: Python 3.10/3.11/3.12 の並列テスト
- Self-hosted runner: 大規模学習は GPU マシンを自社運用
- Concurrency 制御: 同じブランチの古い実行をキャンセル
- 通知: Slack ・ Discord 連携で失敗時にアラート
学習リソース
- [MLOps 基礎](/blog/mlops-basics)
- [Vercel デプロイ](/blog/vercel-deployment-for-ai)
- [scikit-learn 入門](/blog/sklearn-introduction)
- [Python 環境構築](/blog/python-setup-for-stats)
まとめ
GitHub Actions は Push したら自動で全部やる を最小コストで実現する魔法。CI/CD の習得は ML エンジニアの基礎体力です。
Sponsored / Recommended
本気で AI エンジニアを目指すなら ─ 関連スクール
以下は当サイトと提携しているスクールの紹介です。リンク経由でのお申込で運営費を支援できます(読者の皆様の追加負担はありません)。
Related Articles
関連記事
- 2026-04-30実装Slack Bot を LLM で作る ─ FastAPI + OpenAI で社内ツール化Slack の Slash Command と Events API を使い、社内チャンネル内で動く LLM Bot を構築。FastAPI バックエンド + OpenAI で 1 日で完成。
- 2026-04-30実装FastAPI 入門 ─ ML モデルを 5 分で API にするPython の高速 Web フレームワーク FastAPI を使って、ML モデルを REST API として公開する最短ルート。型ヒント・自動ドキュメント・非同期対応の 3 拍子。
- 2026-04-30実装Docker 入門 ─ ML 環境の再現性を担保する「自分の PC では動く問題」を解決する Docker。ML プロジェクトの Dockerfile・GPU 対応・docker-compose・Multi-Stage Build までを実用視点で。