# 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. language: java matrix: include: - stage: "Cache" name: "Cache Dependencies - no explicit jdk specified" script: >- if [ ! -d "$HOME"/.m2/repository ] || [ ! "$(ls -A "$HOME"/.m2/repository)" ] ; then echo "Cached Maven repository does not exist, downloading dependencies..." mvn -V -T 1C -pl !./nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-nar,!./nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-processors dependency:go-offline -Dsilent -ntp --fail-never \ | grep -v -F -f .travis-output-filters -e "Failed to execute goal on project" else echo "Cached Maven repository exists, skipping dependency cache" fi - stage: "Cache" name: "Cache Dependencies - openjdk8" jdk: openjdk8 script: >- if [ ! -d "$HOME"/.m2/repository ] || [ ! "$(ls -A "$HOME"/.m2/repository)" ] ; then echo "Cached Maven repository does not exist, downloading dependencies..." mvn -V -T 1C -pl !./nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-nar,!./nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-processors dependency:go-offline -Dsilent -ntp --fail-never \ | grep -v -F -f .travis-output-filters -e "Failed to execute goal on project" else echo "Cached Maven repository exists, skipping dependency cache" fi # For the build stages, use -pl to exclude the following from the build to reduce build time: # non-api nar modules # assembly modules # nifi-maven-archetype directories that have "__" in the name - stage: "Build" name: "Build Java 8 EN" jdk: openjdk8 script: >- mvn clean install -V -T 1C -pl `find . -type d \( -name "*-nar" -or -name "*-assembly" -or -name "*hive3*" -or -name "nifi-system-test*" \) -and -not -name "*api-nar" -and -not -path "*/target/*" -and -not -name "*__*" -printf "!./%P,"` -Pcontrib-check,include-grpc -Ddir-only -Dmaven.surefire.arguments="-Duser.language=en -Duser.region=US" | grep -v -F -f .travis-output-filters && test ${PIPESTATUS[0]} -eq 0 - stage: "Build" name: "Build Java 8 FR" jdk: openjdk8 script: >- mvn clean install -V -T 1C -pl `find . -type d \( -name "*-nar" -or -name "*-assembly" -or -name "*hive3*" -or -name "nifi-system-test*" \) -and -not -name "*api-nar" -and -not -path "*/target/*" -and -not -name "*__*" -printf "!./%P,"` -Pcontrib-check,include-grpc -Ddir-only -Dmaven.surefire.arguments="-Duser.language=fr -Duser.region=FR" | grep -v -F -f .travis-output-filters && test ${PIPESTATUS[0]} -eq 0 - stage: "Build" name: "Build Java 8 JA" jdk: openjdk8 script: >- mvn clean install -V -T 1C -pl `find . -type d \( -name "*-nar" -or -name "*-assembly" -or -name "*hive3*" -or -name "nifi-system-test*" \) -and -not -name "*api-nar" -and -not -path "*/target/*" -and -not -name "*__*" -printf "!./%P,"` -Pcontrib-check,include-grpc -Ddir-only -Dmaven.surefire.arguments="-Duser.language=ja -Duser.region=JP" | grep -v -F -f .travis-output-filters && test ${PIPESTATUS[0]} -eq 0 - stage: "Build" name: "Build Java 11 EN" # Do not specify "jdk:" here, install-jdk.sh will download the JDK set JAVA_HOME appropriately before_script: # Download the newest version of sormuras' install-jdk.sh to /tmp # install-jdk.sh is used by Travis internally, sormoras is the maintainer of that script - wget -O /tmp/install-jdk.sh https://github.com/sormuras/bach/raw/master/install-jdk.sh # Need to specifically install AdoptOpenJDK 11.0.4 (Linux, HotSpot) since Travis does not offer it by default # The link to the AdoptOpenJDK 11.0.4 .tar.gz is taken directly from AdoptOpenJDK's website - >- source /tmp/install-jdk.sh --url 'https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.4%2B11/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz' script: - >- mvn clean install -V -T 1C -pl `find . -type d \( -name "*-nar" -or -name "*-assembly" -or -name "*hive3*" -or -name "nifi-system-test*" \) -and -not -name "*api-nar" -and -not -path "*/target/*" -and -not -name "*__*" -printf "!./%P,"` -Pcontrib-check,include-grpc -Ddir-only -Dmaven.surefire.arguments="-Duser.language=en -Duser.region=US" | grep -v -F -f .travis-output-filters && test ${PIPESTATUS[0]} -eq 0 os: - linux # Caches mvn repository in order to speed up builds cache: directories: - $HOME/.m2 - $HOME/.npm before_cache: # Remove nifi repo again to save travis from caching it - rm -rf $HOME/.m2/repository/org/apache/nifi/ # before_install aids in a couple workarounds for issues within the Travis-CI environment # 1. Workaround for buffer overflow issues with OpenJDK versions of java as per https://github.com/travis-ci/travis-ci/issues/5227#issuecomment-165135711 # 2. Workaround for non-existent Maven repository as per: https://github.com/travis-ci/travis-ci/issues/4629#issuecomment-131214465 before_install: - sudo hostname "$(hostname | cut -c1-63)" - sed -e "s/^\\(127\\.0\\.0\\.1.*\\)/\\1 $(hostname | cut -c1-63)/" /etc/hosts | sudo tee /etc/hosts - sed -i.bak -e 's|https://nexus.codehaus.org/snapshots/|https://oss.sonatype.org/content/repositories/codehaus-snapshots/|g' ~/.m2/settings.xml - echo "MAVEN_OPTS='-Xmx2g -XX:+UseG1GC'" > ~/.mavenrc - cat ~/.mavenrc # Remove nifi repo again to save travis from caching it - rm -rf $HOME/.m2/repository/org/apache/nifi/ # Install Maven 3.6.1 - wget -O /tmp/apache-maven-3.6.1-bin.tar.gz https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz - tar xzf /tmp/apache-maven-3.6.1-bin.tar.gz -C /tmp - export M2_HOME=/tmp/apache-maven-3.6.1 - export PATH=$M2_HOME/bin:$PATH install: true