Skip to content

Commit

Permalink
build pr workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
karesti committed Dec 11, 2024
1 parent 170fde6 commit 92d2219
Showing 1 changed file with 235 additions and 0 deletions.
235 changes: 235 additions & 0 deletions .github/workflows/build-pull-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
name: Build (on pull request)

on:
pull_request:
paths-ignore:
- '.gitignore'
- 'CODEOWNERS'
- 'LICENSE'
- '*.md'
- '*.adoc'
- '*.txt'
- '.all-contributorsrc'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
# Quick build (no test, Java 17)
# Artifacts will be reused in the other jobs
quick-build:
name: Quick Build
runs-on: ubuntu-latest
outputs:
all_modules: ${{ steps.matrices.outputs.all_modules }}
it_modules: ${{ steps.matrices.outputs.it_modules }}
in_process_embedding_modules: ${{ steps.matrices.outputs.in_process_embedding_modules }}

steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: 'maven'

- name: Build with Maven
run: ./mvnw -B clean install -DskipTests -Dno-format -ntp

- name: Zip the Maven repo
run: |
tar -czf ${{ runner.temp }}/maven-repo.tgz -C ~ .m2/repository
# Avoid caching our own artifacts
rm -Rf ~/.m2/repository/io/quarkiverse/infinispan
- name: Persist the Maven repo
uses: actions/upload-artifact@v4
with:
name: maven-repo
path: ${{ runner.temp }}/maven-repo.tgz
retention-days: 5

# Publish build reports
- name: Prepare build reports archive
if: always()
run: |
7z a -tzip build-reports.zip -r \
'target/build-report.json' \
LICENSE
- name: Upload build reports
uses: actions/upload-artifact@v4
if: always()
with:
name: "build-reports-${{ github.run_attempt }}-Quick Build"
path: |
build-reports.zip
retention-days: 7

jvm-tests:
needs: quick-build
strategy:
fail-fast: false
matrix:
java: [ 17, 21, 23 ]
module: ${{fromJson(needs.quick-build.outputs.all_modules)}}
name: JVM tests - ${{ matrix.module }} - Java ${{ matrix.java }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK ${{ matrix.java }}
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.java }}

- name: Download the Maven repo
uses: actions/download-artifact@v4
with:
name: maven-repo
path: ..
- name: Unzip the Maven Repo
shell: bash
run: |
tar -xzf ../maven-repo.tgz -C ~
- name: Run tests of ${{ matrix.module }} with JDK ${{ matrix.java }}
run: |
cd ${{ matrix.module }} && ../mvnw -B verify -Dci=true -Dno-format -ntp
# Publish build reports
- name: Prepare build reports archive
if: always()
run: |
7z a -tzip build-reports.zip -r \
'**/target/*-reports/TEST-*.xml' \
'target/build-report.json' \
LICENSE
- name: Upload build reports
uses: actions/upload-artifact@v4
if: always()
with:
name: "build-reports-${{ github.run_attempt }}-JVM tests - ${{ matrix.module }} - Java ${{ matrix.java }}"
path: |
build-reports.zip
retention-days: 7

native-tests:
needs: quick-build
name: Native tests - ${{matrix.module}}
strategy:
fail-fast: false
matrix:
module: ${{fromJson(needs.quick-build.outputs.it_modules)}}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17

- name: Download the Maven repo
uses: actions/download-artifact@v4
with:
name: maven-repo
path: ..
- name: Unzip the Maven Repo
shell: bash
run: |
tar -xzf ../maven-repo.tgz -C ~
- name: Run integration tests ${{matrix.module}}
run: |
cd integration-tests/${{matrix.module}} && ../../mvnw -B verify -Dnative -Dci=true -Dquarkus.native.container-build -Dnative.surefire.skip -Dno-format -ntp
# Publish build reports
- name: Prepare build reports archive
if: always()
run: |
7z a -tzip build-reports.zip -r \
'**/target/*-reports/TEST-*.xml' \
'target/build-report.json' \
LICENSE
- name: Upload build reports
uses: actions/upload-artifact@v4
if: always()
with:
name: "build-reports-${{ github.run_attempt }}-Native tests - ${{matrix.module}}"
path: |
build-reports.zip
retention-days: 7

in-process-embedding-model-tests:
needs: quick-build
name: In process embedding model tests - ${{matrix.module}}
strategy:
fail-fast: false
matrix:
module: ${{fromJson(needs.quick-build.outputs.in_process_embedding_modules)}}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17

- name: Download the Maven repo
uses: actions/download-artifact@v4
with:
name: maven-repo
path: ..
- name: Unzip the Maven Repo
shell: bash
run: |
tar -xzf ../maven-repo.tgz -C ~
# Publish build reports
- name: Prepare build reports archive
if: always()
run: |
7z a -tzip build-reports.zip -r \
'**/target/*-reports/TEST-*.xml' \
'target/build-report.json' \
LICENSE
- name: Upload build reports
uses: actions/upload-artifact@v4
if: always()
with:
name: "build-reports-${{ github.run_attempt }}-In process embedding model tests - ${{matrix.module}}"
path: |
build-reports.zip
retention-days: 7

build-report:
runs-on: ubuntu-latest
name: Build report
needs: [quick-build, jvm-tests, native-tests]
if: always()
steps:
- uses: actions/download-artifact@v4
with:
path: build-reports-artifacts
pattern: "build-reports-${{ github.run_attempt }}-"
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 21
- name: Produce report and add it as job summary
uses: quarkusio/action-build-reporter@main
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
build-reports-artifacts-path: build-reports-artifacts

0 comments on commit 92d2219

Please sign in to comment.