Skip to content

Merge pull request #133 from Shojin-App/release/v1.1.9 #541

Merge pull request #133 from Shojin-App/release/v1.1.9

Merge pull request #133 from Shojin-App/release/v1.1.9 #541

Workflow file for this run

name: Flutter CI
# ワークフローが実行されるトリガーを指定
on:
push:
branches:
- "**"
paths:
# このファイル名に合わせてパスを更新
- ".github/workflows/build.yaml"
- "android/**"
- "test/**"
- "ios/**"
- "*.yaml"
- "*.lock"
- "lib/**"
workflow_dispatch:
inputs:
flavor:
description: "Which flavor to build"
type: choice
required: true
options:
- oss
- fdroid
- both
default: "both"
build_type:
description: "APK Build Type (split per ABI or single universal)"
type: choice
required: true
options:
- split
- single
default: "split"
run_tests:
description: "Run Flutter Tests"
type: boolean
required: true
default: false
jobs:
# --- 変更点: 静的解析とテストを実行するジョブを追加 ---
# ビルドの前にコードの品質とテストをチェックし、問題があれば早期に失敗させます。
analyze_and_test:
name: Analyze & Test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
# --- 変更点: キャッシュを有効化 ---
# cache: true を追加することで、Flutter SDKとpubの依存関係がキャッシュされ、
# 2回目以降の実行が大幅に高速化されます。
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"
cache: true
- name: Get Flutter dependencies
run: flutter pub get || flutter pub get || flutter pub get
- name: Analyze project source
run: flutter analyze --no-fatal-warnings || true
- name: Run tests
if: github.event.inputs.run_tests == 'true'
run: flutter test
# --- 変更点: ジョブ名を 'build' から 'build_android' に変更 ---
build_android:
name: Build Android APK
# 'analyze_and_test' ジョブが成功した場合のみ実行
needs: analyze_and_test
runs-on: ubuntu-latest
env:
BUILD_TYPE: ${{ github.event.inputs.build_type || 'split' }}
FLAVOR: ${{ github.event.inputs.flavor || 'both' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "21"
# --- 変更点: こちらのジョブでもキャッシュを有効化 ---
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"
cache: true
- name: Get Flutter dependencies
run: flutter pub get || flutter pub get || flutter pub get
# 分割APK: OSSフレーバー
- name: Build APK (Split per ABI, OSS)
if: ${{ contains(env.BUILD_TYPE, 'split') && (github.event.inputs.flavor == 'oss' || github.event.inputs.flavor == 'both' || env.FLAVOR == 'oss') }}
run: flutter build apk --flavor oss --release --split-per-abi --build-number=${{ github.run_number }}
# 分割APK: FDroidフレーバー(自己更新無効の定数を注入)
- name: Build APK (Split per ABI, FDroid)
if: ${{ contains(env.BUILD_TYPE, 'split') && (github.event.inputs.flavor == 'fdroid' || github.event.inputs.flavor == 'both' || env.FLAVOR == 'fdroid') }}
run: flutter build apk --flavor fdroid --release --split-per-abi --build-number=${{ github.run_number }} --dart-define=ENABLE_SELF_UPDATE=false
# 単一APK: OSSフレーバー
- name: Build APK (Single Universal, OSS)
if: ${{ contains(env.BUILD_TYPE, 'single') && (github.event.inputs.flavor == 'oss' || github.event.inputs.flavor == 'both' || env.FLAVOR == 'oss') }}
run: flutter build apk --flavor oss --release --build-number=${{ github.run_number }}
# 単一APK: FDroidフレーバー
- name: Build APK (Single Universal, FDroid)
if: ${{ contains(env.BUILD_TYPE, 'single') && (github.event.inputs.flavor == 'fdroid' || github.event.inputs.flavor == 'both' || env.FLAVOR == 'fdroid') }}
run: flutter build apk --flavor fdroid --release --build-number=${{ github.run_number }} --dart-define=ENABLE_SELF_UPDATE=false
# 分割APKアップロード(OSS)
- name: Upload Split APKs (OSS)
if: ${{ contains(env.BUILD_TYPE, 'split') && (github.event.inputs.flavor == 'oss' || github.event.inputs.flavor == 'both' || env.FLAVOR == 'oss') }}
uses: actions/upload-artifact@v4
with:
name: apk-oss
path: build/app/outputs/flutter-apk/app-oss-*-release.apk
# 分割APKアップロード(FDroid)
- name: Upload Split APKs (FDroid)
if: ${{ contains(env.BUILD_TYPE, 'split') && (github.event.inputs.flavor == 'fdroid' || github.event.inputs.flavor == 'both' || env.FLAVOR == 'fdroid') }}
uses: actions/upload-artifact@v4
with:
name: apk-fdroid
path: build/app/outputs/flutter-apk/app-fdroid-*-release.apk
# 単一APKアップロード(OSS)
- name: Upload Single APK (OSS)
if: ${{ contains(env.BUILD_TYPE, 'single') && (github.event.inputs.flavor == 'oss' || github.event.inputs.flavor == 'both' || env.FLAVOR == 'oss') }}
uses: actions/upload-artifact@v4
with:
name: apk-oss
path: build/app/outputs/flutter-apk/app-oss-release.apk
# 単一APKアップロード(FDroid)
- name: Upload Single APK (FDroid)
if: ${{ contains(env.BUILD_TYPE, 'single') && (github.event.inputs.flavor == 'fdroid' || github.event.inputs.flavor == 'both' || env.FLAVOR == 'fdroid') }}
uses: actions/upload-artifact@v4
with:
name: apk-fdroid
path: build/app/outputs/flutter-apk/app-fdroid-release.apk