name: Build & Release on: push: tags: - v* concurrency: group: ${{ github.workflow }}-${{ github.ref_name }} cancel-in-progress: true 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" - 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 run: | flutter build apk --release --split-per-abi 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: upload artifact android apks uses: actions/upload-artifact@v3 with: 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-latest steps: # Checkout branch - 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 ios run: | flutter build ios --release --no-codesign cd build/ios/iphoneos mkdir Payload cd Payload ln -s ../Runner.app cd .. zip -r app-release.ipa Payload mv app-release.ipa Mangayomi-${{ github.ref_name }}-ios.ipa - name: upload artifact ios ipa uses: actions/upload-artifact@v3 with: 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 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@v3 with: 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-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_rust_bridge_codegen # run: flutter_rust_bridge_codegen generate # - name: flutter pub get # run: flutter pub get # - name: build windows # run: | # flutter build windows # Compress-Archive $DestDir build\windows\Mangayomi-${{ github.ref_name }}-windows.zip # - name: upload artifact windows zip # uses: actions/upload-artifact@v3 # with: # path: build\windows\Mangayomi-*.zip # - name: release package windows zip # uses: ncipollo/release-action@v1 # with: # artifacts: build\windows\Mangayomi-*.zip # allowUpdates: true # build-and-release-linux-zip: # permissions: # contents: write # runs-on: ubuntu-latest # steps: # - name: checkout branch # uses: actions/checkout@v4 # - name: Install dependencies # run: | # sudo apt-get update # sudo apt-get install webkit2gtk-4.1 clang cmake ninja-build pkg-config libgtk-3-dev mpv libmpv-dev dpkg-dev # - 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 linux # run: flutter build linux --verbose # - name: Zip # uses: thedoctor0/zip-release@master # with: # type: "zip" # filename: Mangayomi-${{ github.ref_name }}-linux.zip # directory: build/linux/x64/release/bundle # - name: upload artifact linux zip # uses: actions/upload-artifact@v3 # with: # path: build/linux/x64/release/bundle/Mangayomi-*.zip # - name: release packages linux zip # uses: ncipollo/release-action@v1 # with: # artifacts: build/linux/x64/release/bundle/Mangayomi-*.zip # allowUpdates: true # build-and-release-linux-deb: # permissions: # contents: write # runs-on: ubuntu-latest # steps: # - name: checkout branch # uses: actions/checkout@v4 # - name: Install dependencies # run: | # sudo apt-get update # sudo apt-get install webkit2gtk-4.1 clang cmake ninja-build pkg-config libgtk-3-dev mpv libmpv-dev dpkg-dev libfuse2 # - 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 dart_distributor # run: dart pub global activate flutter_distributor # - name: Update PATH # run: echo 'export PATH="$PATH:$HOME/.pub-cache/bin"' >> ~/.bashrc # - name: Build deb package # run: flutter_distributor package --platform linux --targets deb # - name: Move deb file # run: mv $(find dist -type f -name "mangayomi*.deb") dist/Mangayomi-${{ github.ref_name }}-linux.deb # - name: upload artifact linux deb # uses: actions/upload-artifact@v3 # with: # path: dist/Mangayomi-*.deb # - name: Release package deb # uses: ncipollo/release-action@v1 # with: # artifacts: dist/Mangayomi-*.deb # allowUpdates: true # build-and-release-linux-appimage: # permissions: # contents: write # runs-on: ubuntu-latest # steps: # - name: checkout branch # uses: actions/checkout@v4 # - name: Install dependencies # run: | # sudo apt-get update # sudo apt-get install webkit2gtk-4.1 clang cmake ninja-build pkg-config libgtk-3-dev mpv libmpv-dev dpkg-dev libfuse2 # - 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 dart_distributor # run: dart pub global activate flutter_distributor # - name: Update PATH # run: echo 'export PATH="$PATH:$HOME/.pub-cache/bin"' >> ~/.bashrc # - name: Build AppImage package # run: flutter_distributor package --platform linux --targets deb # - name: Move AppImage file # run: mv $(find dist -type f -name "mangayomi*.AppImage") dist/Mangayomi-${{ github.ref_name }}-linux.AppImage # - name: upload artifact linux AppImage # uses: actions/upload-artifact@v3 # with: # path: dist/Mangayomi-*.AppImage # - name: Release package AppImage # uses: ncipollo/release-action@v1 # with: # artifacts: dist/Mangayomi-*.AppImage # allowUpdates: true