Skip to content

NightlyKeeperFaults

NightlyKeeperFaults #1

# 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