[#1930] Change properties to test ORM 6.6 snapshots #245
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Hibernate Reactive CI | |
on: | |
push: | |
branches: | |
- 'main' | |
- 'wip/**' | |
tags: | |
- '2.*' | |
pull_request: | |
branches: | |
- 'main' | |
- 'wip/**' | |
# We run the build every hour to check for changes in the snapshots | |
schedule: | |
# * is a special character in YAML, so you have to quote this string | |
# Run every hour at minute 25 | |
- cron: '25 * * * *' | |
# Allow running this workflow against a specific branch/tag | |
workflow_dispatch: | |
# 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-reactive' }} | |
jobs: | |
run_examples: | |
name: Run examples in '${{ matrix.example }}' on ${{ matrix.db }} | |
if: ( github.event_name == 'schedule' && startsWith( github.ref, 'refs/heads/wip/' ) ) || ( github.event_name != 'schedule' ) | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
example: [ 'session-example', 'native-sql-example' ] | |
db: [ 'MySQL', 'PostgreSQL' ] | |
exclude: | |
# 'native-sql-example' doesn't run on MySQL because it has native queries | |
- example: 'native-sql-example' | |
db: 'MySQL' | |
services: | |
# Label used to access the service container | |
mysql: | |
# Docker Hub image | |
image: mysql:8.4.0 | |
env: | |
MYSQL_ROOT_PASSWORD: hreact | |
MYSQL_DATABASE: hreact | |
MYSQL_USER: hreact | |
MYSQL_PASSWORD: hreact | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd="mysqladmin ping" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 3306:3306 | |
postgres: | |
# Docker Hub image | |
image: postgres:16.3 | |
env: | |
POSTGRES_DB: hreact | |
POSTGRES_USER: hreact | |
POSTGRES_PASSWORD: hreact | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
ports: | |
- 5432:5432 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Get year/month for cache key | |
id: get-date | |
run: | | |
echo "::set-output name=yearmonth::$(/bin/date -u "+%Y-%m")" | |
shell: bash | |
- name: Cache Gradle downloads | |
uses: actions/cache@v2 | |
id: cache-gradle | |
with: | |
path: | | |
.gradle/caches | |
.gradle/jdks | |
.gradle/wrapper | |
# refresh cache every month to avoid unlimited growth | |
key: gradle-examples-${{ matrix.db }}-${{ steps.get-date.outputs.yearmonth }} | |
- name: Set up JDK 11 | |
uses: actions/[email protected] | |
with: | |
distribution: 'temurin' | |
java-version: 11 | |
- name: Print the effective ORM version used | |
run: ./gradlew :${{ matrix.example }}:dependencyInsight --dependency org.hibernate.orm:hibernate-core | |
- name: Run examples in '${{ matrix.example }}' on ${{ matrix.db }} | |
run: ./gradlew :${{ matrix.example }}:runAllExamplesOn${{ matrix.db }} | |
- name: Upload reports (if build failed) | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: reports-examples-${{ matrix.db }} | |
path: './**/build/reports/' | |
test_dbs: | |
name: Test with ${{ matrix.db }} | |
if: ( github.event_name == 'schedule' && startsWith( github.ref, 'refs/heads/wip/' ) ) || ( github.event_name != 'schedule' ) | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
db: [ 'MariaDB', 'MySQL', 'PostgreSQL', 'MSSQLServer', 'CockroachDB', 'Db2', 'Oracle' ] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Get year/month for cache key | |
id: get-date | |
run: | | |
echo "::set-output name=yearmonth::$(/bin/date -u "+%Y-%m")" | |
shell: bash | |
- name: Cache Gradle downloads | |
uses: actions/cache@v2 | |
id: cache-gradle | |
with: | |
path: | | |
.gradle/caches | |
.gradle/jdks | |
.gradle/wrapper | |
# refresh cache every month to avoid unlimited growth | |
key: gradle-db-${{ matrix.db }}-${{ steps.get-date.outputs.yearmonth }} | |
- name: Set up JDK 11 | |
uses: actions/[email protected] | |
with: | |
distribution: 'temurin' | |
java-version: 11 | |
- name: Print the effective ORM version used | |
run: ./gradlew :hibernate-reactive-core:dependencyInsight --dependency org.hibernate.orm:hibernate-core | |
- name: Build and Test with ${{ matrix.db }} | |
run: ./gradlew build -PshowStandardOutput -Pdocker -Pdb=${{ matrix.db }} | |
- name: Upload reports (if build failed) | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: reports-db-${{ matrix.db }} | |
path: './**/build/reports/' | |
test_jdks: | |
name: Test with Java ${{ matrix.java.name }} | |
if: ( github.event_name == 'schedule' && startsWith( github.ref, 'refs/heads/wip/' ) ) || ( github.event_name != 'schedule' ) | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# To list the available "feature versions" on adoptium.net (ignore "tip_version", it's not relevant): | |
# https://api.adoptium.net/v3/info/available_releases | |
# To list the available releases for a given "feature version" on adoptium.net (example for 16): | |
# https://api.adoptium.net/v3/assets/latest/16/hotspot | |
# To see the available versions and download links on jdk.java.net: | |
# https://github.com/oracle-actions/setup-java/blob/main/jdk.java.net-uri.properties | |
java: | |
- { name: "11", java_version_numeric: 11 } | |
- { name: "17", java_version_numeric: 17 } | |
# We want to enable preview features when testing newer builds of OpenJDK: | |
# even if we don't use these features, just enabling them can cause side effects | |
# and it's useful to test that. | |
- { name: "20", java_version_numeric: 20, jvm_args: '--enable-preview' } | |
- { name: "21", java_version_numeric: 21, jvm_args: '--enable-preview' } | |
- { name: "22", java_version_numeric: 22, from: 'jdk.java.net', jvm_args: '--enable-preview' } | |
- { name: "23-ea", java_version_numeric: 23, from: 'jdk.java.net', jvm_args: '--enable-preview' } | |
- { name: "24-ea", java_version_numeric: 24, from: 'jdk.java.net', jvm_args: '--enable-preview' } | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Get year/month for cache key | |
id: get-date | |
run: | | |
echo "::set-output name=yearmonth::$(/bin/date -u "+%Y-%m")" | |
shell: bash | |
- name: Cache Gradle downloads | |
uses: actions/cache@v2 | |
id: cache-gradle | |
with: | |
path: | | |
.gradle/caches | |
.gradle/jdks | |
.gradle/wrapper | |
# refresh cache every month to avoid unlimited growth | |
key: gradle-java${{ matrix.java }}-${{ steps.get-date.outputs.yearmonth }} | |
- name: Set up latest JDK ${{ matrix.java.name }} from jdk.java.net | |
if: matrix.java.from == 'jdk.java.net' | |
uses: oracle-actions/setup-java@v1 | |
with: | |
website: jdk.java.net | |
release: ${{ matrix.java.java_version_numeric }} | |
- name: Set up latest JDK ${{ matrix.java.name }} from Adoptium | |
if: matrix.java.from == '' || matrix.java.from == 'adoptium.net' | |
uses: actions/[email protected] | |
with: | |
distribution: 'temurin' | |
java-version: ${{ matrix.java.java_version_numeric }} | |
check-latest: true | |
- name: Export path to JDK ${{ matrix.java.name }} | |
id: testjdk-exportpath | |
run: echo "::set-output name=path::${JAVA_HOME}" | |
# Always use JDK 11 to build the main code: that's what we use for releases. | |
- name: Set up JDK 11 | |
uses: actions/[email protected] | |
with: | |
distribution: 'temurin' | |
java-version: 11 | |
check-latest: true | |
- name: Export path to JDK 11 | |
id: mainjdk-exportpath | |
run: echo "::set-output name=path::${JAVA_HOME}" | |
- name: Display exact version of JDK ${{ matrix.java.name }} | |
run: | | |
${{ steps.testjdk-exportpath.outputs.path }}/bin/java -version | |
- name: Print the effective ORM version used | |
run: ./gradlew :hibernate-reactive-core:dependencyInsight --dependency org.hibernate.orm:hibernate-core | |
- name: Build and Test with Java ${{ matrix.java.name }} | |
run: | | |
./gradlew build -PshowStandardOutput -Pdocker -Ptest.jdk.version=${{ matrix.java.java_version_numeric }} \ | |
-Porg.gradle.java.installations.paths=${{ steps.mainjdk-exportpath.outputs.path }},${{ steps.testjdk-exportpath.outputs.path }} \ | |
${{ matrix.java.jvm_args && '-Ptest.jdk.launcher.args=' }}${{ matrix.java.jvm_args }} | |
- name: Upload reports (if build failed) | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: reports-java${{ matrix.java.name }} | |
path: './**/build/reports/' | |
snapshot: | |
name: Release snapshot | |
if: github.event_name == 'push' && startsWith( github.ref, 'refs/heads/wip/' ) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up JDK 11 | |
uses: actions/[email protected] | |
with: | |
distribution: 'temurin' | |
java-version: 11 | |
- name: Create artifacts | |
run: ./gradlew assemble | |
- name: Detect the version of Hibernate Reactive | |
id: detect-version | |
run: | | |
sed -E 's/^projectVersion( *= *| +)([^ ]+)/::set-output name=version::\2/g' gradle/version.properties | |
- name: Publish snapshots to OSSRH, close repository and release | |
env: | |
ORG_GRADLE_PROJECT_sonatypeOssrhUser: ${{ secrets.SONATYPE_OSSRH_USER }} | |
ORG_GRADLE_PROJECT_sonatypeOssrhPassword: ${{ secrets.SONATYPE_OSSRH_PASSWORD }} | |
run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository | |
release: | |
name: Release | |
if: github.event_name == 'push' && startsWith( github.ref, 'refs/tags/' ) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set git username and email | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "hibernate" | |
- name: Set up JDK 11 | |
uses: actions/[email protected] | |
with: | |
distribution: 'temurin' | |
java-version: 11 | |
- name: Create artifacts | |
run: ./gradlew assemble | |
- name: Install SSH key | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.HIBERNATE_ORG_SSH_KEY }} | |
name: id_rsa_hibernate.org | |
known_hosts: ${{ secrets.HIBERNATE_ORG_SSH_KNOWN_HOSTS }} | |
config: | | |
Host github.com | |
User hibernate | |
IdentityFile ~/.ssh/id_rsa_hibernate.org | |
- name: Publish documentation on Hibernate.org | |
run: ./gradlew publishDocumentation -PdocPublishBranch=production | |
- name: Publish artifacts to OSSRH, close repository and release | |
env: | |
ORG_GRADLE_PROJECT_sonatypeOssrhUser: ${{ secrets.SONATYPE_OSSRH_USER }} | |
ORG_GRADLE_PROJECT_sonatypeOssrhPassword: ${{ secrets.SONATYPE_OSSRH_PASSWORD }} | |
run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository |