# The main CI of Hibernate ORM is https://ci.hibernate.org/job/hibernate-orm-pipeline/. # However, Hibernate ORM builds run on GitHub actions regularly # to check that it still works and can be used in GitHub forks. # See https://docs.github.com/en/free-pro-team@latest/actions # for more information about GitHub actions. name: Hibernate ORM build-Atlas on: pull_request: branches: - '6.4' permissions: {} # none # See https://github.com/hibernate/hibernate-orm/pull/4615 for a description of the behavior we're getting. concurrency: # Consider that two builds are in the same concurrency group (cannot run concurrently) # if they use the same workflow and are about the same branch ("ref") or pull request. group: "workflow = ${{ github.workflow }}, ref = ${{ github.event.ref }}, pr = ${{ github.event.pull_request.id }}" # Cancel previous builds in the same concurrency group even if they are in process # for pull requests or pushes to forks (not the upstream repository). cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'hibernate/hibernate-orm' }} jobs: build: permissions: contents: read name: Java 11 # runs-on: ubuntu-latest runs-on: [self-hosted, Linux, X64, OCI] strategy: fail-fast: false matrix: include: - rdbms: oracle_atps - rdbms: oracle_db19c - rdbms: oracle_db21c - rdbms: oracle_db23c steps: - uses: actions/checkout@v4 with: persist-credentials: false - name: Reclaim disk space and sanitize user home run: .github/ci-prerequisites-atlas.sh - name: Start database env: RDBMS: ${{ matrix.rdbms }} RUNID: ${{ github.run_number }} run: ci/database-start.sh - name: Set up Java 11 uses: graalvm/setup-graalvm@v1 with: distribution: 'graalvm' java-version: '21' - name: Generate cache key id: cache-key run: | CURRENT_BRANCH="${{ github.repository != 'hibernate/hibernate-orm' && 'fork' || github.base_ref || github.ref_name }}" CURRENT_MONTH=$(/bin/date -u "+%Y-%m") CURRENT_DAY=$(/bin/date -u "+%d") ROOT_CACHE_KEY="buildtool-cache-atlas" echo "buildtool-monthly-cache-key=${ROOT_CACHE_KEY}-${CURRENT_MONTH}" >> $GITHUB_OUTPUT echo "buildtool-monthly-branch-cache-key=${ROOT_CACHE_KEY}-${CURRENT_MONTH}-${CURRENT_BRANCH}" >> $GITHUB_OUTPUT echo "buildtool-cache-key=${ROOT_CACHE_KEY}-${CURRENT_MONTH}-${CURRENT_BRANCH}-${CURRENT_DAY}" >> $GITHUB_OUTPUT - name: Cache Maven/Gradle Dependency/Dist Caches id: cache-maven uses: actions/cache@v4 # if it's not a pull request, we restore and save the cache if: github.event_name != 'pull_request' with: path: | ~/.m2/repository/ ~/.m2/wrapper/ ~/.gradle/caches/modules-2 ~/.gradle/wrapper/ # A new cache will be stored daily. After that first store of the day, cache save actions will fail because the cache is immutable but it's not a problem. # The whole cache is dropped monthly to prevent unlimited growth. # The cache is per branch but in case we don't find a branch for a given branch, we will get a cache from another branch. key: ${{ steps.cache-key.outputs.buildtool-cache-key }} restore-keys: | ${{ steps.cache-key.outputs.buildtool-monthly-branch-cache-key }}- ${{ steps.cache-key.outputs.buildtool-monthly-cache-key }}- - name: Restore Maven/Gradle Dependency/Dist Caches uses: actions/cache/restore@v4 # if it a pull request, we restore the cache but we don't save it if: github.event_name == 'pull_request' with: path: | ~/.m2/repository/ ~/.m2/wrapper/ ~/.gradle/caches/modules-2 ~/.gradle/wrapper/ key: ${{ steps.cache-key.outputs.buildtool-cache-key }} restore-keys: | ${{ steps.cache-key.outputs.buildtool-monthly-branch-cache-key }}- ${{ steps.cache-key.outputs.buildtool-monthly-cache-key }}- - name: Run build script env: RDBMS: ${{ matrix.rdbms }} RUNID: ${{ github.run_number }} run: ./ci/build-github.sh shell: bash - name: Upload test reports (if Gradle failed) uses: actions/upload-artifact@v4 if: failure() with: name: test-reports-java11-${{ matrix.rdbms }} path: | ./**/target/reports/tests/ ./**/target/reports/checkstyle/ - name: Omit produced artifacts from build cache run: ./ci/before-cache.sh