name: Flutter Release Workflow on: push: tags: - "v**" # manually trigger a release if needed workflow_dispatch: jobs: setup: permissions: # write permission is required to create a github release contents: write runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: submodules: recursive - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: "stable" flutter-version-file: pubspec.yaml - name: Install dependencies run: flutter pub get build_android: needs: setup permissions: # write permission is required to create a github release contents: write runs-on: ubuntu-latest steps: - name: Set Up Java uses: actions/setup-java@v3.12.0 with: distribution: "oracle" java-version: "17" # - name: Run tests # run: flutter test - name: Decode android/upload.jks run: echo "${{ secrets.UPLOAD_KEYSTORE_JKS }}" | base64 --decode > android/upload.jks - name: Decode android/key.properties run: echo "${{ secrets.KEY_PROPERTIES }}" | base64 --decode > android/key.properties - name: Build APKs run: flutter build apk --release --split-per-abi - name: Build Universal APK run: flutter build apk --release - name: Rename Universal APK run: mv build/app/outputs/flutter-apk/{app-release,app-universal-release}.apk - name: Build App Bundle run: flutter build appbundle --release build_linux: needs: setup permissions: # write permission is required to create a github release contents: write runs-on: ubuntu-latest steps: - name: setup fastforge run: | dart pub global activate fastforge - name: Build Linux AppImage run: fastforge package --platform linux --targets deb create_release: needs: [build_android, build_linux] permissions: # write permission is required to create a github release contents: write runs-on: ubuntu-latest steps: - name: version id: version run: | tag=${GITHUB_REF/refs\/tags\//} version=${tag#v} major=${version%%.*} echo "tag=${tag}" >> $GITHUB_OUTPUT echo "version=${version}" >> $GITHUB_OUTPUT echo "major=${major}" >> $GITHUB_OUTPUT - name: Generate Release Notes id: generate_release_notes uses: release-drafter/release-drafter@v6 env: GITHUB_TOKEN: ${{ github.token }} - name: Create GitHub Release uses: ncipollo/release-action@v1 with: artifacts: "build/app/outputs/flutter-apk/*-release*.apk,build/app/outputs/bundle/release/*.aab,dist/*/*.deb" name: v${{ steps.version.outputs.version }} tag: ${{ github.ref }} body: ${{ steps.generate_release_notes.outputs.body }}