# 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. # version: 2 general: jobs: build_jdk8: machine: enabled: true image: circleci/classic:latest parallelism: 1 # TODO: 1. Configuring Parallel Jobs for Running Tests https://circleci.com/docs/2.0/parallelism-faster-jobs/ working_directory: ~/drill steps: - checkout - restore_cache: keys: - m2-{{ checksum "pom.xml" }} - m2- # used if checksum fails - run: name: Update maven version # TODO: Could be removed, once Machine Executor image is updated https://github.com/circleci/image-builder/issues/140 # and the possibility of specifying Maven version is added https://github.com/circleci/image-builder/issues/143 command: curl -fsSL https://git.io/vpDIf | bash -s -- 3.6.0 - run: name: Update packages list command: sudo apt-get update - run: name: Install libaio1.so library for MySQL integration tests command: sudo apt-get install libaio1 libaio-dev - run: name: Drill project build # TODO: 2. Optimizing Maven Builds on CircleCI - https://circleci.com/blog/optimizing-maven-builds-on-circleci/ # TODO: 3. Resolving memory issues without "SlowTest" and "UnlikelyTest" excludedGroups in the build command: > mvn install -Drat.skip=false -Dlicense.skip=false -DmemoryMb=2560 -DdirectMemoryMb=4608 -DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest" --batch-mode - run: name: Save test results command: | mkdir -p ~/test-results/junit/ find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \; when: always - store_test_results: path: ~/test-results - save_cache: paths: - ~/.m2 key: m2-{{ checksum "pom.xml" }} build_jdk9: machine: enabled: true image: circleci/classic:latest parallelism: 1 working_directory: ~/drill steps: - checkout - restore_cache: keys: - m2-{{ checksum "pom.xml" }} - m2- # used if checksum fails - run: name: Update packages list command: sudo apt-get update - run: name: Install java 9 command: sudo apt-get -y install openjdk-9-jdk - run: name: Set default java 9 command: sudo update-java-alternatives --set java-1.9.0-openjdk-amd64 - run: name: Update maven version command: curl -fsSL https://git.io/vpDIf | bash -s -- 3.6.0 - run: name: Install libaio1.so library for MySQL integration tests command: sudo apt-get install libaio1 libaio-dev - run: name: Drill project build command: > mvn install -Drat.skip=false -Dlicense.skip=false -DmemoryMb=2560 -DdirectMemoryMb=4608 -DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest" --batch-mode - run: name: Save test results command: | mkdir -p ~/test-results/junit/ find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \; when: always - store_test_results: path: ~/test-results - save_cache: paths: - ~/.m2 key: m2-{{ checksum "pom.xml" }} build_jdk10: machine: enabled: true image: circleci/classic:latest parallelism: 1 working_directory: ~/drill steps: - checkout - restore_cache: keys: - m2-{{ checksum "pom.xml" }} - m2- # used if checksum fails - run: name: Update packages list command: sudo apt-get update - run: name: Install java 10 command: sudo apt-get -y install openjdk-10-jdk - run: name: Set default java 10 command: sudo update-java-alternatives --set java-1.10.0-openjdk-amd64 - run: name: Update maven version command: curl -fsSL https://git.io/vpDIf | bash -s -- 3.6.0 - run: name: Install libaio1.so library for MySQL integration tests command: sudo apt-get install libaio1 libaio-dev - run: name: Drill project build command: > mvn install -Drat.skip=false -Dlicense.skip=false -DmemoryMb=2560 -DdirectMemoryMb=4608 -DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest" --batch-mode - run: name: Save test results command: | mkdir -p ~/test-results/junit/ find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \; when: always - store_test_results: path: ~/test-results - save_cache: paths: - ~/.m2 key: m2-{{ checksum "pom.xml" }} build_jdk11: machine: enabled: true image: circleci/classic:latest parallelism: 1 working_directory: ~/drill steps: - checkout - restore_cache: keys: - m2-{{ checksum "pom.xml" }} - m2- # used if checksum fails - run: name: Update packages list command: sudo apt-get update - run: name: Install java 11 command: sudo apt-get -y install openjdk-11-jdk - run: name: Set default java 11 command: sudo update-java-alternatives --set java-1.11.0-openjdk-amd64 - run: name: Update maven version command: curl -fsSL https://git.io/vpDIf | bash -s -- 3.6.0 - run: name: Install libaio1.so library for MySQL integration tests command: sudo apt-get install libaio1 libaio-dev - run: name: Drill project build # Set forkCount to 1 since tests use more memory and memory limitations for CircleCI is reached # for default value of forkCount. command: > mvn install -Drat.skip=false -Dlicense.skip=false -DmemoryMb=2560 -DdirectMemoryMb=4608 -DforkCount=1 -DexcludedGroups="org.apache.drill.categories.SlowTest,org.apache.drill.categories.UnlikelyTest" --batch-mode - run: name: Save test results command: | mkdir -p ~/test-results/junit/ find . -type f -regex ".*/target/surefire-reports/.*xml" -exec cp {} ~/test-results/junit/ \; when: always - store_test_results: path: ~/test-results - save_cache: paths: - ~/.m2 key: m2-{{ checksum "pom.xml" }} workflows: version: 2 build_and_test: jobs: - build_jdk8 - build_jdk9 - build_jdk10 - build_jdk11