78 lines
4.2 KiB
YAML
78 lines
4.2 KiB
YAML
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
|
|
# https://docs.travis-ci.com/user/reference/linux/
|
|
# Must use a fixed distribution (and remember to occassionally upgrade..)
|
|
# to avoid surprise changes such as https://issues.apache.org/jira/browse/FINERACT-763
|
|
dist: bionic
|
|
|
|
language: generic
|
|
|
|
services:
|
|
- mysql
|
|
- docker
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- curl
|
|
|
|
# See https://issues.apache.org/jira/browse/FINERACT-937 for background re. what below is all about..
|
|
# We basically remove the outdated OpenJDK 11.0.2 which Travis image grabbed from java.net in
|
|
# https://github.com/travis-ci/travis-cookbooks/blob/master/cookbooks/travis_jdk/files/install-jdk.sh#L200
|
|
# (which has 11.0.2 hard-coded!), and instead replace it with the latest openjdk-11-jdk-headless Ubuntu package.
|
|
# NB /usr/local/lib/jvm/openjdk11/bin is also on the PATH, but there's no need to change it (because we rm -rf anyway)
|
|
before_install:
|
|
- echo $JAVA_HOME
|
|
- which java
|
|
- sudo rm -rf /usr/local/lib/jvm/
|
|
- sudo apt-get install -y openjdk-11-jdk-headless
|
|
- export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
|
|
- which java
|
|
- java -version
|
|
- $JAVA_HOME/bin/java -version
|
|
- echo "USE mysql;\nALTER USER 'root'@'localhost' IDENTIFIED BY 'mysql';\n" | mysql -u root
|
|
- mysql -u root -pmysql -e 'CREATE DATABASE IF NOT EXISTS `fineract_tenants`;'
|
|
- mysql -u root -pmysql -e 'CREATE DATABASE IF NOT EXISTS `fineract_default`;'
|
|
# Hardcoding the time zone is a temporary fix for https://issues.apache.org/jira/browse/FINERACT-723
|
|
- export TZ=Asia/Kolkata
|
|
|
|
# https://docs.travis-ci.com/user/languages/java/#caching
|
|
before_cache:
|
|
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
|
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
|
cache:
|
|
directories:
|
|
- $HOME/.gradle/caches/
|
|
- $HOME/.gradle/wrapper/
|
|
- $HOME/.m2
|
|
|
|
# NOTE: We used to run with --info, which is quite a bit more verbose, but is VERY useful to understand failures on Travis,
|
|
# where you do not have access to any files like build/reports/tests/index.html, only the Console.
|
|
# @see http://mrhaki.blogspot.ch/2013/05/gradle-goodness-show-more-information.html
|
|
# @see http://forums.gradle.org/gradle/topics/whats_new_in_gradle_1_1_test_logging for alternative
|
|
# https://jira.apache.org/jira/browse/FINERACT-732 removed that again, because it made Travis CI fail.
|
|
script:
|
|
- date
|
|
# using "&&" instead of several "-" means that integrationTest does not run if test fails,
|
|
# and Docker test does not run if integration test fails, which makes PR failure easier to understand.
|
|
# @see https://docs.travis-ci.com/user/job-lifecycle/#customizing-the-build-phase
|
|
- ./gradlew --console=plain -PautomatedBuild=true licenseMain licenseTest licenseIntegrationTest check && ./gradlew --console=plain -PautomatedBuild=true integrationTest --fail-fast && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 60s && curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health && (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 )) && ./gradlew generateSwaggerCode && cd build/swagger-code-fineract && mvn test
|
|
# We stop the mysql system service when running the Docker test to avoid port 3306 conflicts (unless we run the mysql in docker-compose on another port; req. FINERACT-773)
|
|
# The fancy /actuator/info test makes sure that has more than 100 characters of JSON to test that the git.properties worked (see FINERACT-983)
|