Merge pull request #133 from Shojin-App/release/v1.1.9 #541
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |