diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 3a52fa3..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,92 +0,0 @@
-# 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.3* ]; then \
-        sudo dpkg -i $HOME/protobuf/protobuf_3.16.3*; \
-      else \
-        wget https://github.com/protocolbuffers/protobuf/releases/download/v3.16.3/protobuf-java-3.16.3.zip && \
-        unzip protobuf-java-3.16.3.zip && pushd protobuf-3.16.3 && \
-        ./configure && sudo make && sudo checkinstall -y && \
-        if [ ! -d $HOME/protobuf ]; then \
-          mkdir -p $HOME/protobuf; \
-        fi && \
-        mv protobuf_3.16.3* $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 -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
