外部サービス連携¶
本ドキュメントでは、プロジェクトで使用している外部サービスとその設定方法について説明します。
サービス一覧¶
| サービス | 用途 | URL |
|---|---|---|
| GitHub Actions | CI/CD パイプライン | https://github.com/k2works/case-study-accounting/actions |
| SonarCloud | コード品質分析 | https://sonarcloud.io |
| Qlty | コードカバレッジ・保守性分析 | https://qlty.sh |
| Heroku | デモ環境ホスティング | https://heroku.com |
GitHub Actions¶
概要¶
GitHub Actions を使用して CI/CD パイプラインを構築しています。
ワークフロー一覧¶
| ワークフロー | ファイル | トリガー | 説明 |
|---|---|---|---|
| Backend CI | backend-ci.yml |
push/PR to main, develop | バックエンドのビルド、テスト、静的解析 |
| Frontend CI | frontend-ci.yml |
push/PR to main, develop | フロントエンドのビルド、テスト、Lint |
| Backend Deploy | backend-deploy.yml |
push to main | バックエンドを Heroku にデプロイ |
| Frontend Deploy | frontend-deploy.yml |
push to main | フロントエンドを Heroku にデプロイ |
| Backend SonarQube | backend-sonar-qube.yml |
push/PR to main | バックエンド SonarCloud 分析 |
| Frontend SonarQube | frontend-sonar-qube.yml |
push/PR to main | フロントエンド SonarCloud 分析 |
| Deploy MkDocs | mkdocs.yml |
push to main | ドキュメントを GitHub Pages にデプロイ |
バッジ¶
README.md に以下のバッジを表示しています:
[](https://github.com/k2works/case-study-accounting/actions/workflows/backend-ci.yml)
[](https://github.com/k2works/case-study-accounting/actions/workflows/frontend-ci.yml)
[](https://github.com/k2works/case-study-accounting/actions/workflows/backend-deploy.yml)
[](https://github.com/k2works/case-study-accounting/actions/workflows/frontend-deploy.yml)
[](https://github.com/k2works/case-study-accounting/actions/workflows/mkdocs.yml)
SonarCloud¶
概要¶
SonarCloud を使用してコード品質を継続的に分析しています。
機能¶
- コードの品質ゲート
- バグ検出
- コードスメル検出
- セキュリティ脆弱性検出
- コードカバレッジ表示
- 重複コード検出
設定¶
1. SonarCloud でプロジェクト作成¶
- SonarCloud にログイン
- GitHub リポジトリをインポート
- プロジェクトキーと組織を確認
2. GitHub Secrets 設定¶
| シークレット名 | 内容 |
|---|---|
SONAR_TOKEN |
SonarCloud のアクセストークン |
3. build.gradle.kts 設定¶
plugins {
id("org.sonarqube") version "5.1.0.4882"
}
sonar {
properties {
property("sonar.projectKey", "k2works_case-study-accounting")
property("sonar.organization", "k2works")
property("sonar.host.url", "https://sonarcloud.io")
}
}
ワークフロー¶
# .github/workflows/backend-sonar-qube.yml
name: SonarQube
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
name: Build and analyze
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '25'
distribution: 'oracle'
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew build sonar --info
working-directory: apps/backend
Qlty¶
概要¶
Qlty を使用してコードカバレッジと保守性を分析しています。
機能¶
- コードカバレッジ追跡
- 保守性スコア(Maintainability)
- 技術的負債の可視化
- トレンド分析
設定¶
1. Qlty でプロジェクト設定¶
- Qlty にログイン
- GitHub リポジトリを連携
- カバレッジトークンを取得
2. GitHub Secrets 設定¶
| シークレット名 | 内容 |
|---|---|
QLTY_COVERAGE_TOKEN |
Qlty のカバレッジトークン |
3. ワークフロー設定¶
# backend-ci.yml に追加
- name: Upload coverage to Codecov
uses: qltysh/qlty-action/coverage@v1
with:
token: ${{ secrets.QLTY_COVERAGE_TOKEN }}
files: apps/backend/build/reports/jacoco/test/jacocoTestReport.xml
バッジ¶
[](https://qlty.sh/gh/k2works/projects/case-study-accounting)
[](https://qlty.sh/gh/k2works/projects/case-study-accounting)
Heroku¶
概要¶
Heroku Container Registry を使用してデモ環境をホスティングしています。
アプリケーション¶
| アプリ名 | URL | 用途 |
|---|---|---|
| case-study-accounting-backend | https://case-study-accounting-backend-8d23bb5e8bbe.herokuapp.com | バックエンド API |
| case-study-accounting-frontend | https://case-study-accounting-frontend-2cb4e7e16f2f.herokuapp.com | フロントエンド SPA |
設定¶
1. Heroku CLI インストール¶
# macOS
brew tap heroku/brew && brew install heroku
# Windows
choco install heroku-cli
2. Heroku API キー取得¶
heroku auth:token
3. GitHub Secrets 設定¶
| シークレット名 | 内容 |
|---|---|
HEROKU_BACKEND_API_KEY |
バックエンド用 Heroku API キー |
HEROKU_FRONTEND_API_KEY |
フロントエンド用 Heroku API キー |
4. 環境変数(Config Vars)¶
バックエンド:
| 変数名 | 値 |
|---|---|
SPRING_PROFILES_ACTIVE |
demo |
JWT_SECRET |
(自動生成) |
フロントエンド:
| 変数名 | 値 |
|---|---|
API_URL |
https://case-study-accounting-backend-8d23bb5e8bbe.herokuapp.com/api |
デプロイ方法¶
詳細は デモ環境デプロイ手順 を参照。
GitHub Secrets 一覧¶
プロジェクトで必要な GitHub Secrets の一覧です。
| シークレット名 | サービス | 用途 |
|---|---|---|
SONAR_TOKEN |
SonarCloud | コード品質分析 |
QLTY_COVERAGE_TOKEN |
Qlty | カバレッジレポート |
HEROKU_BACKEND_API_KEY |
Heroku | バックエンドデモ環境デプロイ |
HEROKU_FRONTEND_API_KEY |
Heroku | フロントエンドデモ環境デプロイ |
設定手順¶
- GitHub リポジトリの Settings を開く
- Secrets and variables → Actions を選択
- New repository secret をクリック
- Name と Secret を入力して保存
トラブルシューティング¶
SonarCloud 分析が失敗する¶
SONAR_TOKENが正しく設定されているか確認- SonarCloud でプロジェクトが存在するか確認
build.gradle.ktsの sonar 設定を確認
Qlty カバレッジがアップロードされない¶
QLTY_COVERAGE_TOKENが正しく設定されているか確認- JaCoCo レポートが生成されているか確認
- レポートファイルのパスが正しいか確認
Heroku デプロイが失敗する¶
HEROKU_API_KEYが有効か確認- Heroku アプリが存在するか確認
- Docker ビルドがローカルで成功するか確認