Skip to content

Gluten CI

Gluten CI #136

Workflow file for this run

#
# 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.
#
name: Gluten CI
on:
schedule:
- cron: 0 4 * * *
workflow_dispatch:
env:
MVN_OPT: -Dmaven.javadoc.skip=true -Drat.skip=true -Dscalastyle.skip=true -Dspotless.check.skip -Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Pjdbc-shaded,gen-policy -Dmaven.plugin.download.cache.path=/tmp/engine-archives
jobs:
gluten-build:
name: Build Gluten
if: ${{ startsWith(github.repository, 'apache/') || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Free up disk space
run: ./.github/scripts/free_disk_space.sh
- name: Tune Runner VM
uses: ./.github/actions/tune-runner-vm
- name: Update and Upgrade
run: sudo apt-get update && sudo apt-get upgrade -y
- name: Install dependencies
run: |
sudo apt-get install -y software-properties-common
sudo apt-get install -y libunwind-dev build-essential cmake libssl-dev libre2-dev libcurl4-openssl-dev clang lldb lld libz-dev git ninja-build uuid-dev
- name: Setup JDK 8
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 8
cache: 'maven'
check-latest: false
- name: Setup Maven
uses: ./.github/actions/setup-maven
- name: Get gluten cache date
id: date
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Check gluten cache
id: gluten-cache
uses: actions/cache@v3
with:
path: gluten/dist/
key: gluten_dist_${{ steps.date.outputs.date }}
- name: Build gluten project
run: |
if [[ "${{ steps.gluten-cache.outputs.cache-hit }}" != 'true' ]]; then
git clone https://github.com/apache/incubator-gluten.git gluten
cd gluten
GLUTEN_DIR=`pwd`
DISTDIR="$GLUTEN_DIR/dist"
THIRDPARTY_LIB="$DISTDIR/thirdparty-lib"
LINUX_OS=$(. /etc/os-release && echo ${ID})
VERSION=$(. /etc/os-release && echo ${VERSION_ID})
ARCH=`uname -m`
rm -rf "$DISTDIR"
mkdir -p "$DISTDIR"
sudo $GLUTEN_DIR/dev/builddeps-veloxbe.sh --build_tests=ON --build_benchmarks=ON --enable_s3=ON --enable_hdfs=ON
mvn clean package -Pbackends-velox -Prss -Pspark-3.3 -DskipTests
cp package/target/gluten-*-bundle-spark*.jar "$DISTDIR"
mvn clean package -Pbackends-velox -Prss -Pspark-3.4 -DskipTests
cp package/target/gluten-*-bundle-spark*.jar "$DISTDIR"
mvn clean package -Pbackends-velox -Prss -Pspark-3.5 -DskipTests
cp package/target/gluten-*-bundle-spark*.jar "$DISTDIR"
mkdir -p $THIRDPARTY_LIB
cp /usr/lib/${ARCH}-linux-gnu/{libre2.so.9,libdouble-conversion.so.3,libidn.so.12,libglog.so.0,libgflags.so.2.2,libevent-2.1.so.7,libsnappy.so.1,libunwind.so.8,libcurl.so.4,libxml2.so.2,libgsasl.so.7,libicui18n.so.70,libicuuc.so.70,libnghttp2.so.14,libldap-2.5.so.0,liblber-2.5.so.0,libntlm.so.0,librtmp.so.1,libsasl2.so.2,libssh.so.4,libicudata.so.70,libthrift-0.16.0.so} $THIRDPARTY_LIB/
cp /usr/local/lib/{libhdfs3.so.1,libprotobuf.so.32,libboost_context.so.1.84.0,libboost_regex.so.1.84.0} $THIRDPARTY_LIB/
cd $DISTDIR
jar cvf gluten-thirdparty-lib-$LINUX_OS-$VERSION-$ARCH.jar $THIRDPARTY_LIB
rm -rf $THIRDPARTY_LIB
fi
- uses: actions/cache@v3
if: steps.gluten-cache.outputs.cache-hit != 'true'
with:
path: gluten/dist/
key: gluten_dist_${{ steps.date.outputs.date }}
gluten-it:
name: Gluten Integration TPC-H/DS Test
needs: gluten-build
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
spark: [ '3.5', '3.4', '3.3' ]
steps:
- uses: actions/checkout@v4
- name: Free up disk space
run: ./.github/scripts/free_disk_space.sh
- name: Tune Runner VM
uses: ./.github/actions/tune-runner-vm
- name: Update and Upgrade
run: sudo apt-get update && sudo apt-get upgrade -y
- name: Install dependencies
run: |
sudo apt-get install -y software-properties-common
sudo apt-get install -y libunwind-dev build-essential cmake libssl-dev libre2-dev libcurl4-openssl-dev clang lldb lld libz-dev git ninja-build uuid-dev
sudo apt-get install -y libsnappy-dev libthrift-dev libboost-all-dev libgflags-dev libgoogle-glog-dev
- name: Cache Engine Archives
uses: ./.github/actions/cache-engine-archives
- name: Get gluten cache date
id: date
run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Check gluten cache
id: gluten-cache
uses: actions/cache@v3
with:
path: gluten/dist/
key: gluten_dist_${{ steps.date.outputs.date }}
- name: Setup JDK 8
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 8
cache: 'maven'
check-latest: false
- name: Setup Maven
uses: ./.github/actions/setup-maven
- name: Run Gluten Integration TPC-H/DS Test
run: |
TEST_MODULES="integration-tests/kyuubi-gluten-it"
./build/mvn ${MVN_OPT} -Pgluten-it -Pspark-${{ matrix.spark }} -pl ${TEST_MODULES} -am clean install -DskipTests
./build/mvn ${MVN_OPT} -Pgluten-it -Pspark-${{ matrix.spark }} -pl ${TEST_MODULES} test
- name: Upload test logs
if: failure()
uses: actions/upload-artifact@v3
with:
name: unit-tests-log-spark-${{ matrix.spark }}-gluten
path: |
**/target/unit-tests.log