From 142d6462b257e6e7c122f65abdfc7e80bd414784 Mon Sep 17 00:00:00 2001 From: Marco Collovati Date: Sun, 10 Nov 2024 17:03:07 +0100 Subject: [PATCH] chore(actions): add native validation workflow --- .github/workflows/validation-native.yaml | 83 +++++++++++++++++++ integration-tests/pom.xml | 20 +++++ .../example/application/AutoGridNativeIT.java | 21 +++++ .../example/application/SignalsNativeIT.java | 21 +++++ .../example/application/SmokeNativeIT.java | 21 +++++ 5 files changed, 166 insertions(+) create mode 100644 .github/workflows/validation-native.yaml create mode 100644 integration-tests/react-smoke-test/src/test/java/com/example/application/AutoGridNativeIT.java create mode 100644 integration-tests/react-smoke-test/src/test/java/com/example/application/SignalsNativeIT.java create mode 100644 integration-tests/react-smoke-test/src/test/java/com/example/application/SmokeNativeIT.java diff --git a/.github/workflows/validation-native.yaml b/.github/workflows/validation-native.yaml new file mode 100644 index 00000000..193b981a --- /dev/null +++ b/.github/workflows/validation-native.yaml @@ -0,0 +1,83 @@ +name: Quarkus Hilla Native Validation +on: + pull_request_target: + types: [opened, synchronize, reopened, edited] +permissions: + contents: read + issues: read + checks: write + pull-requests: write +concurrency: + group: validation-native-${{ github.head_ref || github.ref_name }} + cancel-in-progress: true +jobs: + check-permissions: + name: Check User Permissions + runs-on: ubuntu-latest + steps: + - run: echo "Concurrency Group = ${{ github.head_ref || github.ref_name }}" + - uses: actions-cool/check-user-permission@main + id: checkUser + with: + username: ${{github.triggering_actor}} + require: 'write' + - name: Fail on workflow triggered by external contributor + if: ${{ steps.checkUser.outputs.require-result != 'true' && github.actor != 'dependabot[bot]' && github.actor != 'quarkus-hilla-bot[bot]' }} + run: | + echo "🚫 **${{ github.actor }}** is an external contributor, a **${{ github.repository }}** team member has to review this changes and re-run this build" \ + | tee -a $GITHUB_STEP_SUMMARY && exit 1 + changes: + name: Compute changes + needs: [check-permissions] + runs-on: ubuntu-latest + outputs: + validation-required: ${{ steps.filter.outputs.validate }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + - uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + validate: + - '!(README.md|LICENSE|.gitignore|etc/**)' + build-and-test-native: + name: Native tests + needs: [changes] + if: ${{ needs.changes.outputs.validation-required == 'true' }} + timeout-minutes: 90 + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Set up Java + uses: actions/setup-java@v4 + with: + java-version: 23 + distribution: 'graalvm' + cache: maven + - uses: browser-actions/setup-chrome@latest + id: setup-chrome + if: ${{ !vars.QH_DISABLE_CHROME_INSTALL }} + with: + chrome-version: stable + - name: Build + run: | + set -x -e -o pipefail + mvn -V -e -B -ntp -DskipTests -Dmaven.javadoc.skip=false install + - name: Native Test + run: | + set -x -e -o pipefail + mvn -V -e -B -ntp verify -Dmaven.javadoc.skip=false -DtrimStackTrace=false -Dselenide.browserBinary=${{ steps.setup-chrome.outputs.chrome-path }} -Pit-tests,production -Dnative + - name: Package test output files + if: ${{ failure() || success() }} + run: find . -name surefire-reports -o -name failsafe-reports -o -name selenide-reports -o -name quarkus.log | tar -czf tests-report-native.tgz -T - + - uses: actions/upload-artifact@v4 + if: ${{ failure() || success() }} + with: + name: tests-output-it-native + path: tests-report-*.tgz diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index 8e5afea1..fabee6e3 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -229,6 +229,26 @@ false native + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + org.apache.maven.plugins + maven-failsafe-plugin + + + **/*NativeIT.java + + + + +