# 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 - graphviz - gv # 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 --no-daemon --console=plain licenseMain licenseTest check build test --fail-fast doc && 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 )) # 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)