HHH-14336 Enable tests across databases in Github Actions
This commit is contained in:
parent
1a9bd7d4b3
commit
e468aeb786
|
@ -0,0 +1,110 @@
|
||||||
|
# The main CI of Hibernate ORM is https://ci.hibernate.org/job/hibernate-orm-6.0-h2-main/.
|
||||||
|
# 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 contributor build
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'wip/6.0'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- 'master'
|
||||||
|
- 'wip/6.0'
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build and test on Java 8 against a wide range of DBs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- rdbms: h2
|
||||||
|
jdk: 8
|
||||||
|
- rdbms: derby
|
||||||
|
jdk: 8
|
||||||
|
- rdbms: mariadb
|
||||||
|
jdk: 8
|
||||||
|
- rdbms: postgresql
|
||||||
|
jdk: 8
|
||||||
|
- rdbms: oracle
|
||||||
|
jdk: 8
|
||||||
|
- rdbms: db2
|
||||||
|
jdk: 8
|
||||||
|
- rdbms: mssql
|
||||||
|
jdk: 8
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up Java 8
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 1.8
|
||||||
|
- 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 Maven local repository
|
||||||
|
uses: actions/cache@v2
|
||||||
|
id: cache-maven
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.m2/repository
|
||||||
|
~/.gradle/caches/
|
||||||
|
~/.gradle/wrapper/
|
||||||
|
# refresh cache every month to avoid unlimited growth
|
||||||
|
key: maven-localrepo-${{ steps.get-date.outputs.yearmonth }}
|
||||||
|
- name: Run build script
|
||||||
|
env:
|
||||||
|
RDBMS: ${{ matrix.rdbms }}
|
||||||
|
JDK: ${{ matrix.jdk }}
|
||||||
|
run: ./ci/build-guthub.sh
|
||||||
|
shell: bash
|
||||||
|
- name: Upload test reports (if Gradle failed)
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
name: test-reports-java8
|
||||||
|
path: './**/target/reports/tests/test/'
|
||||||
|
- name: Omit produced artifacts from build cache
|
||||||
|
run: ./ci/before-cache.sh
|
||||||
|
build11:
|
||||||
|
name: Build and test on Java 11
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Set up Java 11
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 11
|
||||||
|
- 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 Maven local repository
|
||||||
|
uses: actions/cache@v2
|
||||||
|
id: cache-maven
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.m2/repository
|
||||||
|
~/.gradle/caches/
|
||||||
|
~/.gradle/wrapper/
|
||||||
|
# refresh cache every month to avoid unlimited growth
|
||||||
|
key: maven-localrepo-${{ steps.get-date.outputs.yearmonth }}
|
||||||
|
- name: Run build script
|
||||||
|
env:
|
||||||
|
JDK: 11
|
||||||
|
run: ./ci/build-guthub.sh
|
||||||
|
shell: bash
|
||||||
|
- name: Upload test reports (if Gradle failed)
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
if: failure()
|
||||||
|
with:
|
||||||
|
name: test-reports-java11
|
||||||
|
path: './**/target/reports/tests/test/'
|
||||||
|
- name: Omit produced artifacts from build cache
|
||||||
|
run: ./ci/before-cache.sh
|
66
.travis.yml
66
.travis.yml
|
@ -1,26 +1,56 @@
|
||||||
dist: trusty
|
dist: trusty
|
||||||
language: java
|
language: java
|
||||||
|
|
||||||
jobs:
|
|
||||||
include:
|
|
||||||
- stage: Oracle JDK 8
|
|
||||||
jdk: oraclejdk8
|
|
||||||
- stage: AdoptOpenJDK 11.0.9
|
|
||||||
install:
|
|
||||||
- curl -L -o install-jdk.sh https://github.com/sormuras/bach/raw/master/install-jdk.sh
|
|
||||||
- source ./install-jdk.sh --target ./openjdk11 --url https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11.1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.9_11.tar.gz
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- java -version
|
|
||||||
- ./gradlew assemble
|
|
||||||
script:
|
script:
|
||||||
- ./gradlew check -Plog-test-progress=true --stacktrace
|
- ./ci/build-travis.sh
|
||||||
before_cache:
|
before_cache:
|
||||||
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
- ./ci/before-cache.sh
|
||||||
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
|
||||||
- rm -f $HOME/.gradle/caches/*/fileHashes/fileHashes.bin
|
|
||||||
- rm -f $HOME/.gradle/caches/*/fileHashes/fileHashes.lock
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $HOME/.gradle/caches/
|
- $HOME/.gradle/caches/
|
||||||
- $HOME/.gradle/wrapper/
|
- $HOME/.gradle/wrapper/
|
||||||
|
matrix:
|
||||||
|
fast_finish: true
|
||||||
|
include:
|
||||||
|
- env: RDBMS=h2
|
||||||
|
jdk: oraclejdk8
|
||||||
|
sudo: required
|
||||||
|
# - env: RDBMS=derby
|
||||||
|
# jdk: oraclejdk8
|
||||||
|
# sudo: required
|
||||||
|
# - env: RDBMS=mariadb
|
||||||
|
# jdk: oraclejdk8
|
||||||
|
# sudo: true
|
||||||
|
# services:
|
||||||
|
# - docker
|
||||||
|
# - env: RDBMS=postgresql
|
||||||
|
# jdk: oraclejdk8
|
||||||
|
# sudo: true
|
||||||
|
# services:
|
||||||
|
# - docker
|
||||||
|
# - env: RDBMS=oracle
|
||||||
|
# jdk: oraclejdk8
|
||||||
|
# sudo: true
|
||||||
|
# services:
|
||||||
|
# - docker
|
||||||
|
# - env: RDBMS=db2
|
||||||
|
# jdk: oraclejdk8
|
||||||
|
# sudo: true
|
||||||
|
# services:
|
||||||
|
# - docker
|
||||||
|
# - env: RDBMS=mssql
|
||||||
|
# jdk: oraclejdk8
|
||||||
|
# sudo: true
|
||||||
|
# services:
|
||||||
|
# - docker
|
||||||
|
- env: JDK=11
|
||||||
|
install:
|
||||||
|
- curl -L -o install-jdk.sh https://github.com/sormuras/bach/raw/master/install-jdk.sh
|
||||||
|
- source ./install-jdk.sh --target ./openjdk11 --url https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11.1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.9_11.tar.gz
|
||||||
|
allow_failures:
|
||||||
|
# - env: RDBMS=derby
|
||||||
|
# - env: RDBMS=mariadb
|
||||||
|
# - env: RDBMS=postgresql
|
||||||
|
# - env: RDBMS=oracle
|
||||||
|
# - env: RDBMS=db2
|
||||||
|
# - env: RDBMS=mssql
|
||||||
|
- env: JDK=11
|
|
@ -0,0 +1,7 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
||||||
|
rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
||||||
|
rm -f $HOME/.gradle/caches/*/fileHashes/fileHashes.bin
|
||||||
|
rm -f $HOME/.gradle/caches/*/fileHashes/fileHashes.lock
|
||||||
|
rm -fr $HOME/.m2/repository/org/hibernate
|
|
@ -0,0 +1,21 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
java -version
|
||||||
|
./gradlew assemble
|
||||||
|
if [ "$RDBMS" == 'mysql' ]; then
|
||||||
|
bash ../docker_db.sh mysql_5_7
|
||||||
|
elif [ "$RDBMS" == 'mysql8' ]; then
|
||||||
|
bash ../docker_db.sh mysql_8_0
|
||||||
|
elif [ "$RDBMS" == 'mariadb' ]; then
|
||||||
|
bash ../docker_db.sh mariadb
|
||||||
|
elif [ "$RDBMS" == 'postgresql' ]; then
|
||||||
|
bash ../docker_db.sh postgresql_9_5
|
||||||
|
elif [ "$RDBMS" == 'db2' ]; then
|
||||||
|
bash ../docker_db.sh db2
|
||||||
|
elif [ "$RDBMS" == 'oracle' ]; then
|
||||||
|
bash ../docker_db.sh oracle
|
||||||
|
elif [ "$RDBMS" == 'mssql' ]; then
|
||||||
|
bash ../docker_db.sh mssql
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec bash ./build.sh
|
|
@ -0,0 +1,25 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
java -version
|
||||||
|
./gradlew assemble
|
||||||
|
if [ "$RDBMS" == 'mysql' ]; then
|
||||||
|
sudo service mysql stop
|
||||||
|
bash ../docker_db.sh mysql_5_7
|
||||||
|
elif [ "$RDBMS" == 'mysql8' ]; then
|
||||||
|
sudo service mysql stop
|
||||||
|
bash ../docker_db.sh mysql_8_0
|
||||||
|
elif [ "$RDBMS" == 'mariadb' ]; then
|
||||||
|
sudo service mysql stop
|
||||||
|
bash ../docker_db.sh mariadb
|
||||||
|
elif [ "$RDBMS" == 'postgresql' ]; then
|
||||||
|
sudo service postgres stop
|
||||||
|
bash ../docker_db.sh postgresql_9_5
|
||||||
|
elif [ "$RDBMS" == 'db2' ]; then
|
||||||
|
bash ../docker_db.sh db2
|
||||||
|
elif [ "$RDBMS" == 'oracle' ]; then
|
||||||
|
bash ../docker_db.sh oracle
|
||||||
|
elif [ "$RDBMS" == 'mssql' ]; then
|
||||||
|
bash ../docker_db.sh mssql
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec bash ./build.sh
|
|
@ -0,0 +1,18 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
goal=
|
||||||
|
if [ "$RDBMS" == "derby" ]; then
|
||||||
|
goal="-Pdb=derby"
|
||||||
|
elif [ "$RDBMS" == "mariadb" ]; then
|
||||||
|
goal="-Pdb=mariadb"
|
||||||
|
elif [ "$RDBMS" == "postgresql" ]; then
|
||||||
|
goal="-Pdb=pgsql"
|
||||||
|
elif [ "$RDBMS" == "oracle" ]; then
|
||||||
|
goal="-Pdb=oracle -Dhibernate.connection.url=jdbc:oracle:thin:@localhost:1521:XE -Dhibernate.connection.username=SYSTEM -Dhibernate.connection.password=Oracle18"
|
||||||
|
elif [ "$RDBMS" == "db2" ]; then
|
||||||
|
goal="-Pdb=db2 -Dhibernate.connection.url=jdbc:db2://localhost:50000/orm_test -Dhibernate.connection.username=orm_test -Dhibernate.connection.password=orm_test"
|
||||||
|
elif [ "$RDBMS" == "mssql" ]; then
|
||||||
|
goal="-Pdb=mssql -Dhibernate.connection.url=jdbc:sqlserver://localhost:1433;databaseName= -Dhibernate.connection.username=sa -Dhibernate.connection.password=hibernate_orm_test"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec ./gradlew check ${goal} -Plog-test-progress=true --stacktrace
|
|
@ -0,0 +1,8 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||||
|
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
jdbcDependency 'com.ibm.db2:jcc:11.5.4.0'
|
|
@ -0,0 +1,26 @@
|
||||||
|
#
|
||||||
|
# Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
#
|
||||||
|
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||||
|
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
|
#
|
||||||
|
|
||||||
|
hibernate.dialect org.hibernate.dialect.DB2Dialect
|
||||||
|
hibernate.connection.driver_class com.ibm.db2.jcc.DB2Driver
|
||||||
|
hibernate.connection.url jdbc:db2://localhost:50000/orm_test
|
||||||
|
hibernate.connection.username orm_test
|
||||||
|
hibernate.connection.password orm_test
|
||||||
|
|
||||||
|
hibernate.connection.pool_size 5
|
||||||
|
|
||||||
|
hibernate.show_sql false
|
||||||
|
hibernate.format_sql true
|
||||||
|
|
||||||
|
hibernate.max_fetch_depth 5
|
||||||
|
|
||||||
|
hibernate.cache.region_prefix hibernate.test
|
||||||
|
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
||||||
|
|
||||||
|
javax.persistence.validation.mode=NONE
|
||||||
|
hibernate.service.allow_crawling=false
|
||||||
|
hibernate.session.events.log=true
|
|
@ -5,10 +5,4 @@
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
jdbcDependency 'com.microsoft.sqlserver:mssql-jdbc:6.4.0.jre8'
|
jdbcDependency 'com.microsoft.sqlserver:mssql-jdbc:6.4.0.jre8'
|
|
@ -5,13 +5,6 @@
|
||||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
|
||||||
# Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
#
|
|
||||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
#
|
|
||||||
|
|
||||||
hibernate.dialect org.hibernate.dialect.SQLServer2012Dialect
|
hibernate.dialect org.hibernate.dialect.SQLServer2012Dialect
|
||||||
hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver
|
hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||||
hibernate.connection.url jdbc:sqlserver://hibernate-testing-mssql-express.ccuzkqo3zqzq.us-east-1.rds.amazonaws.com
|
hibernate.connection.url jdbc:sqlserver://hibernate-testing-mssql-express.ccuzkqo3zqzq.us-east-1.rds.amazonaws.com
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
mysql_5_7() {
|
||||||
|
docker rm -f mysql || true
|
||||||
|
docker run --name mysql -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -p3306:3306 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql_8_0() {
|
||||||
|
docker rm -f mysql || true
|
||||||
|
docker run --name mysql -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -p3306:3306 -d mysql:8.0.21 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
||||||
|
}
|
||||||
|
|
||||||
|
mariadb() {
|
||||||
|
docker rm -f mariadb || true
|
||||||
|
docker run --name mariadb -e MYSQL_USER=hibernate_orm_test -e MYSQL_PASSWORD=hibernate_orm_test -e MYSQL_DATABASE=hibernate_orm_test -p3306:3306 -d mariadb:10.5.8 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
||||||
|
}
|
||||||
|
|
||||||
|
postgresql_9_5() {
|
||||||
|
docker rm -f postgres || true
|
||||||
|
docker run --name postgres -e POSTGRES_USER=hibernate_orm_test -e POSTGRES_PASSWORD=hibernate_orm_test -e POSTGRES_DB=hibernate_orm_test -p5432:5432 -d postgres:9.5
|
||||||
|
}
|
||||||
|
|
||||||
|
db2() {
|
||||||
|
docker rm -f db2 || true
|
||||||
|
docker run --name db2 --privileged -e DB2INSTANCE=orm_test -e DB2INST1_PASSWORD=orm_test -e DBNAME=orm_test -e LICENSE=accept -p 50000:50000 -d ibmcom/db2:11.5.0.0a
|
||||||
|
# Give the container some time to start
|
||||||
|
OUTPUT=
|
||||||
|
while [[ $OUTPUT != *"Setup has completed"* ]]; do
|
||||||
|
echo "Waiting for DB2 to start..."
|
||||||
|
sleep 10
|
||||||
|
OUTPUT=$(docker logs db2)
|
||||||
|
done
|
||||||
|
docker exec -t db2 su - orm_test bash -c ". /database/config/orm_test/sqllib/db2profile && /database/config/orm_test/sqllib/bin/db2 'connect to orm_test' && /database/config/orm_test/sqllib/bin/db2 'CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY AUTOMATIC STORAGE'"
|
||||||
|
}
|
||||||
|
|
||||||
|
mssql() {
|
||||||
|
docker rm -f mssql || true
|
||||||
|
docker run --name mssql -d -p 1433:1433 -e "SA_PASSWORD=hibernate_orm_test" -e ACCEPT_EULA=Y microsoft/mssql-server-linux:2017-CU13
|
||||||
|
}
|
||||||
|
|
||||||
|
oracle() {
|
||||||
|
docker rm -f oracle || true
|
||||||
|
# We need to use the defaults
|
||||||
|
# SYSTEM/Oracle18
|
||||||
|
docker run --shm-size=1536m --name oracle -d -p 1521:1521 quillbuilduser/oracle-18-xe
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z ${1} ]; then
|
||||||
|
echo "No db name provided"
|
||||||
|
echo "Provide one of:"
|
||||||
|
echo -e "\tmysql_5_7"
|
||||||
|
echo -e "\tmysql_8_0"
|
||||||
|
echo -e "\tmariadb"
|
||||||
|
echo -e "\tpostgresql_9_5"
|
||||||
|
echo -e "\tdb2"
|
||||||
|
echo -e "\tmssql"
|
||||||
|
echo -e "\toracle"
|
||||||
|
else
|
||||||
|
${1}
|
||||||
|
fi
|
|
@ -131,7 +131,7 @@ ext {
|
||||||
|
|
||||||
oracle: 'com.oracle.database.jdbc:ojdbc8:19.8.0.0',
|
oracle: 'com.oracle.database.jdbc:ojdbc8:19.8.0.0',
|
||||||
mssql: 'com.microsoft.sqlserver:mssql-jdbc:7.2.1.jre8',
|
mssql: 'com.microsoft.sqlserver:mssql-jdbc:7.2.1.jre8',
|
||||||
db2: 'com.ibm.db2:db2jcc:10.5',
|
db2: 'com.ibm.db2:jcc:11.5.4.0',
|
||||||
hana: 'com.sap.cloud.db.jdbc:ngdbc:2.4.59',
|
hana: 'com.sap.cloud.db.jdbc:ngdbc:2.4.59',
|
||||||
|
|
||||||
jodaTime: "joda-time:joda-time:${jodaTimeVersion}",
|
jodaTime: "joda-time:joda-time:${jodaTimeVersion}",
|
||||||
|
|
Loading…
Reference in New Issue