name: Release on: push: tags: - 'v*' jobs: build-android: name: Build Android runs-on: ubuntu-latest steps: #1 Checkout Repository - name: Checkout Repository uses: actions/checkout@v3 #2 Setup Java - name: Set Up Java uses: actions/setup-java@v3 with: distribution: 'zulu' java-version: '21' #3 Setup Flutter - name: Set Up Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.32.5' channel: 'stable' #4 Install Dependencies - name: Install Dependencies run: flutter pub get - name: Generate Freezed Classes run: flutter pub run build_runner build --delete-conflicting-outputs #5 Setup Keystore - name: Create Keystore run: | echo "${{ secrets.ANDROID_KEYSTORE_BASE64 }}" | base64 --decode > app/conduit-keystore.jks echo "${{ secrets.ANDROID_KEY_PROPERTIES_BASE64 }}" | base64 --decode > key.properties env: ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} ANDROID_KEY_PROPERTIES_BASE64: ${{ secrets.ANDROID_KEY_PROPERTIES_BASE64 }} working-directory: android - name: Build APK run: flutter build apk --release - name: Build appBundle run: flutter build appbundle --release - name: Upload Artifacts uses: actions/upload-artifact@v4 with: name: Releases path: | build/app/outputs/flutter-apk/app-release.apk build/app/outputs/bundle/release/app-release.aab - name: Generate Release Notes id: release_notes run: | # Get the previous tag PREVIOUS_TAG=$(git tag --sort=-version:refname | head -2 | tail -1) # If no previous tag exists, use the first commit if [ -z "$PREVIOUS_TAG" ]; then PREVIOUS_TAG=$(git rev-list --max-parents=0 HEAD) fi # Generate commit messages since the previous tag echo "## What's Changed" > release_notes.md echo "" >> release_notes.md git log --pretty=format:"- %s (%h)" $PREVIOUS_TAG..${{ github.ref_name }} >> release_notes.md # Set the release notes as output echo "RELEASE_NOTES<> $GITHUB_OUTPUT cat release_notes.md >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: Create Release uses: ncipollo/release-action@v1 with: artifacts: "build/app/outputs/flutter-apk/app-release.apk,build/app/outputs/bundle/release/app-release.aab" tag: ${{ github.ref_name }} token: ${{ secrets.GITHUB_TOKEN }} body: ${{ steps.release_notes.outputs.RELEASE_NOTES }} generateReleaseNotes: true