2022-11-17 17:20:16 +05:30
# 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.
2023-05-22 11:44:34 +05:30
name : "Static Checks CI"
2022-11-17 17:20:16 +05:30
on :
push :
branches :
- master
2023-04-12 09:13:40 +05:30
- '[0-9]+.[0-9]+.[0-9]+' # release branches
- '[0-9]+.[0-9]+.[0-9]+-[A-Za-z0-9]+' # release branches
2022-11-17 17:20:16 +05:30
pull_request :
branches :
- master
2023-04-12 09:13:40 +05:30
- '[0-9]+.[0-9]+.[0-9]+' # release branches
- '[0-9]+.[0-9]+.[0-9]+-[A-Za-z0-9]+' # release branches
2022-11-17 17:20:16 +05:30
concurrency :
2023-05-16 12:13:08 +05:30
group : '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.run_id }}' # group workflows only on pull_requests and not on branch commits
2022-11-17 17:20:16 +05:30
cancel-in-progress : true
env :
MVN : mvn -B
MAVEN_SKIP : -P skip-static-checks -Dweb.console.skip=true -Dmaven.javadoc.skip=true
MAVEN_SKIP_TESTS : -P skip-tests
MAVEN_OPTS : -Xmx3000m
jobs :
2022-12-02 15:06:31 +05:30
static-checks :
strategy :
2023-02-01 17:01:29 +05:30
fail-fast : false
2022-12-02 15:06:31 +05:30
matrix :
2023-10-06 12:45:07 -07:00
java : [ '8' , '11' , '17' , '21' ]
2022-11-17 17:20:16 +05:30
runs-on : ubuntu-latest
steps :
2022-12-02 15:06:31 +05:30
- name : checkout branch
uses : actions/checkout@v3
2023-09-20 23:11:39 +02:00
- uses : actions/setup-java@v3
with :
distribution : 'zulu'
java-version : ${{ matrix.java }}
cache : 'maven'
2022-12-02 15:06:31 +05:30
- name : packaging check
run : |
./.github/scripts/setup_generate_license.sh
2023-02-26 17:06:23 +05:30
${MVN} clean install -Prat --fail-at-end \
2023-01-13 14:46:58 +05:30
-pl '!benchmarks, !distribution' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -Dweb.console.skip=false -T1C
${MVN} install -Prat -Pdist -Pbundle-contrib-exts --fail-at-end \
-pl 'distribution' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -Dweb.console.skip=false -T1C
2022-12-02 15:06:31 +05:30
- name : script checks
# who watches the watchers?
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-02 15:06:31 +05:30
run : ./check_test_suite_test.py
2023-07-07 12:52:35 -07:00
- name : (openjdk17) strict compilation
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '17' }}
2023-07-07 12:52:35 -07:00
# errorprone requires JDK 11+
2022-12-02 15:06:31 +05:30
# Strict compilation requires more than 2 GB
run : ${MVN} clean -DstrictCompile compile test-compile --fail-at-end ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}
- name : maven install
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-02 15:06:31 +05:30
run : |
2022-11-17 17:20:16 +05:30
echo 'Running Maven install...' &&
${MVN} clean install -q -ff -pl '!distribution,!:druid-it-image,!:druid-it-cases' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -T1C &&
${MVN} install -q -ff -pl 'distribution' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}
2023-05-03 18:27:39 +05:30
- name : checkstyle
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2023-05-03 18:27:39 +05:30
run : ${MVN} checkstyle:checkstyle --fail-at-end
2022-12-06 12:08:03 +05:30
- name : license checks
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-06 12:08:03 +05:30
run : ./.github/scripts/license_checks_script.sh
- name : analyze dependencies
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-06 12:08:03 +05:30
run : |
./.github/scripts/analyze_dependencies_script.sh
2022-12-02 15:06:31 +05:30
- name : animal sniffer checks
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-02 15:06:31 +05:30
run : ${MVN} animal-sniffer:check --fail-at-end
2022-11-17 17:20:16 +05:30
2022-12-02 15:06:31 +05:30
- name : enforcer checks
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-02 15:06:31 +05:30
run : ${MVN} enforcer:enforce --fail-at-end
2022-11-17 17:20:16 +05:30
2022-12-02 15:06:31 +05:30
- name : forbidden api checks
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-02 15:06:31 +05:30
run : ${MVN} forbiddenapis:check forbiddenapis:testCheck --fail-at-end
2022-11-17 17:20:16 +05:30
2022-12-02 15:06:31 +05:30
- name : pmd checks
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-02 15:06:31 +05:30
run : ${MVN} pmd:check --fail-at-end # TODO: consider adding pmd:cpd-check
2022-11-17 17:20:16 +05:30
2022-12-02 15:06:31 +05:30
- name : spotbugs checks
2023-09-20 23:11:39 +02:00
if : ${{ matrix.java == '8' }}
2022-12-02 15:06:31 +05:30
run : ${MVN} spotbugs:check --fail-at-end -pl '!benchmarks'
2022-11-17 17:20:16 +05:30
2023-07-03 17:10:19 +05:30
intellij-inspections :
strategy :
fail-fast : false
runs-on : ubuntu-latest
steps :
- name : checkout branch
uses : actions/checkout@v3
2023-09-20 23:11:39 +02:00
- uses : actions/setup-java@v3
with :
distribution : 'zulu'
java-version : '8'
cache : 'maven'
2023-07-03 17:10:19 +05:30
- name : maven install
run : |
echo 'Running Maven install...' &&
${MVN} clean install -q -ff -pl '!distribution,!:druid-it-image,!:druid-it-cases' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS} -T1C &&
${MVN} install -q -ff -pl 'distribution' ${MAVEN_SKIP} ${MAVEN_SKIP_TESTS}
2022-12-02 15:06:31 +05:30
- name : intellij inspections
run : |
docker run --rm \
-v $(pwd):/project \
-v ~/.m2:/home/inspect/.m2 \
2023-06-02 12:00:52 +05:30
-v $(pwd)/.idea/misc-for-inspection.xml:/project/.idea/misc.xml \
2022-12-02 15:06:31 +05:30
ccaominh/intellij-inspect:1.0.0 \
/project/pom.xml \
/project/.idea/inspectionProfiles/Druid.xml \
--levels ERROR \
--scope JavaInspectionsScope
2022-11-17 17:20:16 +05:30
2023-04-13 08:47:03 +05:30
web-checks :
strategy :
fail-fast : false
runs-on : ubuntu-latest
steps :
- name : checkout branch
uses : actions/checkout@v3
2023-09-20 23:11:39 +02:00
- uses : actions/setup-java@v3
with :
distribution : 'zulu'
java-version : '17'
cache : 'maven'
2023-04-13 08:47:03 +05:30
2022-12-02 15:06:31 +05:30
- name : setup node
uses : actions/setup-node@v3
2022-11-17 17:20:16 +05:30
with :
2022-12-02 15:06:31 +05:30
node-version : 16.17 .0
2022-11-17 17:20:16 +05:30
2022-12-02 15:06:31 +05:30
- name : docs
run : |
(cd website && npm install)
cd website
2023-08-16 19:01:21 -07:00
npm run build
2022-12-02 15:06:31 +05:30
npm run spellcheck
2022-11-17 17:20:16 +05:30
2022-12-02 15:06:31 +05:30
- name : web console
run : |
${MVN} test -pl 'web-console'
cd web-console
{ for i in 1 2 3; do npm run codecov && break || sleep 15; done }
- name : web console end-to-end test
run : |
./.github/scripts/setup_generate_license.sh
web-console/script/druid build
web-console/script/druid start
(cd web-console && npm run test-e2e)
web-console/script/druid stop