fixes #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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: | |
RunConfig: | |
runs-on: [self-hosted, style-checker-aarch64] | |
outputs: | |
data: ${{ steps.runconfig.outputs.CI_DATA }} | |
steps: | |
- name: DebugInfo | |
uses: hmarr/debug-action@f7318c783045ac39ed9bb497e22ce835fdafbfe6 | |
- name: Check out repository code | |
uses: ClickHouse/checkout@v1 | |
with: | |
clear-repository: true # to ensure correct digests | |
fetch-depth: 0 # to get version | |
filter: tree:0 | |
- name: Merge sync PR | |
run: | | |
cd "$GITHUB_WORKSPACE/tests/ci" | |
python3 sync_pr.py --merge || : | |
- 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 | |
- name: PrepareRunConfig | |
id: runconfig | |
run: | | |
python3 "$GITHUB_WORKSPACE/tests/ci/ci.py" --configure --outfile ${{ runner.temp }}/ci_run_data.json | |
echo "::group::CI configuration" | |
python3 -m json.tool ${{ runner.temp }}/ci_run_data.json | |
echo "::endgroup::" | |
{ | |
echo 'CI_DATA<<EOF' | |
cat ${{ runner.temp }}/ci_run_data.json | |
echo 'EOF' | |
} >> "$GITHUB_OUTPUT" | |
- name: Re-create GH statuses for skipped jobs if any | |
run: | | |
python3 "$GITHUB_WORKSPACE/tests/ci/ci.py" --infile ${{ runner.temp }}/ci_run_data.json --update-gh-statuses | |
BuildDockers: | |
needs: [RunConfig] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_docker.yml | |
with: | |
data: ${{ needs.RunConfig.outputs.data }} | |
# Tested in MQ | |
# StyleCheck: | |
# needs: [RunConfig, BuildDockers] | |
# if: ${{ !failure() && !cancelled() }} | |
# uses: ./.github/workflows/reusable_test.yml | |
# with: | |
# test_name: Style check | |
# runner_type: style-checker | |
# data: ${{ needs.RunConfig.outputs.data }} | |
# run_command: | | |
# python3 style_check.py --no-push | |
CompatibilityCheckX86: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Compatibility check (amd64) | |
runner_type: style-checker | |
data: ${{ needs.RunConfig.outputs.data }} | |
CompatibilityCheckAarch64: | |
needs: [RunConfig, BuilderDebAarch64] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Compatibility check (aarch64) | |
runner_type: style-checker | |
data: ${{ needs.RunConfig.outputs.data }} | |
######################################################################################### | |
#################################### ORDINARY BUILDS #################################### | |
######################################################################################### | |
# TODO: never skip builds! | |
BuilderDebRelease: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: package_release | |
checkout_depth: 0 | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderDebReleaseCoverage: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: package_release_coverage | |
checkout_depth: 0 | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderDebAarch64: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: package_aarch64 | |
checkout_depth: 0 | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderBinRelease: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_release | |
checkout_depth: 0 # otherwise we will have no info about contributors | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderDebAsan: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: package_asan | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderDebUBsan: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: package_ubsan | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderDebTsan: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: package_tsan | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderDebMsan: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: package_msan | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderDebDebug: | |
needs: [RunConfig, BuildDockers] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: package_debug | |
data: ${{ needs.RunConfig.outputs.data }} | |
########################################################################################## | |
##################################### SPECIAL BUILDS ##################################### | |
########################################################################################## | |
BuilderBinClangTidy: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_tidy | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderBinDarwin: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_darwin | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinAarch64: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinFreeBSD: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_freebsd | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinDarwinAarch64: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_darwin_aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinPPC64: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_ppc64le | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinAmd64Compat: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_amd64_compat | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinAmd64Musl: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_amd64_musl | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinAarch64V80Compat: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_aarch64_v80compat | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinRISCV64: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_riscv64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinS390X: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_s390x | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
BuilderBinLoongarch64: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_build.yml | |
with: | |
build_name: binary_loongarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
checkout_depth: 0 | |
############################################################################################ | |
##################################### Docker images ####################################### | |
############################################################################################ | |
DockerServerImage: | |
needs: [RunConfig, BuilderDebRelease, BuilderDebAarch64] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Docker server image | |
runner_type: style-checker | |
data: ${{ needs.RunConfig.outputs.data }} | |
DockerKeeperImage: | |
needs: [RunConfig, BuilderDebRelease, BuilderDebAarch64] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Docker keeper image | |
runner_type: style-checker | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################ | |
##################################### BUILD REPORTER ####################################### | |
############################################################################################ | |
BuilderReport: | |
# run report check for failed builds to indicate the CI error | |
if: ${{ !cancelled() }} | |
needs: | |
- RunConfig | |
- BuilderDebAarch64 | |
- BuilderDebAsan | |
- BuilderDebDebug | |
- BuilderDebMsan | |
- BuilderDebRelease | |
- BuilderDebTsan | |
- BuilderDebUBsan | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: ClickHouse build check | |
runner_type: style-checker-aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
BuilderSpecialReport: | |
# run report check for failed builds to indicate the CI error | |
if: ${{ !cancelled() }} | |
needs: | |
- RunConfig | |
- BuilderBinAarch64 | |
- BuilderBinDarwin | |
- BuilderBinDarwinAarch64 | |
- BuilderBinFreeBSD | |
- BuilderBinPPC64 | |
- BuilderBinRISCV64 | |
- BuilderBinS390X | |
- BuilderBinLoongarch64 | |
- BuilderBinAmd64Compat | |
- BuilderBinAarch64V80Compat | |
- BuilderBinClangTidy | |
- BuilderBinAmd64Musl | |
- BuilderDebReleaseCoverage | |
- BuilderBinRelease | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: ClickHouse special build check | |
runner_type: style-checker-aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
MarkReleaseReady: | |
if: ${{ !failure() && !cancelled() }} | |
needs: | |
- BuilderBinDarwin | |
- BuilderBinDarwinAarch64 | |
- BuilderDebRelease | |
- BuilderDebAarch64 | |
runs-on: [self-hosted, style-checker] | |
steps: | |
- name: Debug | |
run: | | |
echo need with different filters | |
cat << 'EOF' | |
${{ toJSON(needs) }} | |
${{ toJSON(needs.*.result) }} | |
no failures ${{ !contains(needs.*.result, 'failure') }} | |
no skips ${{ !contains(needs.*.result, 'skipped') }} | |
no both ${{ !(contains(needs.*.result, 'skipped') || contains(needs.*.result, 'failure')) }} | |
EOF | |
- name: Not ready | |
# fail the job to be able restart it | |
if: ${{ contains(needs.*.result, 'skipped') || contains(needs.*.result, 'failure') }} | |
run: exit 1 | |
- name: Check out repository code | |
if: ${{ ! (contains(needs.*.result, 'skipped') || contains(needs.*.result, 'failure')) }} | |
uses: ClickHouse/checkout@v1 | |
- name: Mark Commit Release Ready | |
if: ${{ ! (contains(needs.*.result, 'skipped') || contains(needs.*.result, 'failure')) }} | |
run: | | |
cd "$GITHUB_WORKSPACE/tests/ci" | |
python3 mark_release_ready.py | |
############################################################################################ | |
#################################### INSTALL PACKAGES ###################################### | |
############################################################################################ | |
InstallPackagesTestRelease: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Install packages (amd64) | |
runner_type: style-checker | |
data: ${{ needs.RunConfig.outputs.data }} | |
run_command: | | |
python3 install_check.py "$CHECK_NAME" | |
InstallPackagesTestAarch64: | |
needs: [RunConfig, BuilderDebAarch64] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Install packages (arm64) | |
runner_type: style-checker-aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
run_command: | | |
python3 install_check.py "$CHECK_NAME" | |
############################################################################################## | |
########################### FUNCTIONAl STATELESS TESTS ####################################### | |
############################################################################################## | |
FunctionalStatelessTestRelease: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (release) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestReleaseAnalyzerS3Replicated: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (release, old analyzer, s3, DatabaseReplicated) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestS3Debug: | |
needs: [RunConfig, BuilderDebDebug] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (debug, s3 storage) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestS3Tsan: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (tsan, s3 storage) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestAarch64: | |
needs: [RunConfig, BuilderDebAarch64] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (aarch64) | |
runner_type: func-tester-aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestAsan: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (asan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestTsan: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (tsan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestMsan: | |
needs: [RunConfig, BuilderDebMsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (msan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestUBsan: | |
needs: [RunConfig, BuilderDebUBsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (ubsan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestDebug: | |
needs: [RunConfig, BuilderDebDebug] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (debug) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatelessTestAsanAzure: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateless tests (azure, asan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################## | |
############################ FUNCTIONAl STATEFUL TESTS ####################################### | |
############################################################################################## | |
FunctionalStatefulTestRelease: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (release) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestAarch64: | |
needs: [RunConfig, BuilderDebAarch64] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (aarch64) | |
runner_type: func-tester-aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestAsan: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (asan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestTsan: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (tsan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestMsan: | |
needs: [RunConfig, BuilderDebMsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (msan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestUBsan: | |
needs: [RunConfig, BuilderDebUBsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (ubsan) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestDebug: | |
needs: [RunConfig, BuilderDebDebug] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (debug) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
# Parallel replicas | |
FunctionalStatefulTestDebugParallelReplicas: | |
needs: [RunConfig, BuilderDebDebug] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (debug, ParallelReplicas) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestUBsanParallelReplicas: | |
needs: [RunConfig, BuilderDebUBsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (ubsan, ParallelReplicas) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestMsanParallelReplicas: | |
needs: [RunConfig, BuilderDebMsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (msan, ParallelReplicas) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestTsanParallelReplicas: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (tsan, ParallelReplicas) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestAsanParallelReplicas: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (asan, ParallelReplicas) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FunctionalStatefulTestReleaseParallelReplicas: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stateful tests (release, ParallelReplicas) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################## | |
########################### ClickBench ####################################################### | |
############################################################################################## | |
ClickBenchAMD64: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: ClickBench (amd64) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
run_command: | | |
python3 clickbench.py "$CHECK_NAME" | |
ClickBenchAarch64: | |
needs: [RunConfig, BuilderDebAarch64] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: ClickBench (aarch64) | |
runner_type: func-tester-aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
run_command: | | |
python3 clickbench.py "$CHECK_NAME" | |
############################################################################################## | |
######################################### STRESS TESTS ####################################### | |
############################################################################################## | |
StressTestAsan: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stress test (asan) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
StressTestTsan: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stress test (tsan) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
StressTestTsanAzure: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stress test (azure, tsan) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
StressTestMsan: | |
needs: [RunConfig, BuilderDebMsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stress test (msan) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
StressTestUBsan: | |
needs: [RunConfig, BuilderDebUBsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stress test (ubsan) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
StressTestDebug: | |
needs: [RunConfig, BuilderDebDebug] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Stress test (debug) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################# | |
############################# INTEGRATION TESTS ############################################# | |
############################################################################################# | |
IntegrationTestsAsan: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Integration tests (asan) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
IntegrationTestsAnalyzerAsan: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Integration tests (asan, old analyzer) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
IntegrationTestsTsan: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Integration tests (tsan) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
IntegrationTestsRelease: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Integration tests (release) | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################## | |
##################################### AST FUZZERS ############################################ | |
############################################################################################## | |
ASTFuzzerTestAsan: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: AST fuzzer (asan) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
ASTFuzzerTestTsan: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: AST fuzzer (tsan) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
ASTFuzzerTestUBSan: | |
needs: [RunConfig, BuilderDebUBsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: AST fuzzer (ubsan) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
ASTFuzzerTestMSan: | |
needs: [RunConfig, BuilderDebMsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: AST fuzzer (msan) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
ASTFuzzerTestDebug: | |
needs: [RunConfig, BuilderDebDebug] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: AST fuzzer (debug) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################# | |
#################################### UNIT TESTS ############################################# | |
############################################################################################# | |
UnitTestsAsan: | |
needs: [RunConfig, BuilderDebAsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Unit tests (asan) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
UnitTestsReleaseClang: | |
needs: [RunConfig, BuilderBinRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Unit tests (release) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
UnitTestsTsan: | |
needs: [RunConfig, BuilderDebTsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Unit tests (tsan) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
UnitTestsMsan: | |
needs: [RunConfig, BuilderDebMsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Unit tests (msan) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
UnitTestsUBsan: | |
needs: [RunConfig, BuilderDebUBsan] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Unit tests (ubsan) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################# | |
#################################### PERFORMANCE TESTS ###################################### | |
############################################################################################# | |
PerformanceComparisonX86: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Performance Comparison | |
runner_type: stress-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
PerformanceComparisonAarch: | |
needs: [RunConfig, BuilderDebAarch64] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Performance Comparison Aarch64 | |
runner_type: func-tester-aarch64 | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################## | |
############################ SQLLOGIC TEST ################################################### | |
############################################################################################## | |
SQLLogicTestRelease: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: Sqllogic test (release) | |
runner_type: func-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################## | |
##################################### SQL TEST ############################################### | |
############################################################################################## | |
SQLTest: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: SQLTest | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
############################################################################################## | |
###################################### SQLANCER FUZZERS ###################################### | |
############################################################################################## | |
SQLancerTestRelease: | |
needs: [RunConfig, BuilderDebRelease] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: SQLancer (release) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
SQLancerTestDebug: | |
needs: [RunConfig, BuilderDebDebug] | |
if: ${{ !failure() && !cancelled() }} | |
uses: ./.github/workflows/reusable_test.yml | |
with: | |
test_name: SQLancer (debug) | |
runner_type: fuzzer-unit-tester | |
data: ${{ needs.RunConfig.outputs.data }} | |
FinishCheck: | |
if: ${{ !failure() && !cancelled() }} | |
needs: | |
- MarkReleaseReady | |
- FunctionalStatelessTestDebug | |
- FunctionalStatelessTestRelease | |
- FunctionalStatelessTestReleaseAnalyzerS3Replicated | |
- FunctionalStatelessTestAarch64 | |
- FunctionalStatelessTestAsan | |
- FunctionalStatelessTestTsan | |
- FunctionalStatelessTestMsan | |
- FunctionalStatelessTestUBsan | |
- FunctionalStatelessTestS3Debug | |
- FunctionalStatelessTestS3Tsan | |
- FunctionalStatefulTestDebug | |
- FunctionalStatefulTestRelease | |
- FunctionalStatefulTestAarch64 | |
- FunctionalStatefulTestAsan | |
- FunctionalStatefulTestTsan | |
- FunctionalStatefulTestMsan | |
- FunctionalStatefulTestUBsan | |
- FunctionalStatefulTestDebugParallelReplicas | |
- FunctionalStatefulTestUBsanParallelReplicas | |
- FunctionalStatefulTestMsanParallelReplicas | |
- FunctionalStatefulTestTsanParallelReplicas | |
- FunctionalStatefulTestAsanParallelReplicas | |
- FunctionalStatefulTestReleaseParallelReplicas | |
- 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 | |
- SQLLogicTestRelease | |
- SQLTest | |
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 |