blob: 671d2e1b1b76d9052ff034951734283e4973a888 [file] [log] [blame]
# 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.
# The default workflow for GitHub Actions that is used for continuous
# integration. A configuration file that is used to control when, where,
# and how different CI jobs are executed.
# For more information on how to modify this file check the following link:
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions
name: CI
on:
push:
paths-ignore:
- 'site/**'
branches:
- '*'
pull_request:
types: [opened, synchronize, reopened, labeled]
paths-ignore:
- 'site/**'
branches:
- '*'
# Throw OutOfMemoryError in case less than 35% is free after full GC
# This avoids never-ending GC trashing if memory gets too low in case of a memory leak
env:
_JAVA_OPTIONS: '-XX:GCTimeLimit=90 -XX:GCHeapFreeLimit=35'
jobs:
windows:
if: github.event.action != 'labeled'
name: 'Windows (JDK 8)'
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 50
- name: 'Set up JDK 8'
uses: actions/setup-java@v1
with:
java-version: 8
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon build javadoc
- name: 'sqlline and sqllsh'
shell: cmd
run: |
call sqlline.bat -e '!quit'
echo.
echo Sqlline example/csv
call example/csv/sqlline.bat --verbose -u jdbc:calcite:model=example/csv/src/test/resources/model.json -n admin -p admin -f example/csv/src/test/resources/smoke_test.sql
echo.
echo sqlsh
call sqlsh.bat -o headers "select count(*) commits, author from (select substring(author, 1, position(' <' in author)-1) author from git_commits) group by author order by count(*) desc, author limit 20"
linux-avatica:
if: github.event.action != 'labeled'
name: 'Linux (JDK 11), Avatica master'
runs-on: ubuntu-latest
steps:
- name: 'Set up JDK 11'
uses: actions/setup-java@v1
with:
java-version: 11
- name: 'Clone Avatica to Maven Local repository'
run: |
git clone --branch master --depth 100 https://github.com/apache/calcite-avatica.git ../calcite-avatica
- uses: burrunan/gradle-cache-action@v1
name: Build Avatica
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: avatica-jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
build-root-directory: ../calcite-avatica
arguments: publishToMavenLocal
properties: |
calcite.avatica.version=1.0.0-dev-master
skipJavadoc=
- uses: actions/checkout@v2
with:
fetch-depth: 50
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: jdk${{ matrix.jdk }}
remote-build-cache-proxy-enabled: false
execution-only-caches: true
arguments: --scan --no-parallel --no-daemon build javadoc
properties: |
calcite.avatica.version=1.0.0-dev-master-SNAPSHOT
enableMavenLocal=
linux-openj9:
if: github.event.action != 'labeled'
name: 'Linux (OpenJ9 8)'
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 50
- uses: AdoptOpenJDK/install-jdk@v1
with:
impl: openj9
version: '8'
architecture: x64
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: jdk8-openj9
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon build javadoc
- name: 'sqlline and sqllsh'
run: |
./sqlline -e '!quit'
echo
echo Sqlline example/csv
./example/csv/sqlline --verbose -u jdbc:calcite:model=example/csv/src/test/resources/model.json -n admin -p admin -f example/csv/src/test/resources/smoke_test.sql
echo
echo sqlsh
./sqlsh -o headers "select count(*) commits, author from (select substring(author, 1, position(' <' in author)-1) author from git_commits) group by author order by count(*) desc, author limit 20"
mac:
if: github.event.action != 'labeled'
name: 'macOS (JDK 15)'
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 50
- name: 'Set up JDK 15'
uses: actions/setup-java@v1
with:
java-version: 15
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: jdk15
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon build javadoc
- name: 'sqlline and sqllsh'
run: |
./sqlline -e '!quit'
echo
echo Sqlline example/csv
./example/csv/sqlline --verbose -u jdbc:calcite:model=example/csv/src/test/resources/model.json -n admin -p admin -f example/csv/src/test/resources/smoke_test.sql
echo
echo sqlsh
./sqlsh -o headers "select count(*) commits, author from (select substring(author, 1, position(' <' in author)-1) author from git_commits) group by author order by count(*) desc, author limit 20"
errorprone:
if: github.event.action != 'labeled'
name: 'Error Prone (JDK 11)'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 50
- name: 'Set up JDK 11'
uses: actions/setup-java@v1
with:
java-version: 11
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: errprone
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -PenableErrorprone classes
linux-checkerframework:
name: 'CheckerFramework (JDK 11)'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 50
- name: 'Set up JDK 11'
uses: actions/setup-java@v1
with:
java-version: 11
- name: 'Run CheckerFramework'
uses: burrunan/gradle-cache-action@v1
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: checkerframework-jdk11
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon -PenableCheckerframework :linq4j:classes :core:classes
linux-slow:
# Run slow tests when the commit is on master or it is requested explicitly by adding an
# appropriate label in the PR
if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'slow-tests-needed')
name: 'Linux (JDK 8) Slow Tests'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 50
- name: 'Set up JDK 8'
uses: actions/setup-java@v1
with:
java-version: 8
- uses: burrunan/gradle-cache-action@v1
name: Test
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
job-id: jdk8
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon testSlow
linux-druid:
if: github.event.action != 'labeled'
name: 'Linux (JDK 8) Druid Tests'
runs-on: ubuntu-latest
steps:
- name: 'Set up JDK 8'
uses: actions/setup-java@v1
with:
java-version: 8
- name: 'Checkout Druid dataset'
uses: actions/checkout@master
with:
repository: zabetak/calcite-druid-dataset
fetch-depth: 1
path: druid-dataset
- name: 'Start Druid containers'
working-directory: ./druid-dataset
run: |
chmod -R 777 storage
docker-compose up -d
- name: 'Wait Druid nodes to startup'
run: |
until docker logs coordinator | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
until docker logs router | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
until docker logs historical | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
until docker logs middlemanager | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
until docker logs broker | grep "Successfully started lifecycle \[module\]"; do sleep 1s; done
- name: 'Index Foodmart/Wikipedia datasets'
working-directory: ./druid-dataset
run: ./index.sh 30s
- uses: actions/checkout@v2
with:
fetch-depth: 1
path: calcite
- uses: burrunan/gradle-cache-action@v1
name: 'Run Druid tests'
env:
S3_BUILD_CACHE_ACCESS_KEY_ID: ${{ secrets.S3_BUILD_CACHE_ACCESS_KEY_ID }}
S3_BUILD_CACHE_SECRET_KEY: ${{ secrets.S3_BUILD_CACHE_SECRET_KEY }}
with:
build-root-directory: ./calcite
job-id: Druid8
remote-build-cache-proxy-enabled: false
arguments: --scan --no-parallel --no-daemon :druid:test -Dcalcite.test.druid=true