メインコンテンツまでスキップ

CI/CD

GitHub Actionsで自動化されています。.github/workflows/ に定義があります。

パイプライン全体像

Push to main / PR

├─ /web/** 変更あり ──── web-ci.yml ──── lint → typecheck → build

└─ /api/** 変更あり ──── api-ci-cd.yml ─ test → build → deploy
↑PR時は ↑mainのみ
ここで止まる

Web CI (web-ci.yml)

発火条件: main へのプッシュ、または /web/** を変更したPR

ジョブ内容
lint-and-typecheckESLint + TypeScript型チェック
buildCloudflare Worker向けビルド(成果物の確認)

PRを出したらこのパイプラインが通ることを確認してからマージしてください。


API CI/CD (api-ci-cd.yml)

発火条件: main へのプッシュ、または /api/** を変更したPR

ジョブ 1: test(PR・mainの両方で実行)

  • Python 3.11
  • MySQL 8.0(テスト用コンテナ)
  • flake8 でコードスタイルチェック
  • Black でフォーマットチェック

:::note テストについて 現在 pytest の実行はコメントアウトされています。CI上でテストを通すには api-ci-cd.yml の該当箇所を有効化してください。 :::

ジョブ 2: build(mainのみ)

  • test 完了後に実行
  • Dockerイメージをビルド(マルチプラットフォーム対応)
  • GitHub Container Registry(GHCR)にプッシュ
  • タグ: latest + コミットSHA

ジョブ 3: deploy(mainのみ)

  • build 完了後に実行
  • 本番サーバーにSSH接続
  • docker compose pull && docker compose up -d で更新
  • alembic upgrade head でマイグレーション実行
  • /health エンドポイントへ5回リトライしてデプロイ確認

Dependabot

.github/dependabot.yml で依存関係の自動更新が設定されています。

対象頻度
DevContainers週次
npm(web)週次
npm(spn)週次

自動的にPRが作られます。CIが通ったものは適宜マージしてください。


必要なGitHub Secrets

本番デプロイが動くために以下のSecretsをリポジトリに設定する必要があります。

Secret名内容
PRODUCTION_HOSTデプロイ先サーバーのホスト名またはIP
PRODUCTION_USERNAMESSH接続ユーザー名
PRODUCTION_SSH_KEYSSH秘密鍵
PRODUCTION_URLヘルスチェック用のAPI URL

設定場所: GitHubリポジトリ → Settings → Secrets and variables → Actions