name: Flutter Release Workflow on: push: tags: - "v**" # manually trigger a release if needed workflow_dispatch: jobs: build: permissions: # write permission is required to create a github release contents: write runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Checkout shelfsdk uses: actions/checkout@v3 with: repository: Dr-Blank/shelfsdk path: ./shelfsdk - name: Set Up Java uses: actions/setup-java@v3.12.0 with: distribution: "oracle" java-version: "17" - name: Set up Flutter uses: subosito/flutter-action@v2 with: channel: "stable" - name: Install dependencies run: flutter pub get # - 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-release-universal}.apk - name: Build App Bundle run: flutter build appbundle --release - 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" name: v${{ steps.version.outputs.version }} tag: ${{ github.ref }} body: ${{ steps.generate_release_notes.outputs.body }}