NightlyKeeperFaults #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # generated by praktika | |
| name: NightlyKeeperFaults | |
| on: | |
| schedule: | |
| - cron: 17 1 * * 1,3,5 | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }} | |
| env: | |
| PYTHONUNBUFFERED: 1 | |
| GH_TOKEN: ${{ github.token }} | |
| CHECKOUT_REF: "" | |
| DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | |
| CLICKHOUSE_TEST_STAT_URL: ${{ secrets.CLICKHOUSE_TEST_STAT_URL }} | |
| CLICKHOUSE_TEST_STAT_LOGIN: ${{ secrets.CLICKHOUSE_TEST_STAT_LOGIN }} | |
| CLICKHOUSE_TEST_STAT_PASSWORD: ${{ secrets.CLICKHOUSE_TEST_STAT_PASSWORD }} | |
| AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| GPG_BINARY_SIGNING_KEY: ${{ secrets.GPG_BINARY_SIGNING_KEY }} | |
| GPG_BINARY_SIGNING_PASSPHRASE: ${{ secrets.GPG_BINARY_SIGNING_PASSPHRASE }} | |
| AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} | |
| CHECKS_DATABASE_HOST: ${{ secrets.CHECKS_DATABASE_HOST }} | |
| AZURE_STORAGE_KEY: ${{ secrets.AZURE_STORAGE_KEY }} | |
| AZURE_ACCOUNT_NAME: ${{ secrets.AZURE_ACCOUNT_NAME }} | |
| AZURE_CONTAINER_NAME: ${{ secrets.AZURE_CONTAINER_NAME }} | |
| AZURE_STORAGE_ACCOUNT_URL: "https://${{ secrets.AZURE_ACCOUNT_NAME }}.blob.core.windows.net/" | |
| ROBOT_TOKEN: ${{ secrets.ROBOT_TOKEN }} | |
| jobs: | |
| config_workflow: | |
| runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] | |
| needs: [] | |
| name: "Config Workflow" | |
| outputs: | |
| data: ${{ steps.run.outputs.DATA }} | |
| pipeline_status: ${{ steps.run.outputs.pipeline_status || 'undefined' }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ env.CHECKOUT_REF }} | |
| - name: Setup | |
| uses: ./.github/actions/runner_setup | |
| - name: Docker setup | |
| uses: ./.github/actions/docker_setup | |
| with: | |
| test_name: "Config Workflow" | |
| - name: Note report location to summary | |
| if: ${{ !failure() && env.AWS_ACCESS_KEY_ID && env.AWS_SECRET_ACCESS_KEY }} | |
| env: | |
| PR_NUMBER: ${{ github.event.pull_request.number || 0 }} | |
| COMMIT_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} | |
| run: | | |
| if [ "$PR_NUMBER" -eq 0 ]; then | |
| PREFIX="REFs/$GITHUB_REF_NAME/$COMMIT_SHA" | |
| else | |
| PREFIX="PRs/$PR_NUMBER/$COMMIT_SHA" | |
| fi | |
| REPORT_LINK=https://s3.amazonaws.com/altinity-build-artifacts/$PREFIX/$GITHUB_RUN_ID/ci_run_report.html | |
| echo "Workflow Run Report: [View Report]($REPORT_LINK)" >> $GITHUB_STEP_SUMMARY | |
| - name: Prepare env script | |
| run: | | |
| rm -rf ./ci/tmp | |
| mkdir -p ./ci/tmp | |
| cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' | |
| export PYTHONPATH=./ci:.: | |
| cat > ./ci/tmp/workflow_job.json << 'EOF' | |
| ${{ toJson(job) }} | |
| EOF | |
| cat > ./ci/tmp/workflow_status.json << 'EOF' | |
| ${{ toJson(needs) }} | |
| EOF | |
| ENV_SETUP_SCRIPT_EOF | |
| - name: Run | |
| id: run | |
| run: | | |
| . ./ci/tmp/praktika_setup_env.sh | |
| PYTHONUNBUFFERED=1 python3 -m praktika run 'Config Workflow' --workflow "NightlyKeeperFaults" --ci --timestamp | |
| dockers_build_amd: | |
| runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] | |
| 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, 'RG9ja2VycyBCdWlsZCAoYW1kKQ==') }} | |
| name: "Dockers Build (amd)" | |
| outputs: | |
| data: ${{ steps.run.outputs.DATA }} | |
| pipeline_status: ${{ steps.run.outputs.pipeline_status || 'undefined' }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ env.CHECKOUT_REF }} | |
| - name: Setup | |
| uses: ./.github/actions/runner_setup | |
| - name: Docker setup | |
| uses: ./.github/actions/docker_setup | |
| with: | |
| test_name: "Dockers Build (amd)" | |
| - name: Prepare env script | |
| run: | | |
| rm -rf ./ci/tmp | |
| mkdir -p ./ci/tmp | |
| cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' | |
| export PYTHONPATH=./ci:.: | |
| cat > ./ci/tmp/workflow_job.json << 'EOF' | |
| ${{ toJson(job) }} | |
| EOF | |
| cat > ./ci/tmp/workflow_status.json << 'EOF' | |
| ${{ toJson(needs) }} | |
| EOF | |
| ENV_SETUP_SCRIPT_EOF | |
| - name: Run | |
| id: run | |
| run: | | |
| . ./ci/tmp/praktika_setup_env.sh | |
| PYTHONUNBUFFERED=1 python3 -m praktika run 'Dockers Build (amd)' --workflow "NightlyKeeperFaults" --ci --timestamp | |
| dockers_build_arm: | |
| runs-on: [self-hosted, altinity-on-demand, altinity-style-checker-aarch64] | |
| 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, 'RG9ja2VycyBCdWlsZCAoYXJtKQ==') }} | |
| name: "Dockers Build (arm)" | |
| outputs: | |
| data: ${{ steps.run.outputs.DATA }} | |
| pipeline_status: ${{ steps.run.outputs.pipeline_status || 'undefined' }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ env.CHECKOUT_REF }} | |
| - name: Setup | |
| uses: ./.github/actions/runner_setup | |
| - name: Docker setup | |
| uses: ./.github/actions/docker_setup | |
| with: | |
| test_name: "Dockers Build (arm)" | |
| - name: Prepare env script | |
| run: | | |
| rm -rf ./ci/tmp | |
| mkdir -p ./ci/tmp | |
| cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' | |
| export PYTHONPATH=./ci:.: | |
| cat > ./ci/tmp/workflow_job.json << 'EOF' | |
| ${{ toJson(job) }} | |
| EOF | |
| cat > ./ci/tmp/workflow_status.json << 'EOF' | |
| ${{ toJson(needs) }} | |
| EOF | |
| ENV_SETUP_SCRIPT_EOF | |
| - name: Run | |
| id: run | |
| run: | | |
| . ./ci/tmp/praktika_setup_env.sh | |
| PYTHONUNBUFFERED=1 python3 -m praktika run 'Dockers Build (arm)' --workflow "NightlyKeeperFaults" --ci --timestamp | |
| build_arm_binary: | |
| runs-on: [self-hosted, altinity-on-demand, altinity-builder] | |
| needs: [config_workflow, dockers_build_amd, dockers_build_arm] | |
| 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)" | |
| outputs: | |
| data: ${{ steps.run.outputs.DATA }} | |
| pipeline_status: ${{ steps.run.outputs.pipeline_status || 'undefined' }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ env.CHECKOUT_REF }} | |
| - name: Setup | |
| uses: ./.github/actions/runner_setup | |
| - name: Docker setup | |
| uses: ./.github/actions/docker_setup | |
| with: | |
| test_name: "Build (arm_binary)" | |
| - name: Prepare env script | |
| run: | | |
| rm -rf ./ci/tmp | |
| mkdir -p ./ci/tmp | |
| cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' | |
| export PYTHONPATH=./ci:.: | |
| cat > ./ci/tmp/workflow_job.json << 'EOF' | |
| ${{ toJson(job) }} | |
| EOF | |
| cat > ./ci/tmp/workflow_status.json << 'EOF' | |
| ${{ toJson(needs) }} | |
| EOF | |
| ENV_SETUP_SCRIPT_EOF | |
| - name: Run | |
| id: run | |
| run: | | |
| . ./ci/tmp/praktika_setup_env.sh | |
| PYTHONUNBUFFERED=1 python3 -m praktika run 'Build (arm_binary)' --workflow "NightlyKeeperFaults" --ci --timestamp | |
| - name: Upload artifact CH_ARM_BIN_GH | |
| id: upload_CH_ARM_BIN_GH | |
| uses: actions/upload-artifact@v7 | |
| continue-on-error: true | |
| with: | |
| name: CH_ARM_BIN_GH | |
| path: ci/tmp/build/programs/self-extracting/clickhouse | |
| retention-days: 1 | |
| - name: Warn on failed upload of CH_ARM_BIN_GH | |
| if: steps.upload_CH_ARM_BIN_GH.outcome == 'failure' | |
| run: echo "::warning title=GH artifact upload failed::Failed to upload [CH_ARM_BIN_GH] to GitHub artifacts (e.g. quota/rate limit). Downstream consumers will fall back to S3." | |
| keeper_stress_faults: | |
| runs-on: [self-hosted, altinity-on-demand, altinity-func-tester-aarch64] | |
| needs: [build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm] | |
| 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, 'S2VlcGVyIFN0cmVzcyAoRmF1bHRzKQ==') }} | |
| name: "Keeper Stress (Faults)" | |
| timeout-minutes: 1445 | |
| outputs: | |
| data: ${{ steps.run.outputs.DATA }} | |
| pipeline_status: ${{ steps.run.outputs.pipeline_status || 'undefined' }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ env.CHECKOUT_REF }} | |
| - name: Setup | |
| uses: ./.github/actions/runner_setup | |
| - name: Docker setup | |
| uses: ./.github/actions/docker_setup | |
| with: | |
| test_name: "Keeper Stress (Faults)" | |
| - name: Prepare env script | |
| run: | | |
| rm -rf ./ci/tmp | |
| mkdir -p ./ci/tmp | |
| cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' | |
| export PYTHONPATH=./ci:.: | |
| cat > ./ci/tmp/workflow_job.json << 'EOF' | |
| ${{ toJson(job) }} | |
| EOF | |
| cat > ./ci/tmp/workflow_status.json << 'EOF' | |
| ${{ toJson(needs) }} | |
| EOF | |
| ENV_SETUP_SCRIPT_EOF | |
| - name: Download artifact CH_ARM_BIN_GH | |
| uses: actions/download-artifact@v8 | |
| continue-on-error: true | |
| with: | |
| name: CH_ARM_BIN_GH | |
| path: ./ci/tmp | |
| - name: Run | |
| id: run | |
| run: | | |
| . ./ci/tmp/praktika_setup_env.sh | |
| PYTHONUNBUFFERED=1 python3 -m praktika run 'Keeper Stress (Faults)' --workflow "NightlyKeeperFaults" --ci --timestamp | |
| finish_workflow: | |
| runs-on: [self-hosted, altinity-on-demand, altinity-style-checker] | |
| needs: [build_arm_binary, config_workflow, dockers_build_amd, dockers_build_arm, keeper_stress_faults] | |
| if: ${{ always() && needs.config_workflow.outputs.pipeline_status != '' }} | |
| name: "Finish Workflow" | |
| outputs: | |
| data: ${{ steps.run.outputs.DATA }} | |
| pipeline_status: ${{ steps.run.outputs.pipeline_status || 'undefined' }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| ref: ${{ env.CHECKOUT_REF }} | |
| - name: Setup | |
| uses: ./.github/actions/runner_setup | |
| - name: Docker setup | |
| uses: ./.github/actions/docker_setup | |
| with: | |
| test_name: "Finish Workflow" | |
| - name: Prepare env script | |
| run: | | |
| rm -rf ./ci/tmp | |
| mkdir -p ./ci/tmp | |
| cat > ./ci/tmp/praktika_setup_env.sh << 'ENV_SETUP_SCRIPT_EOF' | |
| export PYTHONPATH=./ci:.: | |
| cat > ./ci/tmp/workflow_job.json << 'EOF' | |
| ${{ toJson(job) }} | |
| EOF | |
| cat > ./ci/tmp/workflow_status.json << 'EOF' | |
| ${{ toJson(needs) }} | |
| EOF | |
| ENV_SETUP_SCRIPT_EOF | |
| - name: Run | |
| id: run | |
| run: | | |
| . ./ci/tmp/praktika_setup_env.sh | |
| PYTHONUNBUFFERED=1 python3 -m praktika run 'Finish Workflow' --workflow "NightlyKeeperFaults" --ci --timestamp |