This commit is contained in:
Moustapha Kodjo Amadou 2025-12-06 14:05:32 +01:00
parent 85ff4d7d4c
commit 199e194461

View file

@ -13,257 +13,6 @@ env:
ZSIGN_VERSION: "0.7"
jobs:
build-and-release-android-apks:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: checkout branch
uses: actions/checkout@v4
- name: setup flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Setup Java toolchain (Only Android target)
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
env:
JAVA_OPTS: "-Xmx4096m -XX:MaxMetaspaceSize=512m"
- name: Setup Gradle properties for CI
run: |
echo "org.gradle.jvmargs=-Xmx4096M -XX:MaxMetaspaceSize=512m -XX:+UseG1GC" >> android/gradle.properties
echo "org.gradle.parallel=true" >> android/gradle.properties
echo "org.gradle.daemon=false" >> android/gradle.properties
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: "3.18.1"
- name: Setup ninja
uses: seanmiddleditch/gha-setup-ninja@master
- name: Install the CLI tool
run: cargo install 'flutter_rust_bridge_codegen'
- name: Setup Android keystore
run: |
echo "${{ secrets.SIGNING_KEY_STORE_BASE64 }}" | base64 -di > android/app/upload-keystore.jks
echo "${{ secrets.SIGNING_KEY_PROPERTIES }}" > android/key.properties
- name: flutter pub get
run: flutter pub get
- name: build android apks (split per ABI)
run: |
export GRADLE_OPTS="-Xmx4096m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
flutter build apk --release --split-per-abi --verbose
cd build/app/outputs/flutter-apk
mv app-arm64-v8a-release.apk Mangayomi-${{ github.ref_name }}-android-arm64-v8a.apk
mv app-armeabi-v7a-release.apk Mangayomi-${{ github.ref_name }}-android-armeabi-v7a.apk
mv app-x86_64-release.apk Mangayomi-${{ github.ref_name }}-android-x86_64.apk
- name: build android apk (all architectures)
run: |
export GRADLE_OPTS="-Xmx4096m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
flutter build apk --release --verbose
cd build/app/outputs/flutter-apk
mv app-release.apk Mangayomi-${{ github.ref_name }}-android-universal.apk
- name: upload artifact android apks
uses: actions/upload-artifact@v4
with:
name: Mangayomi-${{ github.ref_name }}-android
path: "build/app/outputs/flutter-apk/Mangayomi-*.apk"
- name: release packages android apks
uses: ncipollo/release-action@v1
with:
artifacts: "build/app/outputs/flutter-apk/Mangayomi-*.apk"
allowUpdates: true
build-and-release-ios-ipa:
permissions:
contents: write
runs-on: macos-15
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"
architecture: x64
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-ios,x86_64-apple-ios
- name: Setup Rust cache
uses: Swatinem/rust-cache@v2
with:
workspaces: rust
cache-on-failure: true
- name: Install flutter_rust_bridge_codegen
run: cargo install flutter_rust_bridge_codegen
- name: Select Xcode 16.4
run: sudo xcode-select --switch /Applications/Xcode_16.4.app
- name: Print Xcode version
run: xcodebuild -version
- name: Flutter pub get
run: flutter pub get
- name: Setup signing environment
env:
P12_BASE64: ${{ secrets.P12_CERTIFICATE }}
PROVISIONING_PROFILE_BASE64: ${{ secrets.PROVISIONING_PROFILE }}
run: |
echo "$P12_BASE64" | base64 -d > certificate.p12
echo "$PROVISIONING_PROFILE_BASE64" | base64 -d > profile.mobileprovision
curl -L -o zsign.zip "https://github.com/zhlynn/zsign/releases/download/v${{ env.ZSIGN_VERSION }}/zsign-v${{ env.ZSIGN_VERSION }}-macos-x64.zip"
unzip zsign.zip
chmod +x zsign || chmod +x zsign-*
- name: Build iOS
env:
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
run: |
flutter build ios --release --no-codesign
mkdir -p build/ios/iphoneos/Payload
mv build/ios/iphoneos/Runner.app build/ios/iphoneos/Payload/
./zsign -f -k ./certificate.p12 -p "$P12_PASSWORD" -m ./profile.mobileprovision ./build/ios/iphoneos/Payload/Runner.app
cd build/ios/iphoneos
zip -r Mangayomi-${{ github.ref_name }}-ios.ipa Payload
- name: Upload artifact iOS IPA
uses: actions/upload-artifact@v4
with:
name: Mangayomi-${{ github.ref_name }}-ios
path: "build/ios/iphoneos/Mangayomi-*.ipa"
- name: Release package iOS IPA
uses: ncipollo/release-action@v1
with:
artifacts: "build/ios/iphoneos/Mangayomi-*.ipa"
allowUpdates: true
build-and-release-macos-dmg:
permissions:
contents: write
runs-on: macos-latest
steps:
- name: checkout branch
uses: actions/checkout@v4
- name: setup flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install the CLI tool
run: cargo install 'flutter_rust_bridge_codegen'
- name: flutter pub get
run: flutter pub get
- name: build macos
run: |
cd macos
pod update
cd ..
flutter build macos --release --verbose
brew install create-dmg
create-dmg --volname Mangayomi-${{ github.ref_name }}-macos --window-pos 200 120 --window-size 800 450 --icon-size 100 --app-drop-link 600 185 Mangayomi-${{ github.ref_name }}-macos.dmg build/macos/Build/Products/Release/Mangayomi.app
- name: upload artifact macos dmg
uses: actions/upload-artifact@v4
with:
name: Mangayomi-${{ github.ref_name }}-macos
path: "/Users/runner/work/mangayomi/mangayomi/*.dmg"
- name: release package macos dmg
uses: ncipollo/release-action@v1
with:
artifacts: "/Users/runner/work/mangayomi/mangayomi/*.dmg"
allowUpdates: true
build-and-release-windows-exe_zip:
permissions:
contents: write
runs-on: windows-latest
steps:
- name: checkout branch
uses: actions/checkout@v4
- name: setup flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install the CLI tool
run: cargo install 'flutter_rust_bridge_codegen'
- name: flutter pub get
run: flutter pub get
- name: Enable inno_bundle
run: dart pub global activate inno_bundle
- name: build windows exe
run: |
dart run inno_bundle:build --release
- name: build windows zip
run: |
# Rename the installer .exe
$installer = Get-ChildItem "build/windows/x64/installer/Release/*-Installer.exe"
Rename-Item -Path $installer.FullName -NewName "Mangayomi-${{ github.ref_name }}-windows.exe"
# Go to runner output dir
Set-Location -Path "build/windows/x64/runner/Release"
# Create zip
Compress-Archive -Path * -DestinationPath "Mangayomi-Windows.zip"
# Rename zip
Rename-Item -Path "Mangayomi-Windows.zip" -NewName "Mangayomi-${{ github.ref_name }}-windows.zip"
- name: upload artifact windows exe_zip
uses: actions/upload-artifact@v4
with:
name: Mangayomi-${{ github.ref_name }}-windows-zip
path: |
build/windows/x64/installer/Release/Mangayomi-*.exe
build/windows/x64/runner/Release/Mangayomi-*.zip
- name: release package windows exe_zip
uses: ncipollo/release-action@v1
with:
artifacts: |
build/windows/x64/installer/Release/Mangayomi-*.exe
build/windows/x64/runner/Release/Mangayomi-*.zip
allowUpdates: true
build-and-release-linux-zip_AppImage_RPM:
permissions:
contents: write
@ -466,7 +215,3 @@ jobs:
with:
artifacts: dist/Mangayomi-*.deb
allowUpdates: true
ios-source-build:
needs: build-and-release-ios-ipa
uses: ./.github/workflows/update_sideloading_source.yml