Skip to content

add helm hooks to properly upgrade CRDs in Helm chart without manual updates and without separate Helm chart #1022

add helm hooks to properly upgrade CRDs in Helm chart without manual updates and without separate Helm chart

add helm hooks to properly upgrade CRDs in Helm chart without manual updates and without separate Helm chart #1022

Workflow file for this run

name: run_tests
on:
pull_request:
branches:
- '*'
workflow_dispatch:
inputs:
test_mode:
description: 'Test mode'
type: choice
options:
- Run all
- Fail fast
test_mask:
description: 'Wildcard mask to run only some tests. Empty means all.'
type: string
required: false
jobs:
run_tests:
name: Run Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache python
uses: actions/cache@v4
id: cache-python
with:
path: ~/venv/qa
key: python-${{ hashFiles('tests/image/requirements.txt') }}
- name: Install python dependencies
run: |
set -x
python3 -m venv ~/venv/qa
~/venv/qa/bin/pip3 install -U -r ./tests/image/requirements.txt
if: |
steps.cache-python.outputs.cache-hit != 'true'
- name: Setup required Ubuntu packages
run: |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y conntrack clickhouse-client
- uses: medyagh/setup-minikube@master
with:
driver: docker
container-runtime: containerd
kubernetes-version: v1.33.5
cpus: max
memory: max
- name: Build clickhouse-operator locally without push to registry
run: |
minikube status
export CHO_RELEASE=$(cat release)
export GO_VERSION=$(grep '^go ' go.mod | awk '{print $2}')
echo "current release=$CHO_RELEASE"
echo "current go version=$GO_VERSION"
docker build -f dockerfile/operator/Dockerfile --build-arg GO_VERSION=${GO_VERSION} -t altinity/clickhouse-operator:${CHO_RELEASE} --pull .
docker build -f dockerfile/metrics-exporter/Dockerfile --build-arg GO_VERSION=${GO_VERSION} -t altinity/metrics-exporter:${CHO_RELEASE} --pull .
docker image save altinity/clickhouse-operator:${CHO_RELEASE} -o operator.tar
docker image save altinity/metrics-exporter:${CHO_RELEASE} -o metrics-exporter.tar
minikube image load operator.tar
minikube image load metrics-exporter.tar
- name: Deploy prometheus
run: |
cp ./deploy/prometheus/prometheus-sensitive-data.example.sh ./deploy/prometheus/prometheus-sensitive-data.sh
NO_WAIT=1 bash ./deploy/prometheus/create-prometheus.sh
- name: Deploy minio
run: |
NO_WAIT=1 bash ./deploy/minio/create-minio.sh
- name: Deploy zookeeper-operator
run: |
bash ./deploy/zookeeper/zookeeper-with-zookeeper-operator/install-zookeeper-operator.sh
- name: Run Tests
id: run-tests
continue-on-error: true
run: |
echo "Test run settings:"
echo " test mode: ${{ github.event.inputs.test_mode }}"
echo " test mask: ${{ github.event.inputs.test_mask }}"
echo
source ~/venv/qa/bin/activate
set -x
set +e # disable the "exit on failure"
sudo ln -snvf ~/venv/qa/bin/tfs /bin/tfs
if [[ "${{ github.event.inputs.test_mask }}" != '' ]]
then
ONLY="${{ github.event.inputs.test_mask }}"
else
ONLY="*"
fi
if [[ "${{ github.event.inputs.test_mode }}" == 'Run all' ]]
then
test_mode="--test-to-end"
fi
~/venv/qa/bin/python3 ./tests/regression.py --only=/regression/e2e.test_operator/${ONLY} $test_mode --trim-results on -o short --no-colors --native --log ./tests/raw.log
test_result=$?
~/venv/qa/bin/tfs --no-colors transform compact ./tests/raw.log ./tests/compact.log
~/venv/qa/bin/tfs --no-colors transform nice ./tests/raw.log ./tests/nice.log.txt
~/venv/qa/bin/tfs --no-colors transform short ./tests/raw.log ./tests/short.log.txt
~/venv/qa/bin/tfs --no-colors report results -a "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}/" ./tests/raw.log - --confidential --copyright "Altinity Inc." --logo ./tests/altinity.png | ~/venv/qa/bin/tfs --debug --no-colors document convert > ./tests/report.html
echo "test_result=$test_result" >> $GITHUB_OUTPUT
exit "$test_result"
- uses: actions/upload-artifact@v4
with:
name: testflows-logs
path: |
tests/*.log
tests/*.log.txt
if-no-files-found: error
retention-days: 7
- uses: actions/upload-artifact@v4
with:
name: testflows-report
path: |
tests/*.html
if-no-files-found: error
retention-days: 90
- name: Test Failed
if: ${{ steps.run-tests.outputs.test_result != '0' }}
uses: actions/github-script@v3
with:
script: |
core.setFailed('Test suite has failures! Check test run status and logs.')