diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 03911cfa92a2..f905bf7b7812 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -33,12 +33,12 @@ Related: https://github.com/ClickHouse/ClickHouse/pull/NNNNN - [ ] Stateless tests - [ ] Stateful tests - [ ] Performance tests +- [x] Aarch64 tests - [ ] All with ASAN - [x] All with TSAN - [x] All with MSAN - [x] All with UBSAN - [x] All with Coverage -- [ ] All with Aarch64 - [ ] All Regression - [ ] Disable CI Cache diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index a2e56f1a3f65..4800d99d0cbb 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -10,8 +10,6 @@ on: required: false type: boolean default: false - push: - branches: ['antalya', 'releases/*', 'antalya-*', 'stable-*'] env: # Force the stdout and stderr streams to be unbuffered @@ -78,7 +76,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -120,7 +120,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -162,7 +164,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -204,7 +208,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -220,7 +226,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Dockers Build (multiplatform manifest)' --workflow "MasterCI" --ci --timestamp build_amd_debug: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9kZWJ1Zyk=') }} name: "Build (amd_debug)" @@ -246,7 +252,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -262,7 +270,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_debug)' --workflow "MasterCI" --ci --timestamp build_amd_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9hc2FuX3Vic2FuKQ==') }} name: "Build (amd_asan_ubsan)" @@ -288,7 +296,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -304,7 +314,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_asan_ubsan)' --workflow "MasterCI" --ci --timestamp build_amd_binary: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9iaW5hcnkp') }} name: "Build (amd_binary)" @@ -330,7 +340,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -346,7 +358,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_binary)' --workflow "MasterCI" --ci --timestamp build_arm_debug: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9kZWJ1Zyk=') }} name: "Build (arm_debug)" @@ -372,7 +384,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -388,7 +402,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_debug)' --workflow "MasterCI" --ci --timestamp build_arm_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9hc2FuX3Vic2FuKQ==') }} name: "Build (arm_asan_ubsan)" @@ -414,7 +428,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -430,7 +446,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_asan_ubsan)' --workflow "MasterCI" --ci --timestamp build_arm_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV91YnNhbik=') }} name: "Build (arm_ubsan)" @@ -456,7 +472,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -472,7 +490,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_ubsan)' --workflow "MasterCI" --ci --timestamp build_arm_binary: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9iaW5hcnkp') }} name: "Build (arm_binary)" @@ -498,7 +516,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -514,7 +534,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_binary)' --workflow "MasterCI" --ci --timestamp build_amd_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF90c2FuKQ==') }} name: "Build (amd_tsan)" @@ -540,7 +560,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -556,7 +578,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_tsan)' --workflow "MasterCI" --ci --timestamp build_amd_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9tc2FuKQ==') }} name: "Build (amd_msan)" @@ -582,7 +604,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -598,7 +622,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_msan)' --workflow "MasterCI" --ci --timestamp build_arm_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV90c2FuKQ==') }} name: "Build (arm_tsan)" @@ -624,7 +648,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -640,7 +666,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_tsan)' --workflow "MasterCI" --ci --timestamp build_arm_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9tc2FuKQ==') }} name: "Build (arm_msan)" @@ -666,7 +692,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -682,7 +710,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_msan)' --workflow "MasterCI" --ci --timestamp build_amd_llvm_coverage_per_test: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9sbHZtX2NvdmVyYWdlX3Blcl90ZXN0KQ==') }} name: "Build (amd_llvm_coverage_per_test)" @@ -708,7 +736,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -750,7 +780,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -792,7 +824,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -808,7 +842,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_release)' --workflow "MasterCI" --ci --timestamp unit_tests_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAoYXNhbl91YnNhbik=') }} name: "Unit tests (asan_ubsan)" @@ -834,7 +868,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -850,7 +886,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (asan_ubsan)' --workflow "MasterCI" --ci --timestamp unit_tests_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAodHNhbik=') }} name: "Unit tests (tsan)" @@ -876,7 +912,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -892,7 +930,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (tsan)' --workflow "MasterCI" --ci --timestamp unit_tests_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_msan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAobXNhbik=') }} name: "Unit tests (msan)" @@ -918,7 +956,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -934,7 +974,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (msan)' --workflow "MasterCI" --ci --timestamp unit_tests_asan_ubsan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAoYXNhbl91YnNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (asan_ubsan, function_prop_fuzzer)" @@ -960,7 +1000,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -976,7 +1018,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (asan_ubsan, function_prop_fuzzer)' --workflow "MasterCI" --ci --timestamp unit_tests_tsan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAodHNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (tsan, function_prop_fuzzer)" @@ -1002,7 +1044,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1018,7 +1062,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (tsan, function_prop_fuzzer)' --workflow "MasterCI" --ci --timestamp unit_tests_msan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_msan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAobXNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (msan, function_prop_fuzzer)" @@ -1044,7 +1088,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1086,7 +1132,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1128,7 +1176,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1170,7 +1220,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1212,7 +1264,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1254,7 +1308,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1296,7 +1352,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1338,7 +1396,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1380,7 +1440,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1422,7 +1484,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1438,7 +1502,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Compatibility check (arm_release)' --workflow "MasterCI" --ci --timestamp stateless_tests_amd_asan_ubsan_distributed_plan_parallel_1_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfYXNhbl91YnNhbiwgZGlzdHJpYnV0ZWQgcGxhbiwgcGFyYWxsZWwsIDEvMik=') }} name: "Stateless tests (amd_asan_ubsan, distributed plan, parallel, 1/2)" @@ -1464,7 +1528,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1480,7 +1546,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_asan_ubsan, distributed plan, parallel, 1/2)' --workflow "MasterCI" --ci --timestamp stateless_tests_amd_asan_ubsan_distributed_plan_parallel_2_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfYXNhbl91YnNhbiwgZGlzdHJpYnV0ZWQgcGxhbiwgcGFyYWxsZWwsIDIvMik=') }} name: "Stateless tests (amd_asan_ubsan, distributed plan, parallel, 2/2)" @@ -1506,7 +1572,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1548,7 +1616,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1590,7 +1660,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1606,7 +1678,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_asan_ubsan, db disk, distributed plan, sequential, 2/2)' --workflow "MasterCI" --ci --timestamp stateless_tests_amd_debug_parallel: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_debug, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfZGVidWcsIHBhcmFsbGVsKQ==') }} name: "Stateless tests (amd_debug, parallel)" @@ -1632,7 +1704,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1674,7 +1748,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1690,7 +1766,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_debug, sequential)' --workflow "MasterCI" --ci --timestamp stateless_tests_amd_tsan_parallel_1_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfdHNhbiwgcGFyYWxsZWwsIDEvMik=') }} name: "Stateless tests (amd_tsan, parallel, 1/2)" @@ -1716,7 +1792,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1732,7 +1810,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_tsan, parallel, 1/2)' --workflow "MasterCI" --ci --timestamp stateless_tests_amd_tsan_parallel_2_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfdHNhbiwgcGFyYWxsZWwsIDIvMik=') }} name: "Stateless tests (amd_tsan, parallel, 2/2)" @@ -1758,7 +1836,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1800,7 +1880,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1842,7 +1924,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1884,7 +1968,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1926,7 +2012,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -1968,7 +2056,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2010,7 +2100,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2052,7 +2144,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2094,7 +2188,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2136,7 +2232,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2178,7 +2276,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2220,7 +2320,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2262,7 +2364,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2304,7 +2408,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2346,7 +2452,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2388,7 +2496,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2430,7 +2540,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2472,7 +2584,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2514,7 +2628,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2556,7 +2672,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2598,7 +2716,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2640,7 +2760,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2682,7 +2804,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2724,7 +2848,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2766,7 +2892,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2808,7 +2936,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2850,7 +2980,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2892,7 +3024,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2934,7 +3068,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -2976,7 +3112,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3018,7 +3156,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3060,7 +3200,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3102,7 +3244,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3144,7 +3288,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3186,7 +3332,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3228,7 +3376,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3270,7 +3420,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3312,7 +3464,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3354,7 +3508,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3396,7 +3552,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3438,7 +3596,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3480,7 +3640,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3522,7 +3684,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3564,7 +3728,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3606,7 +3772,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3648,7 +3816,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3690,7 +3860,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3732,7 +3904,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3774,7 +3948,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3816,7 +3992,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3858,7 +4036,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3900,7 +4080,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3942,7 +4124,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -3984,7 +4168,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4026,7 +4212,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4068,7 +4256,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4110,7 +4300,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4152,7 +4344,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4194,7 +4388,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4236,7 +4432,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4278,7 +4476,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4320,7 +4520,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4362,7 +4564,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4404,7 +4608,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4446,7 +4652,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4488,7 +4696,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4530,7 +4740,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4572,7 +4784,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4614,7 +4828,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4656,7 +4872,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4698,7 +4916,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4740,7 +4960,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4782,7 +5004,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4824,7 +5048,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4866,7 +5092,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4884,7 +5112,7 @@ jobs: finish_workflow: runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] needs: [ast_fuzzer_amd_debug, ast_fuzzer_amd_msan, ast_fuzzer_amd_tsan, ast_fuzzer_arm_asan_ubsan, build_amd_asan_ubsan, build_amd_binary, build_amd_debug, build_amd_llvm_coverage_per_test, build_amd_msan, build_amd_release, build_amd_tsan, build_arm_asan_ubsan, build_arm_binary, build_arm_debug, build_arm_msan, build_arm_release, build_arm_tsan, build_arm_ubsan, buzzhouse_amd_debug, buzzhouse_amd_msan, buzzhouse_amd_tsan, buzzhouse_arm_asan_ubsan, clickbench_amd_release, clickbench_arm_release, compatibility_check_amd_release, compatibility_check_arm_release, config_workflow, docker_keeper_image, docker_server_image, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, install_packages_amd_release, install_packages_arm_release, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_1_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_2_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_3_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_4_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_5_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_6_6, integration_tests_amd_msan_1_6, integration_tests_amd_msan_2_6, integration_tests_amd_msan_3_6, integration_tests_amd_msan_4_6, integration_tests_amd_msan_5_6, integration_tests_amd_msan_6_6, integration_tests_amd_tsan_1_6, integration_tests_amd_tsan_2_6, integration_tests_amd_tsan_3_6, integration_tests_amd_tsan_4_6, integration_tests_amd_tsan_5_6, integration_tests_amd_tsan_6_6, integration_tests_arm_binary_distributed_plan_1_4, integration_tests_arm_binary_distributed_plan_2_4, integration_tests_arm_binary_distributed_plan_3_4, integration_tests_arm_binary_distributed_plan_4_4, sign_release_amd_release, sign_release_arm_release, source_upload, sqllogic_test, sqlstorm_test, sqltest, stateless_tests_amd_asan_ubsan_db_disk_distributed_plan_sequential_1_2, stateless_tests_amd_asan_ubsan_db_disk_distributed_plan_sequential_2_2, stateless_tests_amd_asan_ubsan_distributed_plan_parallel_1_2, stateless_tests_amd_asan_ubsan_distributed_plan_parallel_2_2, stateless_tests_amd_debug_distributed_plan_s3_storage_parallel, stateless_tests_amd_debug_distributed_plan_s3_storage_sequential, stateless_tests_amd_debug_parallel, stateless_tests_amd_debug_sequential, stateless_tests_amd_llvm_coverage_per_test_per_test_coverage_1_8, stateless_tests_amd_llvm_coverage_per_test_per_test_coverage_2_8, stateless_tests_amd_llvm_coverage_per_test_per_test_coverage_3_8, stateless_tests_amd_llvm_coverage_per_test_per_test_coverage_4_8, stateless_tests_amd_llvm_coverage_per_test_per_test_coverage_5_8, stateless_tests_amd_llvm_coverage_per_test_per_test_coverage_6_8, stateless_tests_amd_llvm_coverage_per_test_per_test_coverage_7_8, stateless_tests_amd_llvm_coverage_per_test_per_test_coverage_8_8, stateless_tests_amd_msan_wasmedge_parallel_1_4, stateless_tests_amd_msan_wasmedge_parallel_2_4, stateless_tests_amd_msan_wasmedge_parallel_3_4, stateless_tests_amd_msan_wasmedge_parallel_4_4, stateless_tests_amd_msan_wasmedge_sequential_1_2, stateless_tests_amd_msan_wasmedge_sequential_2_2, stateless_tests_amd_tsan_parallel_1_2, stateless_tests_amd_tsan_parallel_2_2, stateless_tests_amd_tsan_s3_storage_parallel_1_2, stateless_tests_amd_tsan_s3_storage_parallel_2_2, stateless_tests_amd_tsan_s3_storage_sequential_1_2, stateless_tests_amd_tsan_s3_storage_sequential_2_2, stateless_tests_amd_tsan_sequential_1_2, stateless_tests_amd_tsan_sequential_2_2, stateless_tests_arm_asan_ubsan_azure_parallel, stateless_tests_arm_asan_ubsan_azure_sequential, stateless_tests_arm_binary_parallel, stateless_tests_arm_binary_sequential, stress_test_amd_asan_ubsan, stress_test_amd_debug, stress_test_amd_msan, stress_test_amd_tsan, stress_test_arm_asan_ubsan, stress_test_arm_asan_ubsan_s3, stress_test_arm_debug, stress_test_arm_msan, stress_test_arm_release, stress_test_arm_tsan, stress_test_arm_ubsan, stress_test_azure_amd_msan, stress_test_azure_amd_tsan, unit_tests_asan_ubsan, unit_tests_asan_ubsan_function_prop_fuzzer, unit_tests_msan, unit_tests_msan_function_prop_fuzzer, unit_tests_tsan, unit_tests_tsan_function_prop_fuzzer] - if: ${{ always() && needs.config_workflow.outputs.pipeline_status != '' }} + if: ${{ !cancelled() && needs.config_workflow.outputs.pipeline_status != '' }} name: "Finish Workflow" outputs: data: ${{ steps.run.outputs.DATA }} @@ -4908,7 +5136,9 @@ jobs: mkdir -p ./ci/tmp cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' export PYTHONPATH=./ci:.: - + cat > ./ci/tmp/workflow_inputs.json << 'EOF' + ${{ toJson(github.event.inputs) }} + EOF cat > ./ci/tmp/workflow_job.json << 'EOF' ${{ toJson(job) }} EOF @@ -4938,7 +5168,7 @@ jobs: secrets: inherit with: docker_image: altinityinfra/clickhouse-server - version: ${{ fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.version.string }} + version: ${{ fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.version.string }} tag-suffix: ${{ matrix.suffix }} GrypeScanKeeper: needs: [config_workflow, docker_keeper_image] @@ -4947,11 +5177,11 @@ jobs: secrets: inherit with: docker_image: altinityinfra/clickhouse-keeper - version: ${{ fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.version.string }} + version: ${{ fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.version.string }} RegressionTestsRelease: needs: [config_workflow, build_amd_binary, stateless_tests_amd_debug_parallel] - if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression')}} + if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression')}} uses: ./.github/workflows/regression.yml secrets: inherit with: @@ -4963,7 +5193,7 @@ jobs: workflow_config: ${{ needs.config_workflow.outputs.data }} RegressionTestsAarch64: needs: [config_workflow, build_arm_binary, stateless_tests_arm_binary_parallel] - if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'aarch64')}} + if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}} uses: ./.github/workflows/regression.yml secrets: inherit with: diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index c600cd1fb621..827d7ae53ddb 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -223,7 +223,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Dockers Build (multiplatform manifest)' --workflow "PR" --ci --timestamp fast_test: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'RmFzdCB0ZXN0') }} name: "Fast test" @@ -265,7 +265,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Fast test' --workflow "PR" --ci --timestamp ci_tests: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'Q0kgVGVzdHM=') }} name: "CI Tests" @@ -307,7 +307,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'CI Tests' --workflow "PR" --ci --timestamp build_arm_tidy: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV90aWR5KQ==') }} name: "Build (arm_tidy)" @@ -349,7 +349,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_tidy)' --workflow "PR" --ci --timestamp build_amd_debug: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9kZWJ1Zyk=') }} name: "Build (amd_debug)" @@ -391,7 +391,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_debug)' --workflow "PR" --ci --timestamp build_amd_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9hc2FuX3Vic2FuKQ==') }} name: "Build (amd_asan_ubsan)" @@ -433,7 +433,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_asan_ubsan)' --workflow "PR" --ci --timestamp build_amd_binary: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9iaW5hcnkp') }} name: "Build (amd_binary)" @@ -475,7 +475,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_binary)' --workflow "PR" --ci --timestamp build_arm_debug: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9kZWJ1Zyk=') }} name: "Build (arm_debug)" @@ -517,7 +517,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_debug)' --workflow "PR" --ci --timestamp build_arm_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9hc2FuX3Vic2FuKQ==') }} name: "Build (arm_asan_ubsan)" @@ -559,7 +559,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_asan_ubsan)' --workflow "PR" --ci --timestamp build_arm_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV91YnNhbik=') }} name: "Build (arm_ubsan)" @@ -601,7 +601,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_ubsan)' --workflow "PR" --ci --timestamp build_arm_binary: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9iaW5hcnkp') }} name: "Build (arm_binary)" @@ -643,7 +643,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_binary)' --workflow "PR" --ci --timestamp build_amd_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF90c2FuKQ==') }} name: "Build (amd_tsan)" @@ -685,7 +685,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_tsan)' --workflow "PR" --ci --timestamp build_amd_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9tc2FuKQ==') }} name: "Build (amd_msan)" @@ -727,7 +727,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_msan)' --workflow "PR" --ci --timestamp build_arm_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV90c2FuKQ==') }} name: "Build (arm_tsan)" @@ -769,7 +769,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_tsan)' --workflow "PR" --ci --timestamp build_arm_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9tc2FuKQ==') }} name: "Build (arm_msan)" @@ -1105,7 +1105,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'AST fuzzer (amd_debug, targeted, old_compatibility)' --workflow "PR" --ci --timestamp stateless_tests_amd_asan_ubsan_distributed_plan_parallel_1_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfYXNhbl91YnNhbiwgZGlzdHJpYnV0ZWQgcGxhbiwgcGFyYWxsZWwsIDEvMik=') }} name: "Stateless tests (amd_asan_ubsan, distributed plan, parallel, 1/2)" @@ -1147,7 +1147,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_asan_ubsan, distributed plan, parallel, 1/2)' --workflow "PR" --ci --timestamp stateless_tests_amd_asan_ubsan_distributed_plan_parallel_2_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfYXNhbl91YnNhbiwgZGlzdHJpYnV0ZWQgcGxhbiwgcGFyYWxsZWwsIDIvMik=') }} name: "Stateless tests (amd_asan_ubsan, distributed plan, parallel, 2/2)" @@ -1273,7 +1273,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_asan_ubsan, db disk, distributed plan, sequential, 2/2)' --workflow "PR" --ci --timestamp stateless_tests_amd_debug_parallel: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_debug, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfZGVidWcsIHBhcmFsbGVsKQ==') }} name: "Stateless tests (amd_debug, parallel)" @@ -1357,7 +1357,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_debug, sequential)' --workflow "PR" --ci --timestamp stateless_tests_amd_tsan_parallel_1_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfdHNhbiwgcGFyYWxsZWwsIDEvMik=') }} name: "Stateless tests (amd_tsan, parallel, 1/2)" @@ -1399,7 +1399,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_tsan, parallel, 1/2)' --workflow "PR" --ci --timestamp stateless_tests_amd_tsan_parallel_2_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfdHNhbiwgcGFyYWxsZWwsIDIvMik=') }} name: "Stateless tests (amd_tsan, parallel, 2/2)" @@ -3121,7 +3121,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Integration tests (amd_msan, 6/6)' --workflow "PR" --ci --timestamp unit_tests_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAoYXNhbl91YnNhbik=') }} name: "Unit tests (asan_ubsan)" @@ -3163,7 +3163,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (asan_ubsan)' --workflow "PR" --ci --timestamp unit_tests_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAodHNhbik=') }} name: "Unit tests (tsan)" @@ -3205,7 +3205,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (tsan)' --workflow "PR" --ci --timestamp unit_tests_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_msan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAobXNhbik=') }} name: "Unit tests (msan)" @@ -3247,7 +3247,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (msan)' --workflow "PR" --ci --timestamp unit_tests_asan_ubsan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAoYXNhbl91YnNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (asan_ubsan, function_prop_fuzzer)" @@ -3289,7 +3289,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (asan_ubsan, function_prop_fuzzer)' --workflow "PR" --ci --timestamp unit_tests_tsan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAodHNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (tsan, function_prop_fuzzer)" @@ -3331,7 +3331,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (tsan, function_prop_fuzzer)' --workflow "PR" --ci --timestamp unit_tests_msan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_msan, ci_tests, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAobXNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (msan, function_prop_fuzzer)" @@ -4549,7 +4549,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Keeper Stress Tests (PR)' --workflow "PR" --ci --timestamp build_toolchain_pgo_bolt_amd64: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgVG9vbGNoYWluIChQR08sIEJPTFQpIChhbWQ2NCk=') }} name: "Build Toolchain (PGO, BOLT) (amd64)" @@ -4592,7 +4592,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build Toolchain (PGO, BOLT) (amd64)' --workflow "PR" --ci --timestamp build_toolchain_pgo_bolt_aarch64: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgVG9vbGNoYWluIChQR08sIEJPTFQpIChhYXJjaDY0KQ==') }} name: "Build Toolchain (PGO, BOLT) (aarch64)" @@ -4679,7 +4679,7 @@ jobs: finish_workflow: runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] needs: [ast_fuzzer_amd_debug, ast_fuzzer_amd_debug_targeted, ast_fuzzer_amd_debug_targeted_old_compatibility, ast_fuzzer_amd_msan, ast_fuzzer_amd_tsan, ast_fuzzer_arm_asan_ubsan, build_amd_asan_ubsan, build_amd_binary, build_amd_debug, build_amd_msan, build_amd_release, build_amd_tsan, build_arm_asan_ubsan, build_arm_binary, build_arm_debug, build_arm_msan, build_arm_release, build_arm_tidy, build_arm_tsan, build_arm_ubsan, build_toolchain_pgo_bolt_aarch64, build_toolchain_pgo_bolt_amd64, buzzhouse_amd_debug, buzzhouse_amd_msan, buzzhouse_amd_tsan, buzzhouse_arm_asan_ubsan, ci_tests, compatibility_check_amd_release, compatibility_check_arm_release, config_workflow, docker_keeper_image, docker_server_image, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, fast_test, install_packages_amd_release, install_packages_arm_release, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_1_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_2_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_3_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_4_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_5_6, integration_tests_amd_asan_ubsan_db_disk_old_analyzer_6_6, integration_tests_amd_asan_ubsan_targeted, integration_tests_amd_msan_1_6, integration_tests_amd_msan_2_6, integration_tests_amd_msan_3_6, integration_tests_amd_msan_4_6, integration_tests_amd_msan_5_6, integration_tests_amd_msan_6_6, integration_tests_amd_tsan_1_6, integration_tests_amd_tsan_2_6, integration_tests_amd_tsan_3_6, integration_tests_amd_tsan_4_6, integration_tests_amd_tsan_5_6, integration_tests_amd_tsan_6_6, integration_tests_arm_binary_distributed_plan_1_4, integration_tests_arm_binary_distributed_plan_2_4, integration_tests_arm_binary_distributed_plan_3_4, integration_tests_arm_binary_distributed_plan_4_4, keeper_stress_tests_pr, quick_functional_tests, source_upload, sqllogic_test, sqlstorm_test, stateless_tests_amd_asan_ubsan_db_disk_distributed_plan_sequential_1_2, stateless_tests_amd_asan_ubsan_db_disk_distributed_plan_sequential_2_2, stateless_tests_amd_asan_ubsan_distributed_plan_parallel_1_2, stateless_tests_amd_asan_ubsan_distributed_plan_parallel_2_2, stateless_tests_amd_debug_distributed_plan_s3_storage_parallel, stateless_tests_amd_debug_distributed_plan_s3_storage_sequential, stateless_tests_amd_debug_parallel, stateless_tests_amd_debug_sequential, stateless_tests_amd_msan_wasmedge_parallel_1_4, stateless_tests_amd_msan_wasmedge_parallel_2_4, stateless_tests_amd_msan_wasmedge_parallel_3_4, stateless_tests_amd_msan_wasmedge_parallel_4_4, stateless_tests_amd_msan_wasmedge_sequential_1_2, stateless_tests_amd_msan_wasmedge_sequential_2_2, stateless_tests_amd_tsan_parallel_1_2, stateless_tests_amd_tsan_parallel_2_2, stateless_tests_amd_tsan_s3_storage_parallel_1_2, stateless_tests_amd_tsan_s3_storage_parallel_2_2, stateless_tests_amd_tsan_s3_storage_sequential_1_2, stateless_tests_amd_tsan_s3_storage_sequential_2_2, stateless_tests_amd_tsan_sequential_1_2, stateless_tests_amd_tsan_sequential_2_2, stateless_tests_arm_asan_ubsan_azure_parallel, stateless_tests_arm_asan_ubsan_azure_sequential, stateless_tests_arm_asan_ubsan_targeted, stateless_tests_arm_binary_parallel, stateless_tests_arm_binary_sequential, stress_test_amd_asan_ubsan, stress_test_amd_debug, stress_test_amd_msan, stress_test_amd_tsan, stress_test_arm_asan_ubsan, stress_test_arm_asan_ubsan_s3, stress_test_arm_debug, stress_test_arm_msan, stress_test_arm_release, stress_test_arm_tsan, stress_test_arm_ubsan, unit_tests_asan_ubsan, unit_tests_asan_ubsan_function_prop_fuzzer, unit_tests_msan, unit_tests_msan_function_prop_fuzzer, unit_tests_tsan, unit_tests_tsan_function_prop_fuzzer] - if: ${{ always() && needs.config_workflow.outputs.pipeline_status != '' }} + if: ${{ !cancelled() && needs.config_workflow.outputs.pipeline_status != '' }} name: "Finish Workflow" outputs: data: ${{ steps.run.outputs.DATA }} @@ -4733,7 +4733,7 @@ jobs: secrets: inherit with: docker_image: altinityinfra/clickhouse-server - version: ${{ fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.version.string }} + version: ${{ fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.version.string }} tag-suffix: ${{ matrix.suffix }} GrypeScanKeeper: needs: [config_workflow, docker_keeper_image] @@ -4742,11 +4742,11 @@ jobs: secrets: inherit with: docker_image: altinityinfra/clickhouse-keeper - version: ${{ fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.version.string }} + version: ${{ fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.version.string }} RegressionTestsRelease: needs: [config_workflow, build_amd_binary, stateless_tests_amd_debug_parallel] - if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression')}} + if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression')}} uses: ./.github/workflows/regression.yml secrets: inherit with: @@ -4758,7 +4758,7 @@ jobs: workflow_config: ${{ needs.config_workflow.outputs.data }} RegressionTestsAarch64: needs: [config_workflow, build_arm_binary, stateless_tests_arm_binary_parallel] - if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'aarch64')}} + if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}} uses: ./.github/workflows/regression.yml secrets: inherit with: diff --git a/.github/workflows/pull_request_community.yml b/.github/workflows/pull_request_community.yml index f60cf8bcb593..5e85fe14962b 100644 --- a/.github/workflows/pull_request_community.yml +++ b/.github/workflows/pull_request_community.yml @@ -82,7 +82,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Config Workflow' --workflow "Community PR" --ci --timestamp fast_test: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [config_workflow] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'RmFzdCB0ZXN0') }} name: "Fast test" @@ -124,7 +124,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Fast test' --workflow "Community PR" --ci --timestamp build_amd_debug: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9kZWJ1Zyk=') }} name: "Build (amd_debug)" @@ -179,7 +179,7 @@ jobs: path: ci/tmp/*.deb build_amd_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9hc2FuX3Vic2FuKQ==') }} name: "Build (amd_asan_ubsan)" @@ -241,7 +241,7 @@ jobs: path: ci/tmp/*.deb build_amd_binary: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9iaW5hcnkp') }} name: "Build (amd_binary)" @@ -289,7 +289,7 @@ jobs: path: ci/tmp/build/programs/self-extracting/clickhouse build_arm_debug: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9kZWJ1Zyk=') }} name: "Build (arm_debug)" @@ -344,7 +344,7 @@ jobs: path: ci/tmp/*.deb build_arm_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9hc2FuX3Vic2FuKQ==') }} name: "Build (arm_asan_ubsan)" @@ -399,7 +399,7 @@ jobs: path: ci/tmp/*.deb build_arm_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV91YnNhbik=') }} name: "Build (arm_ubsan)" @@ -454,7 +454,7 @@ jobs: path: ci/tmp/*.deb build_arm_binary: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9iaW5hcnkp') }} name: "Build (arm_binary)" @@ -502,7 +502,7 @@ jobs: path: ci/tmp/build/programs/self-extracting/clickhouse build_amd_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF90c2FuKQ==') }} name: "Build (amd_tsan)" @@ -564,7 +564,7 @@ jobs: path: ci/tmp/*.deb build_amd_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9tc2FuKQ==') }} name: "Build (amd_msan)" @@ -626,7 +626,7 @@ jobs: path: ci/tmp/*.deb build_arm_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV90c2FuKQ==') }} name: "Build (arm_tsan)" @@ -681,7 +681,7 @@ jobs: path: ci/tmp/*.deb build_arm_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9tc2FuKQ==') }} name: "Build (arm_msan)" @@ -922,7 +922,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Quick functional tests' --workflow "Community PR" --ci --timestamp stateless_tests_amd_asan_ubsan_distributed_plan_parallel_1_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, build_amd_debug, build_arm_binary, config_workflow, fast_test, stateless_tests_amd_debug_parallel, stateless_tests_arm_binary_parallel] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfYXNhbl91YnNhbiwgZGlzdHJpYnV0ZWQgcGxhbiwgcGFyYWxsZWwsIDEvMik=') }} name: "Stateless tests (amd_asan_ubsan, distributed plan, parallel, 1/2)" @@ -970,7 +970,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_asan_ubsan, distributed plan, parallel, 1/2)' --workflow "Community PR" --ci --timestamp stateless_tests_amd_asan_ubsan_distributed_plan_parallel_2_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, build_amd_debug, build_arm_binary, config_workflow, fast_test, stateless_tests_amd_debug_parallel, stateless_tests_arm_binary_parallel] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfYXNhbl91YnNhbiwgZGlzdHJpYnV0ZWQgcGxhbiwgcGFyYWxsZWwsIDIvMik=') }} name: "Stateless tests (amd_asan_ubsan, distributed plan, parallel, 2/2)" @@ -1114,7 +1114,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_asan_ubsan, db disk, distributed plan, sequential, 2/2)' --workflow "Community PR" --ci --timestamp stateless_tests_amd_debug_parallel: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_debug, config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfZGVidWcsIHBhcmFsbGVsKQ==') }} name: "Stateless tests (amd_debug, parallel)" @@ -1210,7 +1210,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_debug, sequential)' --workflow "Community PR" --ci --timestamp stateless_tests_amd_tsan_parallel_1_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_debug, build_amd_tsan, build_arm_binary, config_workflow, fast_test, stateless_tests_amd_debug_parallel, stateless_tests_arm_binary_parallel] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfdHNhbiwgcGFyYWxsZWwsIDEvMik=') }} name: "Stateless tests (amd_tsan, parallel, 1/2)" @@ -1258,7 +1258,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Stateless tests (amd_tsan, parallel, 1/2)' --workflow "Community PR" --ci --timestamp stateless_tests_amd_tsan_parallel_2_2: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_debug, build_amd_tsan, build_arm_binary, config_workflow, fast_test, stateless_tests_amd_debug_parallel, stateless_tests_arm_binary_parallel] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'U3RhdGVsZXNzIHRlc3RzIChhbWRfdHNhbiwgcGFyYWxsZWwsIDIvMik=') }} name: "Stateless tests (amd_tsan, parallel, 2/2)" @@ -3130,7 +3130,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Integration tests (amd_msan, 6/6)' --workflow "Community PR" --ci --timestamp unit_tests_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAoYXNhbl91YnNhbik=') }} name: "Unit tests (asan_ubsan)" @@ -3178,7 +3178,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (asan_ubsan)' --workflow "Community PR" --ci --timestamp unit_tests_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAodHNhbik=') }} name: "Unit tests (tsan)" @@ -3226,7 +3226,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (tsan)' --workflow "Community PR" --ci --timestamp unit_tests_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_msan, config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAobXNhbik=') }} name: "Unit tests (msan)" @@ -3274,7 +3274,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (msan)' --workflow "Community PR" --ci --timestamp unit_tests_asan_ubsan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_asan_ubsan, config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAoYXNhbl91YnNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (asan_ubsan, function_prop_fuzzer)" @@ -3322,7 +3322,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (asan_ubsan, function_prop_fuzzer)' --workflow "Community PR" --ci --timestamp unit_tests_tsan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_tsan, config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAodHNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (tsan, function_prop_fuzzer)" @@ -3370,7 +3370,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Unit tests (tsan, function_prop_fuzzer)' --workflow "Community PR" --ci --timestamp unit_tests_msan_function_prop_fuzzer: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] + runs-on: [self-hosted, altinity-on-demand, altinity-builder] needs: [build_amd_msan, config_workflow, fast_test] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'VW5pdCB0ZXN0cyAobXNhbiwgZnVuY3Rpb25fcHJvcF9mdXp6ZXIp') }} name: "Unit tests (msan, function_prop_fuzzer)" diff --git a/.github/workflows/regression-reusable-suite.yml b/.github/workflows/regression-reusable-suite.yml index cda6d8dd6591..37b0486b2d13 100644 --- a/.github/workflows/regression-reusable-suite.yml +++ b/.github/workflows/regression-reusable-suite.yml @@ -99,7 +99,7 @@ jobs: --local --collect-service-logs --output ${{ inputs.output_format }} - --attr project="${GITHUB_REPOSITORY}" project.id="${GITHUB_REPOSITORY_ID}" user.name="${GITHUB_ACTOR}" version="${{ fromJson(inputs.workflow_config).JOB_KV_DATA.version.string }}" package="$clickhouse_path" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.name="$REPORT_JOB_NAME" job.retry=$GITHUB_RUN_ATTEMPT job.url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" arch="$(uname -i)" + --attr project="${GITHUB_REPOSITORY}" project.id="${GITHUB_REPOSITORY_ID}" user.name="${GITHUB_ACTOR}" version="${{ fromJson(inputs.workflow_config).workflow_config.custom_data.version.string }}" package="$clickhouse_path" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="$(git rev-parse HEAD)" job.name="$REPORT_JOB_NAME" job.retry=$GITHUB_RUN_ATTEMPT job.url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" arch="$(uname -i)" --cicd --log raw.log ${{ inputs.flags != 'none' && inputs.flags || ''}} diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml index 8d2dde66fa46..62b423a7777b 100644 --- a/.github/workflows/regression.yml +++ b/.github/workflows/regression.yml @@ -121,8 +121,8 @@ env: jobs: Common: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'common') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'common') strategy: fail-fast: false matrix: @@ -145,8 +145,8 @@ jobs: AggregateFunctions: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'aggregate_functions') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'aggregate_functions') strategy: fail-fast: false matrix: @@ -170,8 +170,8 @@ jobs: secrets: inherit Alter: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'alter') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'alter') strategy: fail-fast: false matrix: @@ -202,8 +202,8 @@ jobs: Benchmark: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'benchmark') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'benchmark') strategy: fail-fast: false matrix: @@ -228,8 +228,8 @@ jobs: ClickHouseKeeper: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'clickhouse_keeper') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'clickhouse_keeper') strategy: fail-fast: false matrix: @@ -256,8 +256,8 @@ jobs: Iceberg: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'iceberg') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'iceberg') strategy: fail-fast: false matrix: @@ -281,8 +281,8 @@ jobs: secrets: inherit LDAP: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'ldap') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'ldap') strategy: fail-fast: false matrix: @@ -305,10 +305,10 @@ jobs: OAuth: if: | - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.version.string, 'antalya') && + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') && ( - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'oauth') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'oauth') ) uses: ./.github/workflows/regression-reusable-suite.yml with: @@ -328,8 +328,8 @@ jobs: Parquet: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'parquet') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'parquet') uses: ./.github/workflows/regression-reusable-suite.yml with: ref: ${{ inputs.commit }} @@ -348,8 +348,8 @@ jobs: ParquetS3: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'parquet') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'parquet') strategy: fail-fast: false matrix: @@ -374,8 +374,8 @@ jobs: RBAC: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'rbac') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'rbac') strategy: fail-fast: false matrix: @@ -399,8 +399,8 @@ jobs: secrets: inherit SSLServer: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'ssl_server') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'ssl_server') strategy: fail-fast: false matrix: @@ -425,8 +425,8 @@ jobs: S3: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 's3') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 's3') strategy: fail-fast: false matrix: @@ -457,8 +457,8 @@ jobs: S3Export: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 's3_export') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 's3_export') strategy: fail-fast: false matrix: @@ -485,10 +485,10 @@ jobs: Swarms: if: | - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.version.string, 'antalya') && + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.version.string, 'antalya') && ( - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'swarms') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'swarms') ) uses: ./.github/workflows/regression-reusable-suite.yml with: @@ -508,8 +508,8 @@ jobs: TieredStorage: if: | - fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs[0] == null || - contains(fromJson(inputs.workflow_config).JOB_KV_DATA.ci_regression_jobs, 'tiered_storage') + fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs[0] == null || + contains(fromJson(inputs.workflow_config).workflow_config.custom_data.ci_regression_jobs, 'tiered_storage') strategy: fail-fast: false matrix: diff --git a/.github/workflows/release_builds.yml b/.github/workflows/release_builds.yml index 5c553066ca2e..7d30ba671385 100644 --- a/.github/workflows/release_builds.yml +++ b/.github/workflows/release_builds.yml @@ -1,11 +1,13 @@ # generated by praktika name: Release Builds + on: workflow_dispatch: inputs: env: + # Force the stdout and stderr streams to be unbuffered PYTHONUNBUFFERED: 1 GH_TOKEN: ${{ github.token }} CHECKOUT_REF: "" @@ -219,7 +221,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Dockers Build (multiplatform manifest)' --workflow "Release Builds" --ci --timestamp build_amd_debug: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9kZWJ1Zyk=') }} name: "Build (amd_debug)" @@ -263,7 +265,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_debug)' --workflow "Release Builds" --ci --timestamp build_amd_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9hc2FuX3Vic2FuKQ==') }} name: "Build (amd_asan_ubsan)" @@ -307,7 +309,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_asan_ubsan)' --workflow "Release Builds" --ci --timestamp build_amd_binary: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9iaW5hcnkp') }} name: "Build (amd_binary)" @@ -351,7 +353,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_binary)' --workflow "Release Builds" --ci --timestamp build_arm_debug: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9kZWJ1Zyk=') }} name: "Build (arm_debug)" @@ -395,7 +397,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_debug)' --workflow "Release Builds" --ci --timestamp build_arm_asan_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9hc2FuX3Vic2FuKQ==') }} name: "Build (arm_asan_ubsan)" @@ -439,7 +441,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_asan_ubsan)' --workflow "Release Builds" --ci --timestamp build_arm_ubsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV91YnNhbik=') }} name: "Build (arm_ubsan)" @@ -483,7 +485,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_ubsan)' --workflow "Release Builds" --ci --timestamp build_arm_binary: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9iaW5hcnkp') }} name: "Build (arm_binary)" @@ -527,7 +529,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_binary)' --workflow "Release Builds" --ci --timestamp build_amd_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF90c2FuKQ==') }} name: "Build (amd_tsan)" @@ -571,7 +573,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_tsan)' --workflow "Release Builds" --ci --timestamp build_amd_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-builder] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFtZF9tc2FuKQ==') }} name: "Build (amd_msan)" @@ -615,7 +617,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (amd_msan)' --workflow "Release Builds" --ci --timestamp build_arm_tsan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV90c2FuKQ==') }} name: "Build (arm_tsan)" @@ -659,7 +661,7 @@ jobs: PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_tsan)' --workflow "Release Builds" --ci --timestamp build_arm_msan: - runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] + runs-on: [self-hosted, altinity-on-demand, altinity-func-tester] needs: [build_amd_binary, build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest] if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(needs.*.outputs.pipeline_status, 'undefined') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.cache_success_base64, 'QnVpbGQgKGFybV9tc2FuKQ==') }} name: "Build (arm_msan)" @@ -1189,7 +1191,7 @@ jobs: finish_workflow: runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] needs: [build_amd_asan_ubsan, build_amd_binary, build_amd_debug, build_amd_msan, build_amd_release, build_amd_tsan, build_arm_asan_ubsan, build_arm_binary, build_arm_debug, build_arm_msan, build_arm_release, build_arm_tsan, build_arm_ubsan, config_workflow, docker_keeper_image, docker_server_image, dockers_build_amd, dockers_build_arm, dockers_build_multiplatform_manifest, install_packages_amd_release, install_packages_arm_release, sign_release_amd_release, sign_release_arm_release, source_upload, stateless_tests_arm_binary_parallel, stateless_tests_arm_binary_sequential] - if: ${{ always() && needs.config_workflow.outputs.pipeline_status != '' }} + if: ${{ !cancelled() && needs.config_workflow.outputs.pipeline_status != '' }} name: "Finish Workflow" outputs: data: ${{ steps.run.outputs.DATA }} @@ -1245,7 +1247,7 @@ jobs: secrets: inherit with: docker_image: altinityinfra/clickhouse-server - version: ${{ fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.version.string }} + version: ${{ fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.version.string }} tag-suffix: ${{ matrix.suffix }} GrypeScanKeeper: needs: [config_workflow, docker_keeper_image] @@ -1254,7 +1256,7 @@ jobs: secrets: inherit with: docker_image: altinityinfra/clickhouse-keeper - version: ${{ fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.version.string }} + version: ${{ fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.version.string }} FinishCIReport: if: ${{ !cancelled() && needs.config_workflow.outputs.pipeline_status != '' }} diff --git a/ci/defs/defs.py b/ci/defs/defs.py index 489439355853..6ebc34260aff 100644 --- a/ci/defs/defs.py +++ b/ci/defs/defs.py @@ -24,12 +24,12 @@ class RunnerLabels: "altinity-on-demand", "altinity-func-tester-aarch64", ] - AMD_LARGE = ["self-hosted", "altinity-on-demand", "altinity-func-tester"] + AMD_LARGE = ["self-hosted", "altinity-on-demand", "altinity-builder"] ARM_LARGE = ["self-hosted", "altinity-on-demand", "altinity-func-tester-aarch64"] ARM_LARGE_STORAGE = ["self-hosted", "altinity-on-demand", "altinity-func-tester-aarch64"] AMD_MEDIUM = ["self-hosted", "altinity-on-demand", "altinity-func-tester"] ARM_MEDIUM = ["self-hosted", "altinity-on-demand", "altinity-func-tester-aarch64"] - AMD_MEDIUM_CPU = ["self-hosted", "altinity-on-demand", "altinity-func-tester"] + AMD_MEDIUM_CPU = ["self-hosted", "altinity-on-demand", "altinity-builder"] ARM_MEDIUM_CPU = [ "self-hosted", "altinity-on-demand", diff --git a/ci/defs/job_configs.py b/ci/defs/job_configs.py index 65cdee8fde05..6311483e3779 100644 --- a/ci/defs/job_configs.py +++ b/ci/defs/job_configs.py @@ -141,7 +141,8 @@ common_unit_test_job_config = Job.Config( name=JobNames.UNITTEST, runs_on=[], # from parametrize() - command="python3 ./ci/jobs/unit_tests_job.py --gtest_filter=-FunctionsStress.*", + # `SilkFiberSocketTest` requires invariant TSC, which is not exposed on all runners. + command="python3 ./ci/jobs/unit_tests_job.py --gtest_filter=-FunctionsStress.*:SilkFiberSocketTest*", run_in_docker="altinityinfra/test-base+--privileged", digest_config=Job.CacheDigestConfig( include_paths=[ @@ -212,7 +213,7 @@ class JobConfigs: ) ci_tests = Job.Config( name=JobNames.CI_TESTS, - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, command="python3 ./ci/jobs/ci_tests_job.py", timeout=1200, run_in_docker=f"altinityinfra/integration-tests-runner+root+--privileged+--dns-search='.'+--security-opt seccomp=unconfined+--cap-add=SYS_PTRACE+{docker_sock_mount}+--volume=clickhouse_integration_tests_volume:/var/lib/docker+--cgroupns=host", @@ -264,14 +265,14 @@ class JobConfigs: Job.ParamSet( parameter=BuildTypes.ARM_TIDY, provides=[], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), ) tidy_build_amd_jobs = common_build_job_config.parametrize( Job.ParamSet( parameter=BuildTypes.AMD_TIDY, provides=[], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), ) build_jobs = common_build_job_config.set_post_hooks( @@ -283,7 +284,7 @@ class JobConfigs: Job.ParamSet( parameter=BuildTypes.AMD_DEBUG, provides=[ArtifactNames.CH_AMD_DEBUG, ArtifactNames.DEB_AMD_DEBUG], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.AMD_ASAN_UBSAN, @@ -292,17 +293,17 @@ class JobConfigs: ArtifactNames.DEB_AMD_ASAN_UBSAN, ArtifactNames.UNITTEST_AMD_ASAN_UBSAN, ], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.AMD_BINARY, provides=[ArtifactNames.CH_AMD_BINARY], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.ARM_DEBUG, provides=[ArtifactNames.CH_ARM_DEBUG, ArtifactNames.DEB_ARM_DEBUG], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.ARM_ASAN_UBSAN, @@ -310,17 +311,17 @@ class JobConfigs: ArtifactNames.CH_ARM_ASAN_UBSAN, ArtifactNames.DEB_ARM_ASAN_UBSAN, ], - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.ARM_UBSAN, provides=[ArtifactNames.CH_ARM_UBSAN, ArtifactNames.DEB_ARM_UBSAN], - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.ARM_BINARY, provides=[ArtifactNames.CH_ARM_BINARY], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), ) + common_sanitizer_build_job_config.set_post_hooks( post_hooks=[ @@ -335,7 +336,7 @@ class JobConfigs: ArtifactNames.DEB_AMD_TSAN, ArtifactNames.UNITTEST_AMD_TSAN, ], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.AMD_MSAN, @@ -344,7 +345,7 @@ class JobConfigs: ArtifactNames.DEB_AMD_MSAN, ArtifactNames.UNITTEST_AMD_MSAN, ], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.ARM_TSAN, @@ -352,12 +353,12 @@ class JobConfigs: ArtifactNames.CH_ARM_TSAN, ArtifactNames.DEB_ARM_TSAN, ], - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.ARM_MSAN, provides=[ArtifactNames.CH_ARM_MSAN, ArtifactNames.DEB_ARM_MSAN], - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), ) coverage_build_jobs = common_build_job_config.parametrize( @@ -366,14 +367,14 @@ class JobConfigs: provides=[ ArtifactNames.CH_AMD_LLVM_COVERAGE_BUILD, ], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.PER_TEST_COVERAGE, provides=[ ArtifactNames.CH_AMD_PER_TEST_COVERAGE_BUILD, ], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), ) release_build_jobs = common_build_job_config.set_post_hooks( @@ -432,52 +433,52 @@ class JobConfigs: Job.ParamSet( parameter=BuildTypes.ARM_DARWIN, provides=[ArtifactNames.CH_ARM_DARWIN_BIN], - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.ARM_V80COMPAT, provides=[ArtifactNames.CH_ARM_V80COMPAT], - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.AMD_FREEBSD, provides=[ArtifactNames.CH_AMD_FREEBSD], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.PPC64LE, provides=[ArtifactNames.CH_PPC64LE], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.AMD_COMPAT, provides=[ArtifactNames.CH_AMD_COMPAT], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.AMD_MUSL, provides=[ArtifactNames.CH_AMD_MUSL], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.RISCV64, provides=[ArtifactNames.CH_RISCV64], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.S390X, provides=[ArtifactNames.CH_S390X], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.LOONGARCH64, provides=[ArtifactNames.CH_LOONGARCH64], - runs_on=RunnerLabels.BUILDER_AMD, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), Job.ParamSet( parameter=BuildTypes.ARM_FUZZERS, provides=[], - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, ), ) install_check_jobs = Job.Config( @@ -1476,7 +1477,7 @@ class JobConfigs: ), Job.ParamSet( parameter="aarch64", - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, provides=[ ArtifactNames.CLICKHOUSE_PGO_PROFILE_ARM, ArtifactNames.CLICKHOUSE_BOLT_PROFILE_ARM, @@ -1500,7 +1501,7 @@ class JobConfigs: ), Job.ParamSet( parameter="aarch64", - runs_on=RunnerLabels.ARM_LARGE, + runs_on=RunnerLabels.FUNC_TESTER_AMD, provides=[ArtifactNames.TOOLCHAIN_PGO_BOLT_ARM], ), ) diff --git a/ci/jobs/functional_tests.py b/ci/jobs/functional_tests.py index 527315f21002..344494715739 100644 --- a/ci/jobs/functional_tests.py +++ b/ci/jobs/functional_tests.py @@ -863,7 +863,9 @@ def start(): test_result.status = Result.Status.ERROR break - ft_res_processor_bt = FTResultsProcessor(wd=temp_dir) + ft_res_processor_bt = FTResultsProcessor( + wd=temp_dir, test_options=test_options + ) bt_runner_exit_code = run_tests( batch_num=0, batch_total=0, diff --git a/ci/jobs/scripts/clickhouse_version.py b/ci/jobs/scripts/clickhouse_version.py index de6e1e550e56..002b6c4d5514 100644 --- a/ci/jobs/scripts/clickhouse_version.py +++ b/ci/jobs/scripts/clickhouse_version.py @@ -1,6 +1,5 @@ import re import sys -import os from pathlib import Path from ci.praktika.info import Info @@ -9,8 +8,7 @@ # NOTE(vnemkov): extremely hackish, buts allows to reuse code from version_helper and git_helper with our modifications. # allow to import other packages that are located in `tests/ci` directory, like `git_helper` -import tests.ci -sys.path.append(os.path.abspath(tests.ci.__path__._path[0])) +sys.path.append(str(Path(__file__).resolve().parents[3] / "tests" / "ci")) class CHVersion: FILE_WITH_VERSION_PATH = "./cmake/autogenerated_versions.txt" diff --git a/ci/jobs/scripts/workflow_hooks/filter_job.py b/ci/jobs/scripts/workflow_hooks/filter_job.py index bed6f32b4d81..e760c6d59fbb 100644 --- a/ci/jobs/scripts/workflow_hooks/filter_job.py +++ b/ci/jobs/scripts/workflow_hooks/filter_job.py @@ -8,6 +8,8 @@ ) from ci.jobs.scripts.workflow_hooks.pr_labels_and_category import Labels from ci.praktika.info import Info +from ci.praktika.runtime import RunConfig +from ci.praktika.settings import Settings def only_docs(changed_files): @@ -62,6 +64,23 @@ def only_docs(changed_files): "Stateless tests (amd_binary, flaky check)", ] +# The aarch64/arm exclude tags are meant to skip arm *tests*, but the arm release +# build and its docker jobs are release artifacts, not tests, so they must keep +# running even when arm tests are excluded. +DOCKER_REQUIRED_ARM_JOBS = { + "Build (arm_release)", + Settings.DOCKER_BUILD_ARM_LINUX_JOB_NAME, + Settings.DOCKER_BUILD_MANIFEST_JOB_NAME, +} + + +def is_ci_excluded_by_tag(job_name, tag): + if tag in ("aarch64", "arm") and job_name in DOCKER_REQUIRED_ARM_JOBS: + return False + + return tag in job_name.lower() + + # Must match ci.workflows.pull_request.KEEPER_STRESS_PR_NAME KEEPER_STRESS_PR_NAME = "Keeper Stress Tests (PR)" @@ -254,9 +273,14 @@ def should_skip_job(job_name): ): return True, "Skipped, not labeled with 'pr-performance'" - ci_exclude_tags = _info_cache.get_kv_data("ci_exclude_tags") or [] + # The CI tags live in workflow_config.custom_data (see parse_ci_tags.py), + # which runs as a pre-hook, so the value is present by the time this runs. + ci_exclude_tags = ( + RunConfig.from_fs(_info_cache.workflow_name).custom_data.get("ci_exclude_tags") + or [] + ) for tag in ci_exclude_tags: - if tag in job_name.lower(): + if is_ci_excluded_by_tag(job_name, tag): return True, f"Skipped, job name includes excluded tag '{tag}'" # If only CI scripts changed (no product code), run a minimal set of tests diff --git a/ci/jobs/scripts/workflow_hooks/parse_ci_tags.py b/ci/jobs/scripts/workflow_hooks/parse_ci_tags.py index c28f59b552ee..ddbba31bbee4 100644 --- a/ci/jobs/scripts/workflow_hooks/parse_ci_tags.py +++ b/ci/jobs/scripts/workflow_hooks/parse_ci_tags.py @@ -1,6 +1,7 @@ import re from ci.praktika.info import Info +from ci.praktika.runtime import RunConfig def get_ci_tags(pr_body, tag_prefix): @@ -14,5 +15,19 @@ def get_ci_tags(pr_body, tag_prefix): if __name__ == "__main__": info = Info() - info.store_kv_data("ci_exclude_tags", get_ci_tags(info.pr_body, "ci_exclude")) - info.store_kv_data("ci_regression_jobs", get_ci_tags(info.pr_body, "ci_regression")) + ci_exclude_tags = get_ci_tags(info.pr_body, "ci_exclude") + ci_regression_jobs = get_ci_tags(info.pr_body, "ci_regression") + + # Store the tags in workflow_config.custom_data, which is emitted as plain + # JSON in the config job's `data` output. This is the single source of truth + # for the tags: the GitHub Actions `if:` expressions that gate the regression + # jobs read `custom_data.ci_(exclude_tags|regression_jobs)`, and the config + # job's own hooks (filter_job.py, native_jobs.py) read custom_data too. + # JOB_KV_DATA is not usable here because it is base64-encoded in that output + # (to keep user-authored strings from matching a secret pattern and + # suppressing the whole output), so `fromJson(...).JOB_KV_DATA` cannot be + # dereferenced from a workflow. + workflow_config = RunConfig.from_fs(info.workflow_name) + workflow_config.custom_data["ci_exclude_tags"] = ci_exclude_tags + workflow_config.custom_data["ci_regression_jobs"] = ci_regression_jobs + workflow_config.dump() diff --git a/ci/jobs/scripts/workflow_hooks/version_log.py b/ci/jobs/scripts/workflow_hooks/version_log.py index b173c60ed954..1d3855a5874d 100644 --- a/ci/jobs/scripts/workflow_hooks/version_log.py +++ b/ci/jobs/scripts/workflow_hooks/version_log.py @@ -1,6 +1,7 @@ from datetime import datetime from praktika.info import Info +from praktika.runtime import RunConfig from praktika.utils import Shell from ci.jobs.scripts.cidb_cluster import CIDBCluster @@ -30,6 +31,14 @@ def _add_build_to_version_history(): # stores actual version data in pipline storage, to be used by jobs that need it CHVersion.store_version_data_in_ci_pipeline(version) + # Also mirror it into workflow_config.custom_data so GitHub Actions `if:` + # expressions can read `custom_data.version.string` as plain JSON - the + # config job's `data` output emits JOB_KV_DATA base64-encoded, so + # `fromJson(...).JOB_KV_DATA.version` is not dereferenceable from a workflow. + workflow_config = RunConfig.from_fs(Info().workflow_name) + workflow_config.custom_data["version"] = version + workflow_config.dump() + if __name__ == "__main__": _add_build_to_version_history() diff --git a/ci/praktika/s3.py b/ci/praktika/s3.py index ea582b7b4c23..0cf1ac00cf59 100644 --- a/ci/praktika/s3.py +++ b/ci/praktika/s3.py @@ -4,7 +4,7 @@ import os import time from pathlib import Path -from typing import Dict +from typing import Dict, Optional from urllib.parse import quote import re @@ -95,14 +95,14 @@ def _retry_on_no_credentials(cls, func, retries=3, delay=5): @dataclasses.dataclass class Object: - AcceptRanges: str - Expiration: str - LastModified: str - ContentLength: int - ETag: str - ContentType: str - ServerSideEncryption: str - Metadata: Dict + AcceptRanges: Optional[str] = None + Expiration: Optional[str] = None + LastModified: Optional[str] = None + ContentLength: Optional[int] = None + ETag: Optional[str] = None + ContentType: Optional[str] = None + ServerSideEncryption: Optional[str] = None + Metadata: Dict = dataclasses.field(default_factory=dict) def has_tags(self, tags): meta = self.Metadata @@ -440,7 +440,10 @@ def head_object(cls, s3_path): if not output: return None else: - return cls.Object(**json.loads(output)) + data = json.loads(output) + object_fields = {field.name for field in dataclasses.fields(cls.Object)} + object_data = {k: v for k, v in data.items() if k in object_fields} + return cls.Object(**object_data) @classmethod def assert_read_access(cls, s3_path): diff --git a/ci/praktika/workflow.py b/ci/praktika/workflow.py index 9d6a46cba5cf..52cc331fae1a 100644 --- a/ci/praktika/workflow.py +++ b/ci/praktika/workflow.py @@ -144,4 +144,5 @@ class InputConfig: description: str is_required: bool default_value: str + input_type: str options: Optional[List] = None diff --git a/ci/praktika/yaml_additional_templates.py b/ci/praktika/yaml_additional_templates.py index bf4c6c8a4e25..ac694f442a16 100644 --- a/ci/praktika/yaml_additional_templates.py +++ b/ci/praktika/yaml_additional_templates.py @@ -49,7 +49,7 @@ class AltinityWorkflowTemplates: secrets: inherit with: docker_image: altinityinfra/clickhouse-server - version: ${{ fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.version.string }} + version: ${{ fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.version.string }} tag-suffix: ${{ matrix.suffix }} GrypeScanKeeper: needs: [config_workflow, docker_keeper_image] @@ -58,12 +58,12 @@ class AltinityWorkflowTemplates: secrets: inherit with: docker_image: altinityinfra/clickhouse-keeper - version: ${{ fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.version.string }} + version: ${{ fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.version.string }} """, "Regression": r""" RegressionTestsRelease: needs: [config_workflow, build_amd_binary, stateless_tests_amd_debug_parallel] - if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression')}} + if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression')}} uses: ./.github/workflows/regression.yml secrets: inherit with: @@ -75,7 +75,7 @@ class AltinityWorkflowTemplates: workflow_config: ${{ needs.config_workflow.outputs.data }} RegressionTestsAarch64: needs: [config_workflow, build_arm_binary, stateless_tests_arm_binary_parallel] - if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).JOB_KV_DATA.ci_exclude_tags, 'aarch64')}} + if: ${{ !cancelled() && !contains(needs.*.outputs.pipeline_status, 'failure') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'regression') && !contains(fromJson(needs.config_workflow.outputs.data).workflow_config.custom_data.ci_exclude_tags, 'aarch64')}} uses: ./.github/workflows/regression.yml secrets: inherit with: diff --git a/ci/praktika/yaml_generator.py b/ci/praktika/yaml_generator.py index df0c6e3ed7fd..5e138efc8459 100644 --- a/ci/praktika/yaml_generator.py +++ b/ci/praktika/yaml_generator.py @@ -102,11 +102,13 @@ class Templates: # generated by praktika name: {NAME} + on: workflow_dispatch: inputs:{DISPATCH_INPUTS} env: + # Force the stdout and stderr streams to be unbuffered PYTHONUNBUFFERED: 1 {ENV_CHECKOUT_REFERENCE} {ENV_SECRETS} @@ -120,6 +122,7 @@ class Templates: {NAME}: description: {DESCRIPTION} required: {IS_REQUIRED} + type: {INPUT_TYPE} default: {DEFAULT_VALUE}\ """ @@ -241,7 +244,7 @@ class Templates: """ TEMPLATE_IF_EXPRESSION_ALWAYS = """ - if: ${{ always() && needs.config_workflow.outputs.pipeline_status != '' }}\ + if: ${{ !cancelled() && needs.config_workflow.outputs.pipeline_status != '' }}\ """ def __init__(self): @@ -437,6 +440,7 @@ def _all_needs(job_name: str) -> set: DESCRIPTION=input_item.description, IS_REQUIRED="true" if input_item.is_required else "false", DEFAULT_VALUE=input_item.default_value or "''", + INPUT_TYPE=input_item.input_type, ) else: dispatch_inputs += ( diff --git a/ci/settings/altinity_overrides.py b/ci/settings/altinity_overrides.py index 6364be5b5cf7..dc9e94f04f8a 100644 --- a/ci/settings/altinity_overrides.py +++ b/ci/settings/altinity_overrides.py @@ -70,7 +70,6 @@ class RunnerLabels: "nightly_upload.py", "optimize_clickhouse.py", "pr_version_info.py", - "release_builds.py", "VectorSearchStress.py", ] diff --git a/ci/tests/test_clickhouse_version.py b/ci/tests/test_clickhouse_version.py index bfccf3d23b9d..cf4ec9b6a13e 100644 --- a/ci/tests/test_clickhouse_version.py +++ b/ci/tests/test_clickhouse_version.py @@ -1,16 +1,8 @@ """ Tests for `ci.jobs.scripts.clickhouse_version.CHVersion.get_current_version_as_dict`. -In PRs the version tweak is pinned to 1 instead of being derived from the git -commit count. Closing and reopening a PR makes GitHub rebuild the ephemeral -merge commit on an advanced master, so `git rev-list --count ...` returns a -different tweak for the same HEAD commit. Two builds for one HEAD sha would -then upload artifacts with diverging version strings to the same S3 prefix and -the "Install packages (*_release)" job would later abort with -"cannot install both clickhouse-keeper-...-250 and ...-185". Pinning tweak=1 in -PRs keeps the version stable per HEAD commit and removes that precondition. - -On master / release branches the tweak is still the real commit count. +This branch uses the release version from `cmake/autogenerated_versions.txt` +as-is instead of deriving CI-only version fields from the current checkout. """ import os @@ -21,13 +13,15 @@ from ci.jobs.scripts.clickhouse_version import CHVersion _RELEASE = { - "major": 26, - "minor": 6, - "patch": 1, - "revision": "54511", - "githash": "cdee4c67ae5d33f5d1853693325b23ed88a36cfc", - "describe": "v26.6.1.1-testing", - "string": "26.6.1.1", + "major": 99, + "minor": 88, + "patch": 77, + "revision": "12345", + "githash": "release-file-sha", + "tweak": "66", + "flavour": "customflavour", + "describe": "v99.88.77.66.customflavour", + "string": "99.88.77.66.customflavour", } @@ -58,19 +52,14 @@ def fake_get_output(command, verbose=False): return calls -def test_pr_pins_tweak_to_one(monkeypatch): - # A PR build: tweak is pinned regardless of the real commit count. +def test_pr_uses_release_version_as_is(monkeypatch): calls = _patch(monkeypatch, pr_number=107138, commit_count="250") version = CHVersion.get_current_version_as_dict() - assert version["tweak"] == 1 - assert version["string"] == "26.6.1.1" - assert version["describe"] == "v26.6.1.1-testing" - # git rev-list must not be consulted in PRs. + assert version == _RELEASE assert calls == [] -def test_pr_tweak_stable_across_reopen(monkeypatch): - # Same HEAD, different merge-commit count after a close/reopen: still 1. +def test_pr_version_stable_across_reopen(monkeypatch): v1 = ( _patch(monkeypatch, pr_number=107138, commit_count="185"), CHVersion.get_current_version_as_dict()["string"], @@ -79,21 +68,17 @@ def test_pr_tweak_stable_across_reopen(monkeypatch): _patch(monkeypatch, pr_number=107138, commit_count="250"), CHVersion.get_current_version_as_dict()["string"], )[1] - assert v1 == v2 == "26.6.1.1" + assert v1 == v2 == _RELEASE["string"] -def test_master_uses_real_commit_count(monkeypatch): - # pr_number == 0 (master / release branch): tweak is the real count. +def test_master_uses_release_version_as_is(monkeypatch): calls = _patch(monkeypatch, pr_number=0, commit_count="106") version = CHVersion.get_current_version_as_dict() - assert version["tweak"] == 106 - assert version["string"] == "26.6.1.106" - assert len(calls) == 1 - assert "git rev-list --count --first-parent" in calls[0] + assert version == _RELEASE + assert calls == [] -def test_master_shallow_checkout_falls_back_to_one(monkeypatch): - # pr_number == 0 but git rev-list returns garbage: keep the tweak=1 fallback. +def test_master_shallow_checkout_uses_release_version_as_is(monkeypatch): monkeypatch.setattr( CHVersion, "get_release_version_as_dict", classmethod(lambda cls: dict(_RELEASE)) ) @@ -105,5 +90,4 @@ def test_master_shallow_checkout_falls_back_to_one(monkeypatch): lambda command, verbose=False: "not-a-number", ) version = CHVersion.get_current_version_as_dict() - assert version["tweak"] == 1 - assert version["string"] == "26.6.1.1" + assert version == _RELEASE diff --git a/ci/tests/test_functional_tests_results.py b/ci/tests/test_functional_tests_results.py index ef63c8184996..d5fbdabfc87b 100644 --- a/ci/tests/test_functional_tests_results.py +++ b/ci/tests/test_functional_tests_results.py @@ -36,7 +36,9 @@ def _process(tmp_path, output, runner_exit_code): (tmp_path / "test_result.txt").write_text(output, encoding="utf-8") - return FTResultsProcessor(wd=str(tmp_path)).run(runner_exit_code=runner_exit_code) + return FTResultsProcessor(wd=str(tmp_path), test_options=[]).run( + runner_exit_code=runner_exit_code + ) def _named(result, name): diff --git a/ci/workflows/master.py b/ci/workflows/master.py index a896dcac71de..6e414f2c17e7 100644 --- a/ci/workflows/master.py +++ b/ci/workflows/master.py @@ -22,8 +22,16 @@ workflow = Workflow.Config( name="MasterCI", - event=Workflow.Event.PUSH, - branches=[BASE_BRANCH, "releases/*", "antalya-*", "stable-*"], + event=Workflow.Event.DISPATCH, + inputs=[ + Workflow.Config.InputConfig( + name="no_cache", + description="Run without cache", + is_required=False, + input_type="boolean", + default_value="false", + ), + ], jobs=[ # *JobConfigs.tidy_build_arm_jobs, *JobConfigs.build_jobs, diff --git a/tests/integration/compose/docker_compose_postgresql_dotnet_client.yml b/tests/integration/compose/docker_compose_postgresql_dotnet_client.yml index 754b0547194f..2f19c4ea204e 100644 --- a/tests/integration/compose/docker_compose_postgresql_dotnet_client.yml +++ b/tests/integration/compose/docker_compose_postgresql_dotnet_client.yml @@ -1,5 +1,5 @@ services: postgresql-dotnet-client: - image: clickhouse/mysql_dotnet_client:${DOCKER_MYSQL_DOTNET_CLIENT_TAG:-latest} + image: altinityinfra/mysql_dotnet_client:${DOCKER_MYSQL_DOTNET_CLIENT_TAG:-latest} # to keep container running command: sleep infinity diff --git a/tests/queries/0_stateless/00038_uniq_state_merge2.sql b/tests/queries/0_stateless/00038_uniq_state_merge2.sql index fb9bf2ace4d5..1a2339936736 100644 --- a/tests/queries/0_stateless/00038_uniq_state_merge2.sql +++ b/tests/queries/0_stateless/00038_uniq_state_merge2.sql @@ -1,4 +1,4 @@ --- Tags: stateful +-- Tags: stateful, no-parallel SET max_bytes_before_external_group_by = '1G'; SET max_bytes_ratio_before_external_group_by = 0; SELECT topLevelDomain(concat('http://', k)) AS tld, sum(u) AS u, uniqMerge(us) AS us FROM (SELECT domain(URL) AS k, uniq(UserID) AS u, uniqState(UserID) AS us FROM test.hits GROUP BY k) GROUP BY tld ORDER BY u DESC, tld ASC LIMIT 100 diff --git a/tests/queries/0_stateless/00139_like.sql b/tests/queries/0_stateless/00139_like.sql index e56ccb377841..edf246ee33ae 100644 --- a/tests/queries/0_stateless/00139_like.sql +++ b/tests/queries/0_stateless/00139_like.sql @@ -1,4 +1,4 @@ --- Tags: stateful +-- Tags: stateful, no-random-settings /* Note that queries are written as the user doesn't really understand that the symbol _ has special meaning in LIKE pattern. */ SELECT count() FROM test.hits WHERE URL LIKE '%/avtomobili_s_probegom/_%__%__%__%'; SELECT count() FROM test.hits WHERE URL LIKE '/avtomobili_s_probegom/_%__%__%__%'; diff --git a/tests/queries/0_stateless/00165_jit_aggregate_functions.sql b/tests/queries/0_stateless/00165_jit_aggregate_functions.sql index 6efee311f19f..972572c0003b 100644 --- a/tests/queries/0_stateless/00165_jit_aggregate_functions.sql +++ b/tests/queries/0_stateless/00165_jit_aggregate_functions.sql @@ -1,4 +1,4 @@ --- Tags: stateful +-- Tags: stateful, no-random-settings SET min_count_to_compile_aggregate_expression = 0; -- The test uses many aggregations. A low max_bytes_before_external_group_by value will lead to high disk usage -- which in CI leads to timeouts diff --git a/tests/queries/0_stateless/00446_clear_column_in_partition_concurrent_zookeeper.sh b/tests/queries/0_stateless/00446_clear_column_in_partition_concurrent_zookeeper.sh index 8b414266c2c0..d6aee05966c9 100755 --- a/tests/queries/0_stateless/00446_clear_column_in_partition_concurrent_zookeeper.sh +++ b/tests/queries/0_stateless/00446_clear_column_in_partition_concurrent_zookeeper.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Tags: long, zookeeper, no-replicated-database, no-shared-merge-tree +# Tags: long, zookeeper, no-replicated-database, no-shared-merge-tree, no-parallel # Tag long: concurrent CLEAR COLUMN + INSERT race test exceeds 180s flaky-check # budget under contention; flaky-check enforces TEST_MAX_RUN_TIME_IN_SECONDS # only for tests without the `long` tag (see tests/clickhouse-test). diff --git a/tests/queries/0_stateless/02370_lost_part_intersecting_merges.sh b/tests/queries/0_stateless/02370_lost_part_intersecting_merges.sh index de61f5cc23ec..dff5b5f5eccf 100755 --- a/tests/queries/0_stateless/02370_lost_part_intersecting_merges.sh +++ b/tests/queries/0_stateless/02370_lost_part_intersecting_merges.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Tags: long, zookeeper, no-shared-merge-tree +# Tags: long, zookeeper, no-shared-merge-tree, no-parallel # no-shared-merge-tree: depend on local fs (remove parts) CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) diff --git a/tests/queries/0_stateless/02981_insert_select_resize_to_max_insert_threads.sh b/tests/queries/0_stateless/02981_insert_select_resize_to_max_insert_threads.sh index ba39782b0488..60eee7b557d3 100755 --- a/tests/queries/0_stateless/02981_insert_select_resize_to_max_insert_threads.sh +++ b/tests/queries/0_stateless/02981_insert_select_resize_to_max_insert_threads.sh @@ -35,21 +35,21 @@ ${CLICKHOUSE_CLIENT} -q """ max_insert_threads=8 echo "inserting into a remote table from local with concurrency equal to max_insert_threads" -${CLICKHOUSE_CLIENT} --max_insert_threads "$max_insert_threads" -q """ +${CLICKHOUSE_CLIENT} --max_insert_threads "$max_insert_threads" --max_insert_threads_min_free_memory_per_thread 0 -q """ EXPLAIN PIPELINE INSERT INTO t3_dist SELECT * FROM t1_local; """ | grep -v EmptySink | grep -c Sink echo "inserting into a remote table from remote with concurrency max_insert_threads" -${CLICKHOUSE_CLIENT} --max_insert_threads "$max_insert_threads" --parallel_distributed_insert_select 0 -q """ +${CLICKHOUSE_CLIENT} --max_insert_threads "$max_insert_threads" --max_insert_threads_min_free_memory_per_thread 0 --parallel_distributed_insert_select 0 -q """ EXPLAIN PIPELINE INSERT INTO t3_dist SELECT * FROM t3_dist; """ | grep -v EmptySink | grep -c Sink echo "inserting into a remote table from remote (reading with parallel replicas) with concurrency max_insert_threads" -${CLICKHOUSE_CLIENT} --max_insert_threads "$max_insert_threads" --enable_parallel_replicas 2 --cluster_for_parallel_replicas 'parallel_replicas' --max_parallel_replicas 3 -q """ +${CLICKHOUSE_CLIENT} --max_insert_threads "$max_insert_threads" --max_insert_threads_min_free_memory_per_thread 0 --enable_parallel_replicas 2 --cluster_for_parallel_replicas 'parallel_replicas' --max_parallel_replicas 3 -q """ EXPLAIN PIPELINE INSERT INTO t3_dist SELECT * FROM t4_pr; diff --git a/tests/queries/0_stateless/03800_autopr_reuse_index_analysis.sql b/tests/queries/0_stateless/03800_autopr_reuse_index_analysis.sql index 8b194a314584..a4ef78048734 100644 --- a/tests/queries/0_stateless/03800_autopr_reuse_index_analysis.sql +++ b/tests/queries/0_stateless/03800_autopr_reuse_index_analysis.sql @@ -1,4 +1,4 @@ --- Tags: stateful, long +-- Tags: stateful, long, no-random-settings SET enable_parallel_replicas=1, automatic_parallel_replicas_mode=1, parallel_replicas_local_plan=1, parallel_replicas_index_analysis_only_on_coordinator=1, parallel_replicas_for_non_replicated_merge_tree=1, max_parallel_replicas=3, cluster_for_parallel_replicas='parallel_replicas'; diff --git a/tests/queries/0_stateless/03927_autopr_input_bytes_estimation_prewhere_filter.sql b/tests/queries/0_stateless/03927_autopr_input_bytes_estimation_prewhere_filter.sql index 4b2249eebc08..12159c755a9b 100644 --- a/tests/queries/0_stateless/03927_autopr_input_bytes_estimation_prewhere_filter.sql +++ b/tests/queries/0_stateless/03927_autopr_input_bytes_estimation_prewhere_filter.sql @@ -1,4 +1,4 @@ --- Tags: stateful, long +-- Tags: stateful, long, no-random-settings SET use_uncompressed_cache=0;