diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index c65a4673f8..993298dcdc 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -1,45 +1,121 @@ name: PR Build on: - pull_request: - paths: - - ".github/workflows/pr-build.yml" - - "android/**" - - "assets/**" - - "lib/**" - + workflow_dispatch: + inputs: + # Flutter + flutter-branch: + description: Flutter branch + type: choice + default: 'stable' + options: + - stable + - beta + - dev + - master + flutter-cache: + description: Cache + type: boolean + default: true + # Application configuration + app-flavour: + description: App flavour + default: 'release' + type: choice + options: + - release + - debug + - profile + # Pull Request + pr-number: + description: PR number (No hashtag) + required: true + +run-name: "Build PR ${{ inputs.pr-number }}" + jobs: build: - name: Build + name: Build the application runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write steps: + - name: Setup + env: + GH_TOKEN: ${{ github.token }} + run: | + gh repo clone ${{ github.repository }} + cd revanced-manager + gh repo set-default ${{ github.repository }} + gh pr checkout ${{ inputs.pr-number }} + + echo "DATETIME=$( TZ='UTC+0' date --rfc-email )" >> $GITHUB_ENV + echo "COMMIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + - name: Checkout uses: actions/checkout@v4 with: - # Make sure the release step uses its own credentials: - # https://github.com/cycjimmy/semantic-release-action#private-packages persist-credentials: false - fetch-depth: 0 + - name: Setup JDK uses: actions/setup-java@v3 with: java-version: '17' distribution: 'zulu' + cache: gradle + - name: Setup Flutter uses: subosito/flutter-action@v2 with: - channel: 'stable' - cache: true + channel: ${{ inputs.flutter-branch }} + cache: ${{ inputs.flutter-cache }} + - name: Install Flutter dependencies run: flutter pub get + - name: Generate files with Builder - run: dart run build_runner build --delete-conflicting-outputs + run: dart run build_runner build --delete-conflicting-outputs + - name: Build with Flutter - env: + continue-on-error: true + id: flutter-build + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: flutter build apk --debug + run: | + flutter build apk --${{ inputs.app-flavour }}; + + - name: Prepare to comment + run: | + if [[ "${{ steps.flutter-build.outcome }}" == "success" ]]; then + echo "MESSAGE=✅ ReVanced Manager ${{ env.COMMIT_HASH }} build succeeded." >> $GITHUB_ENV + else + echo "MESSAGE=🚫 ReVanced Manager ${{ env.COMMIT_HASH }} build failed." >> $GITHUB_ENV + fi + + - name: "Comment to Pull Request #${{ inputs.pr-number }}" + uses: thollander/actions-comment-pull-request@v2 + with: + GITHUB_TOKEN: ${{ github.token }} + pr_number: ${{ inputs.pr-number }} + mode: recreate + message: | + ## ⚒️ ReVanced PR Build workflow + + ${{ env.MESSAGE }} + + You can see more details in run [${{ github.run_id }}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})! + + ### ⚙️ Overview + - App flavor: ${{ inputs.app-flavour }} + - Branch: ${{ inputs.flutter-branch }} + - Start time: ${{ env.DATETIME }} + - name: Upload build uses: actions/upload-artifact@v3 with: - name: revanced-manager - path: build/app/outputs/flutter-apk/app-debug.apk + if-no-files-found: error + name: revanced-manager-(${{ env.COMMIT_HASH }}-${{ inputs.pr-number }}-${{ inputs.app-flavour }})-${{ inputs.flutter-branch }} + path: | + build/app/outputs/flutter-apk/app-${{ inputs.app-flavour }}.apk + build/app/outputs/flutter-apk/app-${{ inputs.app-flavour }}.apk.sha1