| # 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. |
| |
| # Note: TravisCI is used only for testing on Linux ARM64 |
| # The testing on x86_64 is done on Github Actions |
| |
| dist: focal |
| language: generic |
| sudo: required |
| arch: arm64-graviton2 |
| virt: vm |
| group: edge |
| |
| # install JDK and Maven from Ubuntu repos because TravisCI has no JDK 1.8 for ARM64 images |
| addons: |
| apt: |
| update: true |
| packages: |
| - openjdk-8-jdk |
| - maven |
| - unzip |
| |
| matrix: |
| fast_finish: true |
| include: |
| - env: PHASE=tests |
| - env: PHASE=build_checkstyle_protobuf |
| |
| cache: |
| directories: |
| - "$HOME/.m2" |
| - "$HOME/protobuf" |
| before_install: |
| - export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-arm64" |
| - export PATH="$JAVA_HOME/bin:$PATH" |
| - export DIRECTMEMORYMB=5120 |
| - free -m |
| - java -version |
| - mvn -version |
| - git fetch --unshallow |
| # Install libraries required for protobuf generation |
| - | |
| if [ $PHASE = "build_checkstyle_protobuf" ]; then \ |
| sudo apt-get install -y libboost-all-dev libzookeeper-mt-dev libsasl2-dev cmake libcppunit-dev checkinstall && \ |
| pushd .. && \ |
| if [ -f $HOME/protobuf/protobuf_3.16.1* ]; then \ |
| sudo dpkg -i $HOME/protobuf/protobuf_3.16.1*; \ |
| else \ |
| wget https://github.com/protocolbuffers/protobuf/releases/download/v3.16.1/protobuf-java-3.16.1.zip && \ |
| unzip protobuf-java-3.16.1.zip && pushd protobuf-3.16.1 && \ |
| ./configure && sudo make && sudo checkinstall -y && \ |
| if [ ! -d $HOME/protobuf ]; then \ |
| mkdir -p $HOME/protobuf; \ |
| fi && \ |
| mv protobuf_3.16.1* $HOME/protobuf/ && popd; \ |
| fi && \ |
| sudo ldconfig && popd; \ |
| fi |
| install: |
| # For tests phase runs unit tests |
| # For protobuf phase: builds Drill project, performs license checkstyle goal and regenerates Java and C++ Protobuf files |
| - | |
| if [ $PHASE = "tests" ]; then \ |
| mvn install --batch-mode --no-transfer-progress -DforkCount=1 -DdirectMemoryMb=$DIRECTMEMORYMB \ |
| -DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest,org.apache.drill.categories.SecurityTest"; \ |
| elif [ $PHASE = "build_checkstyle_protobuf" ]; then \ |
| MAVEN_OPTS="-Xms1G -Xmx1G" mvn install --no-transfer-progress -Drat.skip=false -Dlicense.skip=false --batch-mode -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -DskipTests=true -Dmaven.javadoc.skip=true -Dmaven.source.skip=true && \ |
| pushd protocol && mvn process-sources -P proto-compile && popd && \ |
| mkdir contrib/native/client/build && pushd contrib/native/client/build && /usr/bin/cmake -G "Unix Makefiles" .. && make cpProtobufs && popd; \ |
| fi |
| script: |
| # Checks whether project files weren't changed after regenerating protobufs |
| - | |
| if [ "$(git status -s | grep -c "")" -gt 0 ]; then \ |
| echo "The following changes are found in files after regenerating protobufs (output may be used as a patch to apply):" >&2 && |
| echo "$(git diff --color)" && \ |
| exit 1; \ |
| else |
| echo "All checks are passed!"; |
| fi |