Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{%- if is_preview %}
<meta http-equiv="Cache-Control" content="max-age=300">
{%- endif %}
<style>
/* Base colors for Altinity */
:root {
Expand Down Expand Up @@ -152,7 +155,7 @@
</tr>
<tr>
<th class="hth no-sort">Build Report</th>
<td><a href="https://s3.amazonaws.com/{{ s3_bucket }}/{{ pr_number }}/{{ commit_sha }}/builds/report.html">Build Report</a></td>
<td>{% for job_name, link in build_report_links.items() %}<a href="{{ link }}">[{{ job_name }}]</a> {% endfor %}</td>
</tr>
<tr>
<th class="hth no-sort">Date</th>
Expand Down Expand Up @@ -223,6 +226,8 @@
element.className = element.className.replace(regex_dir, '') + dir
}
function getValue(element) {
var childWithSort = element.querySelector('[data-sort]')
if (childWithSort) return childWithSort.getAttribute('data-sort')
return (
(alt_sort && element.getAttribute('data-sort-alt')) ||
element.getAttribute('data-sort') || element.innerText
Expand Down
183 changes: 183 additions & 0 deletions .github/workflows/regression-reusable-suite.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
name: Regression suite
on:
workflow_call:
inputs:
ref:
description: "Commit SHA to checkout. Default: current (empty string)."
type: string
default: ""
arch:
required: true
type: string
extra_args:
required: false
type: string
suite_name:
required: true
type: string
suite_executable:
required: false
type: string
default: "regression.py"
timeout_minutes:
required: true
type: number
storage_path:
required: false
type: string
default: ""
regression_args:
required: false
type: string
default: ""
runner_type:
required: false
type: string
default: ""
job_name:
required: false
type: string
default: ""
part:
required: false
type: string
default: ""
build_sha:
required: false
type: string
default: ""
jobs:
suite:
name: ${{ format('{0}{1}', inputs.job_name != '' && inputs.job_name || inputs.suite_name, inputs.part != '' && format('_{0}', inputs.part) || '') }}
runs-on: [
"self-hosted",
"altinity-on-demand",
"${{ inputs.runner_type }}",
]
timeout-minutes: ${{ inputs.timeout_minutes }}
env:
SUITE: ${{ inputs.suite_name }}
SUITE_EXECUTABLE: ${{ inputs.suite_executable }}
STORAGE: ${{ inputs.storage_path }}
PART: ${{ inputs.part }}
REPORT_JOB_NAME: ${{ format('{0}{1}', inputs.job_name != '' && inputs.job_name || inputs.suite_name, inputs.part != '' && format('_{0}', inputs.part) || '') }}
# AWS credentials
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
# Docker credentials
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
# Database credentials
CHECKS_DATABASE_HOST: ${{ secrets.CHECKS_DATABASE_HOST }}
CHECKS_DATABASE_USER: ${{ secrets.CLICKHOUSE_TEST_STAT_LOGIN }}
CHECKS_DATABASE_PASSWORD: ${{ secrets.CLICKHOUSE_TEST_STAT_PASSWORD }}
# LocalStack token
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_AUTH_TOKEN }}
# Python
PYTHONUNBUFFERED: 1
PYTHONIOENCODING: utf-8
build_sha: ${{ inputs.build_sha }}
pr_number: ${{ github.event.number }}
event_name: ${{ github.event_name }}
artifacts: builds
args: --test-to-end
--no-colors
--local
--collect-service-logs
--output classic
--parallel 1
--log raw.log
--with-analyzer
artifact_paths: |
./report.html
./*.log.txt
./*.log
./*.html
./*/_instances/*.log
./*/_instances/*/logs/*.log
./*/*/_instances/*/logs/*.log
./*/*/_instances/*.log

steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: Altinity/clickhouse-regression
ref: ${{ inputs.ref }}

- name: Set envs
run: |
cat >> "$GITHUB_ENV" << 'EOF'
REPORTS_PATH=${{ runner.temp }}/reports_dir
EOF

- name: Download json reports
uses: actions/download-artifact@v4
with:
path: ${{ env.REPORTS_PATH }}
name: build_report_package_${{ inputs.arch }}

- name: Rename reports
run: |
mv ${{ env.REPORTS_PATH }}/build_report_*.json ${{ env.REPORTS_PATH }}/build_report_package_${{ inputs.arch }}.json

- name: Setup
run: .github/setup.sh

- name: Get deb url
run: python3 .github/get-deb-url.py --reports-path ${{ env.REPORTS_PATH }} --github-env $GITHUB_ENV

- name: Process regression args
run: |
REGRESSION_ARGS='${{ inputs.regression_args }}'
# AWS replacements
REGRESSION_ARGS="${REGRESSION_ARGS//'{{AWS_BUCKET}}'/${{ secrets.REGRESSION_AWS_S3_BUCKET }}}"
REGRESSION_ARGS="${REGRESSION_ARGS//'{{AWS_REGION}}'/${{ secrets.REGRESSION_AWS_S3_REGION }}}"
REGRESSION_ARGS="${REGRESSION_ARGS//'{{AWS_KEY_ID}}'/${{ secrets.REGRESSION_AWS_S3_KEY_ID }}}"
REGRESSION_ARGS="${REGRESSION_ARGS//'{{AWS_ACCESS_KEY}}'/${{ secrets.REGRESSION_AWS_S3_SECRET_ACCESS_KEY }}}"
# GCS replacements
REGRESSION_ARGS="${REGRESSION_ARGS//'{{GCS_URI}}'/${{ secrets.REGRESSION_GCS_URI }}}"
REGRESSION_ARGS="${REGRESSION_ARGS//'{{GCS_KEY_ID}}'/${{ secrets.REGRESSION_GCS_KEY_ID }}}"
REGRESSION_ARGS="${REGRESSION_ARGS//'{{GCS_KEY_SECRET}}'/${{ secrets.REGRESSION_GCS_KEY_SECRET }}}"
# Azure replacements
REGRESSION_ARGS="${REGRESSION_ARGS//'{{AZURE_ACCOUNT_NAME}}'/${{ secrets.AZURE_ACCOUNT_NAME }}}"
REGRESSION_ARGS="${REGRESSION_ARGS//'{{AZURE_STORAGE_KEY}}'/${{ secrets.AZURE_STORAGE_KEY }}}"
REGRESSION_ARGS="${REGRESSION_ARGS//'{{AZURE_CONTAINER_NAME}}'/${{ secrets.AZURE_CONTAINER_NAME }}}"
echo "REGRESSION_ARGS=$REGRESSION_ARGS" >> $GITHUB_ENV

- name: Run ${{ env.SUITE }} suite
id: run_suite
run: EXITCODE=0;
python3
-u ${{ env.SUITE }}/${{ env.SUITE_EXECUTABLE }}
--clickhouse-binary-path ${{ env.clickhouse_path }}
${{ env.REGRESSION_ARGS }}
${{ inputs.extra_args }}
--attr project="$GITHUB_REPOSITORY" project.id="$GITHUB_REPOSITORY_ID" package="${{ env.clickhouse_path }}" version="${{ env.version }}" user.name="$GITHUB_ACTOR" 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)"
${{ env.args }} || EXITCODE=$?;
.github/add_link_to_logs.sh;
exit $EXITCODE

- name: Set Commit Status
if: always()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JOB_OUTCOME: ${{ steps.run_suite.outcome }}
SUITE_NAME: ${{ format('Regression {0} {1}{2}', inputs.arch, inputs.job_name != '' && inputs.job_name || inputs.suite_name, inputs.part != '' && format('_{0}', inputs.part) || '') }}
run: python3 .github/set_builds_status.py

- name: Create and upload logs
if: always()
run: .github/create_and_upload_logs.sh 1

- name: Upload logs to results database
if: always()
timeout-minutes: 30
run: .github/upload_results_to_database.sh 1

- uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ format('{0}{1}-{2}-artifacts', inputs.job_name != '' && inputs.job_name || inputs.suite_name, inputs.part != '' && format('_{0}', inputs.part) || '', inputs.arch) }}
path: ${{ env.artifact_paths }}
Loading
Loading