diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index a5a239f..bb47b21 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -3,6 +3,9 @@ name: Build and Release Android on: workflow_dispatch: +permissions: + contents: write + jobs: build: name: Build & Release Android @@ -10,15 +13,13 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v3 - with: - fetch-depth: 0 + uses: actions/checkout@v4 - - name: Set Up Java + - name: Set up JDK 21 uses: actions/setup-java@v4 with: - distribution: 'zulu' java-version: '21' + distribution: 'temurin' - name: Set Up Flutter uses: subosito/flutter-action@v2 @@ -38,45 +39,31 @@ jobs: run: | version=$(grep '^version:' pubspec.yaml | sed 's/version:\s*\([0-9]*\.[0-9]*\.[0-9]*.*\)/\1/' | tr -d '\r') echo "VERSION=$version" >> $GITHUB_ENV + echo "version=$version" >> $GITHUB_OUTPUT echo "Extracted version: $version" - name: Build APK - run: flutter build apk --release --build-name=${{ env.VERSION }} --build-number=${{ github.run_number }} + run: flutter build apk --release --build-name=${{ steps.extract_version.outputs.version }} --build-number=${{ github.run_number }} - - name: Build App Bundle - run: flutter build appbundle --build-name=${{ env.VERSION }} --build-number=${{ github.run_number }} + - name: Rename APK + run: | + mv build/app/outputs/flutter-apk/app-release.apk build/app/outputs/flutter-apk/hnotes-v${{ steps.extract_version.outputs.version }}.apk - - name: Upload Artifacts - uses: actions/upload-artifact@v4 + - name: Create GitHub Tag and Release + uses: softprops/action-gh-release@v2 with: - name: Android-Releases - path: | - build/app/outputs/flutter-apk/app-release.apk - build/app/outputs/bundle/release/app-release.aab - retention-days: 7 + tag_name: v${{ steps.extract_version.outputs.version }} + name: v${{ steps.extract_version.outputs.version }} + draft: false + prerelease: false + generate_release_notes: true + files: build/app/outputs/flutter-apk/hnotes-v${{ steps.extract_version.outputs.version }}.apk + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Generate Release Tag - id: tag_version + - name: Create Deployment Summary run: | - if [ "${{ github.event.inputs.release_type }}" == "production" ]; then - RELEASE_TAG="v${{ env.VERSION }}" - else - RELEASE_TAG="v${{ env.VERSION }}-${{ github.event.inputs.release_type }}" - fi - echo "RELEASE_TAG=$RELEASE_TAG" >> $GITHUB_ENV - - - 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: ${{ env.RELEASE_TAG }} - name: "Android Release ${{ env.RELEASE_TAG }}" - body: | - Android Release ${{ env.RELEASE_TAG }} - Version: ${{ env.VERSION }} - Build Number: ${{ github.run_number }} - Release Type: ${{ github.event.inputs.release_type }} - - Automated release from GitHub Actions workflow. - token: ${{ secrets.TOKEN }} - prerelease: ${{ github.event.inputs.release_type != 'production' }} \ No newline at end of file + echo "## Release Summary:" >> $GITHUB_STEP_SUMMARY + echo "### App version: ${{ steps.extract_version.outputs.version }}" >> $GITHUB_STEP_SUMMARY + echo "### 🕒 Released at: $(date)" >> $GITHUB_STEP_SUMMARY + echo "::notice::Build APK successfully!" diff --git a/pubspec.yaml b/pubspec.yaml index 4ed27a3..d3d814d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 3.0.4 +version: 3.0.3 environment: sdk: "^3.8.0"