| # 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) |