# yamllint disable rule:comments-indentation name: MasterCI env: # Force the stdout and stderr streams to be unbuffered PYTHONUNBUFFERED: 1 on: # yamllint disable-line rule:truthy push: branches: - 'master' jobs: PythonUnitTests: runs-on: [self-hosted, style-checker] steps: - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Python unit tests run: | cd "$GITHUB_WORKSPACE/tests/ci" echo "Testing the main ci directory" python3 -m unittest discover -s . -p 'test_*.py' for dir in *_lambda/; do echo "Testing $dir" python3 -m unittest discover -s "$dir" -p 'test_*.py' done DockerHubPushAarch64: runs-on: [self-hosted, style-checker-aarch64] steps: - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Images check run: | cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_images_check.py --suffix aarch64 - name: Upload images files to artifacts uses: actions/upload-artifact@v3 with: name: changed_images_aarch64 path: ${{ runner.temp }}/docker_images_check/changed_images_aarch64.json DockerHubPushAmd64: runs-on: [self-hosted, style-checker] steps: - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Images check run: | cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_images_check.py --suffix amd64 - name: Upload images files to artifacts uses: actions/upload-artifact@v3 with: name: changed_images_amd64 path: ${{ runner.temp }}/docker_images_check/changed_images_amd64.json DockerHubPush: needs: [DockerHubPushAmd64, DockerHubPushAarch64, PythonUnitTests] runs-on: [self-hosted, style-checker] steps: - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true fetch-depth: 0 # to find ancestor merge commits necessary for finding proper docker tags filter: tree:0 - name: Download changed aarch64 images uses: actions/download-artifact@v3 with: name: changed_images_aarch64 path: ${{ runner.temp }} - name: Download changed amd64 images uses: actions/download-artifact@v3 with: name: changed_images_amd64 path: ${{ runner.temp }} - name: Images check run: | cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_manifests_merge.py --suffix amd64 --suffix aarch64 - name: Upload images files to artifacts uses: actions/upload-artifact@v3 with: name: changed_images path: ${{ runner.temp }}/changed_images.json StyleCheck: needs: DockerHubPush if: ${{ success() || failure() }} uses: ./.github/workflows/reusable_test.yml with: test_name: Style check runner_type: style-checker batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 style_check.py CompatibilityCheckX86: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Compatibility check X86 runner_type: style-checker run_command: | cd "$REPO_COPY/tests/ci" python3 compatibility_check.py --check-name "Compatibility check (amd64)" --check-glibc --check-distributions CompatibilityCheckAarch64: needs: [BuilderDebAarch64] uses: ./.github/workflows/reusable_test.yml with: test_name: Compatibility check X86 runner_type: style-checker run_command: | cd "$REPO_COPY/tests/ci" python3 compatibility_check.py --check-name "Compatibility check (aarch64)" --check-glibc ######################################################################################### #################################### ORDINARY BUILDS #################################### ######################################################################################### BuilderDebRelease: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: checkout_depth: 0 build_name: package_release BuilderDebAarch64: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: checkout_depth: 0 build_name: package_aarch64 BuilderBinRelease: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: checkout_depth: 0 build_name: binary_release BuilderDebAsan: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: package_asan BuilderDebUBsan: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: package_ubsan BuilderDebTsan: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: package_tsan BuilderDebMsan: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: package_msan BuilderDebDebug: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: package_debug ########################################################################################## ##################################### SPECIAL BUILDS ##################################### ########################################################################################## BuilderBinClangTidy: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_tidy BuilderBinDarwin: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_darwin checkout_depth: 0 BuilderBinAarch64: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_aarch64 checkout_depth: 0 BuilderBinFreeBSD: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_freebsd checkout_depth: 0 BuilderBinDarwinAarch64: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_darwin_aarch64 checkout_depth: 0 BuilderBinPPC64: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_ppc64le checkout_depth: 0 BuilderBinAmd64Compat: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_amd64_compat checkout_depth: 0 BuilderBinAarch64V80Compat: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_aarch64_v80compat checkout_depth: 0 BuilderBinRISCV64: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_riscv64 checkout_depth: 0 BuilderBinS390X: needs: [DockerHubPush] uses: ./.github/workflows/reusable_build.yml with: build_name: binary_s390x checkout_depth: 0 ############################################################################################ ##################################### Docker images ####################################### ############################################################################################ DockerServerImages: needs: - BuilderDebRelease - BuilderDebAarch64 runs-on: [self-hosted, style-checker] steps: - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true fetch-depth: 0 # It MUST BE THE SAME for all dependencies and the job itself filter: tree:0 - name: Check docker clickhouse/clickhouse-server building run: | cd "$GITHUB_WORKSPACE/tests/ci" python3 docker_server.py --release-type head \ --image-repo clickhouse/clickhouse-server --image-path docker/server python3 docker_server.py --release-type head \ --image-repo clickhouse/clickhouse-keeper --image-path docker/keeper - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" ############################################################################################ ##################################### BUILD REPORTER ####################################### ############################################################################################ BuilderReport: needs: - BuilderBinRelease - BuilderDebAarch64 - BuilderDebAsan - BuilderDebDebug - BuilderDebMsan - BuilderDebRelease - BuilderDebTsan - BuilderDebUBsan runs-on: [self-hosted, style-checker] if: ${{ success() || failure() }} steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' CHECK_NAME=ClickHouse build check REPORTS_PATH=${{runner.temp}}/reports_dir REPORTS_PATH=${{runner.temp}}/reports_dir TEMP_PATH=${{runner.temp}}/report_check NEEDS_DATA_PATH=${{runner.temp}}/needs.json EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Report Builder run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cat > "$NEEDS_DATA_PATH" << 'EOF' ${{ toJSON(needs) }} EOF cd "$GITHUB_WORKSPACE/tests/ci" python3 build_report_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" BuilderSpecialReport: needs: - BuilderBinAarch64 - BuilderBinDarwin - BuilderBinDarwinAarch64 - BuilderBinFreeBSD - BuilderBinPPC64 - BuilderBinRISCV64 - BuilderBinS390X - BuilderBinAmd64Compat - BuilderBinAarch64V80Compat - BuilderBinClangTidy runs-on: [self-hosted, style-checker] if: ${{ success() || failure() }} steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' TEMP_PATH=${{runner.temp}}/report_check REPORTS_PATH=${{runner.temp}}/reports_dir CHECK_NAME=ClickHouse special build check NEEDS_DATA_PATH=${{runner.temp}}/needs.json EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Report Builder run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cat > "$NEEDS_DATA_PATH" << 'EOF' ${{ toJSON(needs) }} EOF cd "$GITHUB_WORKSPACE/tests/ci" python3 build_report_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" MarkReleaseReady: needs: - BuilderBinDarwin - BuilderBinDarwinAarch64 - BuilderDebRelease - BuilderDebAarch64 runs-on: [self-hosted, style-checker] steps: - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Mark Commit Release Ready run: | cd "$GITHUB_WORKSPACE/tests/ci" python3 mark_release_ready.py ############################################################################################ #################################### INSTALL PACKAGES ###################################### ############################################################################################ InstallPackagesTestRelease: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Install packages (amd64) runner_type: style-checker run_command: | cd "$REPO_COPY/tests/ci" python3 install_check.py "$CHECK_NAME" InstallPackagesTestAarch64: needs: [BuilderDebAarch64] uses: ./.github/workflows/reusable_test.yml with: test_name: Install packages (arm64) runner_type: style-checker-aarch64 run_command: | cd "$REPO_COPY/tests/ci" python3 install_check.py "$CHECK_NAME" ############################################################################################## ########################### FUNCTIONAl STATELESS TESTS ####################################### ############################################################################################## FunctionalStatelessTestRelease: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (release) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestReleaseDatabaseOrdinary: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (release, DatabaseOrdinary) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestReleaseDatabaseReplicated: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (release, DatabaseReplicated) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 4 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestReleaseS3: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (release, s3 storage) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 2 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestReleaseAnalyzer: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (release, analyzer) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestAarch64: needs: [BuilderDebAarch64] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (aarch64) runner_type: func-tester-aarch64 additional_envs: | KILL_TIMEOUT=10800 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestAsan: needs: [BuilderDebAsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (asan) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 4 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestTsan: needs: [BuilderDebTsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (tsan) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 5 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestUBsan: needs: [BuilderDebUBsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (ubsan) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 2 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestMsan: needs: [BuilderDebMsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (msan) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 6 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatelessTestDebug: needs: [BuilderDebDebug] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateless tests (debug) runner_type: func-tester additional_envs: | KILL_TIMEOUT=10800 batches: 5 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" ############################################################################################## ############################ FUNCTIONAl STATEFUL TESTS ####################################### ############################################################################################## FunctionalStatefulTestRelease: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateful tests (release) runner_type: func-tester additional_envs: | KILL_TIMEOUT=3600 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatefulTestAarch64: needs: [BuilderDebAarch64] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateful tests (aarch64) runner_type: func-tester-aarch64 additional_envs: | KILL_TIMEOUT=3600 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatefulTestAsan: needs: [BuilderDebAsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateful tests (asan) runner_type: func-tester additional_envs: | KILL_TIMEOUT=3600 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatefulTestTsan: needs: [BuilderDebTsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateful tests (tsan) runner_type: func-tester additional_envs: | KILL_TIMEOUT=3600 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatefulTestMsan: needs: [BuilderDebMsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateful tests (msan) runner_type: func-tester additional_envs: | KILL_TIMEOUT=3600 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatefulTestUBsan: needs: [BuilderDebUBsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateful tests (ubsan) runner_type: func-tester additional_envs: | KILL_TIMEOUT=3600 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" FunctionalStatefulTestDebug: needs: [BuilderDebDebug] uses: ./.github/workflows/reusable_test.yml with: test_name: Stateful tests (debug) runner_type: func-tester additional_envs: | KILL_TIMEOUT=3600 batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 functional_test_check.py "$CHECK_NAME" "$KILL_TIMEOUT" ############################################################################################## ######################################### STRESS TESTS ####################################### ############################################################################################## StressTestAsan: needs: [BuilderDebAsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stress test (asan) runner_type: stress-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 stress_check.py "$CHECK_NAME" StressTestTsan: needs: [BuilderDebTsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stress test (tsan) runner_type: stress-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 stress_check.py "$CHECK_NAME" StressTestMsan: needs: [BuilderDebMsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stress test (msan) runner_type: stress-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 stress_check.py "$CHECK_NAME" StressTestUBsan: needs: [BuilderDebUBsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Stress test (ubsan) runner_type: stress-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 stress_check.py "$CHECK_NAME" StressTestDebug: needs: [BuilderDebDebug] uses: ./.github/workflows/reusable_test.yml with: test_name: Stress test (debug) runner_type: stress-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 stress_check.py "$CHECK_NAME" ############################################################################################# ############################# INTEGRATION TESTS ############################################# ############################################################################################# IntegrationTestsAsan: needs: [BuilderDebAsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Integration tests (asan) runner_type: stress-tester batches: 4 run_command: | cd "$REPO_COPY/tests/ci" python3 integration_test_check.py "$CHECK_NAME" IntegrationTestsAnalyzerAsan: needs: [BuilderDebAsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Integration tests (asan, analyzer) runner_type: stress-tester batches: 6 run_command: | cd "$REPO_COPY/tests/ci" python3 integration_test_check.py "$CHECK_NAME" IntegrationTestsTsan: needs: [BuilderDebTsan] uses: ./.github/workflows/reusable_test.yml with: test_name: Integration tests (tsan) runner_type: stress-tester batches: 6 run_command: | cd "$REPO_COPY/tests/ci" python3 integration_test_check.py "$CHECK_NAME" IntegrationTestsRelease: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Integration tests (release) runner_type: stress-tester batches: 4 run_command: | cd "$REPO_COPY/tests/ci" python3 integration_test_check.py "$CHECK_NAME" ############################################################################################## ##################################### AST FUZZERS ############################################ ############################################################################################## ASTFuzzerTestAsan: needs: [BuilderDebAsan] uses: ./.github/workflows/reusable_test.yml with: test_name: AST fuzzer (asan) runner_type: fuzzer-unit-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 ast_fuzzer_check.py "$CHECK_NAME" ASTFuzzerTestTsan: needs: [BuilderDebTsan] uses: ./.github/workflows/reusable_test.yml with: test_name: AST fuzzer (tsan) runner_type: fuzzer-unit-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 ast_fuzzer_check.py "$CHECK_NAME" ASTFuzzerTestUBSan: needs: [BuilderDebUBsan] uses: ./.github/workflows/reusable_test.yml with: test_name: AST fuzzer (ubsan) runner_type: fuzzer-unit-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 ast_fuzzer_check.py "$CHECK_NAME" ASTFuzzerTestMSan: needs: [BuilderDebMsan] uses: ./.github/workflows/reusable_test.yml with: test_name: AST fuzzer (msan) runner_type: fuzzer-unit-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 ast_fuzzer_check.py "$CHECK_NAME" ASTFuzzerTestDebug: needs: [BuilderDebDebug] uses: ./.github/workflows/reusable_test.yml with: test_name: AST fuzzer (debug) runner_type: fuzzer-unit-tester batches: 1 run_command: | cd "$REPO_COPY/tests/ci" python3 ast_fuzzer_check.py "$CHECK_NAME" ############################################################################################# #################################### UNIT TESTS ############################################# ############################################################################################# UnitTestsAsan: needs: [BuilderDebAsan] runs-on: [self-hosted, fuzzer-unit-tester] steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' TEMP_PATH=${{runner.temp}}/unit_tests_asan REPORTS_PATH=${{runner.temp}}/reports_dir CHECK_NAME=Unit tests (asan) REPO_COPY=${{runner.temp}}/unit_tests_asan/ClickHouse EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Unit test run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cp -r "$GITHUB_WORKSPACE" "$TEMP_PATH" cd "$REPO_COPY/tests/ci" python3 unit_tests_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" UnitTestsReleaseClang: needs: [BuilderBinRelease] runs-on: [self-hosted, fuzzer-unit-tester] steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' TEMP_PATH=${{runner.temp}}/unit_tests_asan REPORTS_PATH=${{runner.temp}}/reports_dir CHECK_NAME=Unit tests (release) REPO_COPY=${{runner.temp}}/unit_tests_asan/ClickHouse EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Unit test run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cp -r "$GITHUB_WORKSPACE" "$TEMP_PATH" cd "$REPO_COPY/tests/ci" python3 unit_tests_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" UnitTestsTsan: needs: [BuilderDebTsan] runs-on: [self-hosted, fuzzer-unit-tester] steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' TEMP_PATH=${{runner.temp}}/unit_tests_tsan REPORTS_PATH=${{runner.temp}}/reports_dir CHECK_NAME=Unit tests (tsan) REPO_COPY=${{runner.temp}}/unit_tests_tsan/ClickHouse EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Unit test run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cp -r "$GITHUB_WORKSPACE" "$TEMP_PATH" cd "$REPO_COPY/tests/ci" python3 unit_tests_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" UnitTestsMsan: needs: [BuilderDebMsan] runs-on: [self-hosted, fuzzer-unit-tester] steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' TEMP_PATH=${{runner.temp}}/unit_tests_msan REPORTS_PATH=${{runner.temp}}/reports_dir CHECK_NAME=Unit tests (msan) REPO_COPY=${{runner.temp}}/unit_tests_msan/ClickHouse EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Unit test run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cp -r "$GITHUB_WORKSPACE" "$TEMP_PATH" cd "$REPO_COPY/tests/ci" python3 unit_tests_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" UnitTestsUBsan: needs: [BuilderDebUBsan] runs-on: [self-hosted, fuzzer-unit-tester] steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' TEMP_PATH=${{runner.temp}}/unit_tests_ubsan REPORTS_PATH=${{runner.temp}}/reports_dir CHECK_NAME=Unit tests (ubsan) REPO_COPY=${{runner.temp}}/unit_tests_ubsan/ClickHouse EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Unit test run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cp -r "$GITHUB_WORKSPACE" "$TEMP_PATH" cd "$REPO_COPY/tests/ci" python3 unit_tests_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" ############################################################################################# #################################### PERFORMANCE TESTS ###################################### ############################################################################################# PerformanceComparisonX86: needs: [BuilderDebRelease] uses: ./.github/workflows/reusable_test.yml with: test_name: Performance Comparison runner_type: stress-tester batches: 4 run_command: | cd "$REPO_COPY/tests/ci" python3 performance_comparison_check.py "$CHECK_NAME" PerformanceComparisonAarch: needs: [BuilderDebAarch64] uses: ./.github/workflows/reusable_test.yml with: test_name: Performance Comparison Aarch64 runner_type: func-tester-aarch64 batches: 4 run_command: | cd "$REPO_COPY/tests/ci" python3 performance_comparison_check.py "$CHECK_NAME" ############################################################################################## ###################################### SQLANCER FUZZERS ###################################### ############################################################################################## SQLancerTestRelease: needs: [BuilderDebRelease] runs-on: [self-hosted, fuzzer-unit-tester] steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' TEMP_PATH=${{runner.temp}}/sqlancer_release REPORTS_PATH=${{runner.temp}}/reports_dir CHECK_NAME=SQLancer (release) REPO_COPY=${{runner.temp}}/sqlancer_release/ClickHouse EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: SQLancer run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cp -r "$GITHUB_WORKSPACE" "$TEMP_PATH" cd "$REPO_COPY/tests/ci" python3 sqlancer_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" SQLancerTestDebug: needs: [BuilderDebDebug] runs-on: [self-hosted, fuzzer-unit-tester] steps: - name: Set envs run: | cat >> "$GITHUB_ENV" << 'EOF' TEMP_PATH=${{runner.temp}}/sqlancer_debug REPORTS_PATH=${{runner.temp}}/reports_dir CHECK_NAME=SQLancer (debug) REPO_COPY=${{runner.temp}}/sqlancer_debug/ClickHouse EOF - name: Download json reports uses: actions/download-artifact@v3 with: path: ${{ env.REPORTS_PATH }} - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: SQLancer run: | sudo rm -fr "$TEMP_PATH" mkdir -p "$TEMP_PATH" cp -r "$GITHUB_WORKSPACE" "$TEMP_PATH" cd "$REPO_COPY/tests/ci" python3 sqlancer_check.py "$CHECK_NAME" - name: Cleanup if: always() run: | docker ps --quiet | xargs --no-run-if-empty docker kill ||: docker ps --all --quiet | xargs --no-run-if-empty docker rm -f ||: sudo rm -fr "$TEMP_PATH" FinishCheck: needs: - DockerHubPush - BuilderReport - BuilderSpecialReport - MarkReleaseReady - FunctionalStatelessTestDebug - FunctionalStatelessTestRelease - FunctionalStatelessTestReleaseDatabaseOrdinary - FunctionalStatelessTestReleaseDatabaseReplicated - FunctionalStatelessTestReleaseAnalyzer - FunctionalStatelessTestReleaseS3 - FunctionalStatelessTestAarch64 - FunctionalStatelessTestAsan - FunctionalStatelessTestTsan - FunctionalStatelessTestMsan - FunctionalStatelessTestUBsan - FunctionalStatefulTestDebug - FunctionalStatefulTestRelease - FunctionalStatefulTestAarch64 - FunctionalStatefulTestAsan - FunctionalStatefulTestTsan - FunctionalStatefulTestMsan - FunctionalStatefulTestUBsan - StressTestDebug - StressTestAsan - StressTestTsan - StressTestMsan - StressTestUBsan - IntegrationTestsAsan - IntegrationTestsAnalyzerAsan - IntegrationTestsTsan - IntegrationTestsRelease - PerformanceComparisonX86 - PerformanceComparisonAarch - CompatibilityCheckX86 - CompatibilityCheckAarch64 - ASTFuzzerTestDebug - ASTFuzzerTestAsan - ASTFuzzerTestTsan - ASTFuzzerTestMSan - ASTFuzzerTestUBSan - UnitTestsAsan - UnitTestsTsan - UnitTestsMsan - UnitTestsUBsan - UnitTestsReleaseClang - SQLancerTestRelease - SQLancerTestDebug runs-on: [self-hosted, style-checker] steps: - name: Check out repository code uses: ClickHouse/checkout@v1 with: clear-repository: true - name: Finish label run: | cd "$GITHUB_WORKSPACE/tests/ci" python3 finish_check.py