Skip to content

24.3 | Stress one by one | Provider minio | Arch all #31

24.3 | Stress one by one | Provider minio | Arch all

24.3 | Stress one by one | Provider minio | Arch all #31

name: Run CI/CD alter stress tests
run-name: ${{ inputs.custom_run_name || format('{0} | Stress {1} | Provider {2} | Arch {3}', inputs.version, inputs.scenario, inputs.storage_provider, inputs.architecture) }}
on:
workflow_dispatch:
inputs:
package:
description: "Package either 'docker://' or 'https://'. Example: 'https://s3.amazonaws.com/clickhouse-builds/23.3/.../package_release/clickhouse-common-static_23.3.1.64_amd64.deb', or 'docker://altinity/clickhouse-server:23.8.8'"
required: true
type: string
default: docker://altinity/clickhouse-server:23.8.8.21.altinitystable
version:
description: "Expected version. Example: 23.3.1.64"
required: true
type: string
scenario:
description: "Stress scenario to run (default: safe)"
type: choice
options:
- safe
- parts
- columns and indexes unsafe
- add remove replicas
- restarts
- full disk
- network faults
- one by one
- pairs/columns and part manipulation
- pairs/columns and ttl
- pairs/columns and projections
- pairs/columns and indexes
- pairs/columns and restarts
- pairs/columns and add remove replicas
- pairs/part manipulation and ttl
- pairs/part manipulation and projections
- pairs/part manipulation and indexes
- pairs/part manipulation and restarts
- pairs/part manipulation and network restarts
- pairs/ttl and projections
- pairs/ttl and indexes
- pairs/ttl and restarts
- pairs/ttl and network restarts
- pairs/ttl and add remove replicas
- pairs/projections and indexes
- pairs/projections and restarts
- pairs/projections and network restarts
- pairs/projections and add remove replicas
- pairs/indexes and restarts
- pairs/indexes and network restarts
- pairs/indexes and add remove replicas
- pairs/restarts and network restarts
- pairs/restarts and add remove replicas
- pairs/network restarts and add remove replicas
storage_provider:
description: "Storage Provider to use (default: minio)"
type: choice
options:
- minio
- local
- aws_s3
- gcs
- all
architecture:
description: "Runner architecture to use (default: x86)"
type: choice
options:
- x86
- ARM
- all
artifacts:
description: "Artifact S3 bucket"
type: choice
options:
- public
- internal
output_format:
description: "Testflows output style."
type: choice
options:
- new-fails
- classic
- nice
- fails
- slick
- brisk
- quiet
- short
- manual
- dots
- progress
- raw
ref:
description: "Commit SHA to checkout. Default: current (empty string)."
type: string
default: ""
extra_args:
description: "Extra test program arguments. Default: none (empty string)."
type: string
default: ""
custom_run_name:
description: 'Custom run name (optional)'
required: false
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_REPORT_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_REPORT_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_REPORT_REGION }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
PYTHONIOENCODING: utf-8
clickhouse_binary_path: ${{ inputs.package }}
version: ${{ inputs.version }}
artifacts: ${{ inputs.artifacts }}
args: --test-to-end
--no-colors
--local
--collect-service-logs
--output ${{ inputs.output_format }}
--parallel ${{ vars.PARALLEL }}
--attr project="${GITHUB_REPOSITORY}" project.id="${GITHUB_REPOSITORY_ID}" user.name="${GITHUB_ACTOR}" version="${{ inputs.version }}" package="${{ inputs.package }}" repository="https://github.com/Altinity/clickhouse-regression" commit.hash="${GITHUB_SHA}" job.id="${GITHUB_RUN_ID}" job.url="${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}" arch="$(uname -i)"
--log raw.log ${{ inputs.extra_args }}
--stress
--only ":/combinations/:/${{ inputs.scenario }}*"
artifact_paths: |
./report.html
./*.log.txt
./*.log
./*.html
./*/_instances/*.log
./*/_instances/*/logs/*.log
./*/*/_instances/*/logs/*.log
./*/*/_instances/*.log
jobs:
alter_stress_aws_x86:
runs-on: [self-hosted, type-cpx51, image-x86-app-docker-ce]
timeout-minutes: 10000
env:
SUITE: alter/stress
STORAGE: /aws_x86
if: ${{ contains('all aws_s3', inputs.storage_provider) && contains('all x86', inputs.architecture) }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
- name: Setup
run: .github/setup.sh
- name: Run ${{ env.SUITE }} suite
run: python3
-u ${{ env.SUITE }}/regression.py
--storage aws_s3
--aws-s3-bucket ${{ secrets.AWS_BUCKET }}
--aws-s3-region ${{ secrets.AWS_REGION }}
--aws-s3-key-id ${{ secrets.AWS_KEY_ID }}
--aws-s3-access-key ${{ secrets.AWS_ACCESS_KEY }}
--clickhouse-binary-path ${{ env.clickhouse_binary_path }}
--clickhouse-version ${{ env.version }}
${{ env.args }}
- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh ${{ vars.UPLOAD_LOGS }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: alter-stress-aws-x86-artifacts
path: ${{ env.artifact_paths}}
alter_stress_gcs_x86:
runs-on: [self-hosted, type-cpx51, image-x86-app-docker-ce]
timeout-minutes: 10000
env:
SUITE: alter/stress
STORAGE: /gcs_x86
if: ${{ contains('all gcs', inputs.storage_provider) && contains('all x86', inputs.architecture) }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
- name: Setup
run: .github/setup.sh
- name: Run ${{ env.SUITE }} suite
run: python3
-u ${{ env.SUITE }}/regression.py
--storage gcs
--gcs-uri ${{ secrets.GCS_URI }}
--gcs-key-id ${{ secrets.GCS_KEY_ID }}
--gcs-key-secret ${{ secrets.GCS_KEY_SECRET }}
--clickhouse-binary-path ${{ env.clickhouse_binary_path }}
--clickhouse-version ${{ env.version }}
${{ env.args }}
- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh ${{ vars.UPLOAD_LOGS }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: alter-stress-gcs-x86-artifacts
path: ${{ env.artifact_paths}}
alter_stress_minio_x86:
runs-on: [self-hosted, type-cpx51, image-x86-app-docker-ce]
timeout-minutes: 10000
env:
SUITE: alter/stress
STORAGE: /minio_x86
if: ${{ contains('all minio', inputs.storage_provider) && contains('all x86', inputs.architecture) }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
- name: Setup
run: .github/setup.sh
- name: Run ${{ env.SUITE }} suite
run: python3
-u ${{ env.SUITE }}/regression.py
--storage minio
--clickhouse-binary-path ${{ env.clickhouse_binary_path }}
--clickhouse-version ${{ env.version }}
${{ env.args }}
- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh ${{ vars.UPLOAD_LOGS }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: alter-stress-minio-x86-artifacts
path: ${{ env.artifact_paths}}
alter_stress_local_x86:
runs-on: [self-hosted, type-cpx51, image-x86-app-docker-ce]
timeout-minutes: 10000
env:
SUITE: alter/stress
STORAGE: /local_x86
if: ${{ contains('all local', inputs.storage_provider) && contains('all x86', inputs.architecture) }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
- name: Setup
run: .github/setup.sh
- name: Run ${{ env.SUITE }} suite
run: python3
-u ${{ env.SUITE }}/regression.py
--storage local
--clickhouse-binary-path ${{ env.clickhouse_binary_path }}
--clickhouse-version ${{ env.version }}
${{ env.args }}
- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh ${{ vars.UPLOAD_LOGS }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: alter-stress-local-x86-artifacts
path: ${{ env.artifact_paths}}
alter_stress_aws_arm:
runs-on: [self-hosted, type-cax41, image-arm-app-docker-ce]
timeout-minutes: 10000
env:
SUITE: alter/stress
STORAGE: /aws_arm
if: ${{ contains('all aws_s3', inputs.storage_provider) && contains('all ARM', inputs.architecture) }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
- name: Setup
run: .github/setup.sh
- name: Run ${{ env.SUITE }} suite
run: python3
-u ${{ env.SUITE }}/regression.py
--storage aws_s3
--aws-s3-bucket ${{ secrets.AWS_BUCKET }}
--aws-s3-region ${{ secrets.AWS_REGION }}
--aws-s3-key-id ${{ secrets.AWS_KEY_ID }}
--aws-s3-access-key ${{ secrets.AWS_ACCESS_KEY }}
--clickhouse-binary-path ${{ env.clickhouse_binary_path }}
--clickhouse-version ${{ env.version }}
${{ env.args }}
- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh ${{ vars.UPLOAD_LOGS }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: alter-stress-aws-arm-artifacts
path: ${{ env.artifact_paths}}
alter_stress_gcs_arm:
runs-on: [self-hosted, type-cax41, image-arm-app-docker-ce]
timeout-minutes: 10000
env:
SUITE: alter/stress
STORAGE: /gcs_arm
if: ${{ contains('all gcs', inputs.storage_provider) && contains('all ARM', inputs.architecture) }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
- name: Setup
run: .github/setup.sh
- name: Run ${{ env.SUITE }} suite
run: python3
-u ${{ env.SUITE }}/regression.py
--storage gcs
--gcs-uri ${{ secrets.GCS_URI }}
--gcs-key-id ${{ secrets.GCS_KEY_ID }}
--gcs-key-secret ${{ secrets.GCS_KEY_SECRET }}
--clickhouse-binary-path ${{ env.clickhouse_binary_path }}
--clickhouse-version ${{ env.version }}
${{ env.args }}
- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh ${{ vars.UPLOAD_LOGS }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: alter-stress-gcs-arm-artifacts
path: ${{ env.artifact_paths}}
alter_stress_minio_arm:
runs-on: [self-hosted, type-cax41, image-arm-app-docker-ce]
timeout-minutes: 10000
env:
SUITE: alter/stress
STORAGE: /minio_arm
if: ${{ contains('all minio', inputs.storage_provider) && contains('all ARM', inputs.architecture) }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
- name: Setup
run: .github/setup.sh
- name: Run ${{ env.SUITE }} suite
run: python3
-u ${{ env.SUITE }}/regression.py
--storage minio
--clickhouse-binary-path ${{ env.clickhouse_binary_path }}
--clickhouse-version ${{ env.version }}
${{ env.args }}
- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh ${{ vars.UPLOAD_LOGS }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: alter-stress-minio-arm-artifacts
path: ${{ env.artifact_paths}}
alter_stress_local_arm:
runs-on: [self-hosted, type-cax41, image-arm-app-docker-ce]
timeout-minutes: 10000
env:
SUITE: alter/stress
STORAGE: /local_arm
if: ${{ contains('all local', inputs.storage_provider) && contains('all ARM', inputs.architecture) }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
- name: Setup
run: .github/setup.sh
- name: Run ${{ env.SUITE }} suite
run: python3
-u ${{ env.SUITE }}/regression.py
--storage local
--clickhouse-binary-path ${{ env.clickhouse_binary_path }}
--clickhouse-version ${{ env.version }}
${{ env.args }}
- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh ${{ vars.UPLOAD_LOGS }}
- uses: actions/upload-artifact@v3
if: always()
with:
name: alter-stress-local-arm-artifacts
path: ${{ env.artifact_paths}}