name: integration-tests on: workflow_dispatch: pull_request_target: branches: - main - release-* pull_request_review: types: - submitted env: GRADLE_OPTS: "-Xmx6g -Dorg.gradle.daemon=false" jobs: shouldRun: name: checks to ensure we should run runs-on: ubuntu-22.04 outputs: shouldRun: ${{steps.shouldRun.outputs.result}} steps: - name: required check id: shouldRun uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea env: # fun fact, this changes based on incoming event, it will be different when we run this on pushes to main RELEVANT_SHA: ${{ github.event.pull_request.head.sha || github.sha }} with: script: | const { RELEVANT_SHA } = process.env; const { data: { statuses } } = await github.rest.repos.getCombinedStatusForRef({ owner: context.repo.owner, repo: context.repo.repo, ref: RELEVANT_SHA, }); const intTested = statuses && statuses.filter(({ context }) => context === 'integration-tests'); const alreadyRun = intTested && intTested.find(({ state }) => state === 'success') > 0; const { data: reviews } = await github.rest.pulls.listReviews({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number, }); const approvingReviews = reviews && reviews.filter(review => review.state === 'APPROVED'); const shouldRun = !alreadyRun && github.actor != 'dependabot[bot]' && (approvingReviews.length > 0); console.log("tests should be run = %j", shouldRun); console.log("alreadyRun = %j", alreadyRun); console.log("approvingReviews = %j", approvingReviews.length); return shouldRun; integration-tests: runs-on: ubuntu-22.04 needs: shouldRun if: ${{ needs.shouldRun.outputs.shouldRun == 'true' }} permissions: statuses: write checks: write steps: - name: Checkout Repo uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 with: ref: ${{ github.event.pull_request.head.sha || github.ref }} - name: Set up Java uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 with: distribution: temurin java-version: 17 - name: setup gradle uses: gradle/actions/setup-gradle@9e899d11ad247ec76be7a60bc1cf9d3abbb9e7f1 - name: run integration tests run: ./gradlew integrationTest compileJmh -Dorg.gradle.parallel=true -Dorg.gradle.caching=true - name: Publish Test Report uses: mikepenz/action-junit-report@5f47764eec0e1c1f19f40c8e60a5ba47e47015c5 if: (success() || failure()) with: report_paths: '**/build/test-results/integrationTest/TEST-*.xml' annotate_only: true