forked from apache/drill
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
93 lines (88 loc) · 3.76 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# 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 MEMORYMB=2048
- 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 -DmemoryMb=$MEMORYMB -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