Skip to content

Use controller references to clean up DC components #3229

Use controller references to clean up DC components

Use controller references to clean up DC components #3229

Workflow file for this run

# This workflow is for tests that require a single cluster.
name: Run e2e tests
on:
push:
branches:
- main
- 'release/**'
paths-ignore:
- 'docs/**'
- 'CHANGELOG/**'
pull_request:
branches:
- main
- 'release/**'
paths-ignore:
- 'docs/**'
- 'CHANGELOG/**'
workflow_call:
inputs:
kind_node_version:
required: true
type: string
jobs:
set_kind_node_version:
runs-on: ubuntu-latest
outputs:
kind_node_version: ${{ steps.input_or_default.outputs.kind_node_version }}
steps:
- id: input_or_default
name: Set Kind node version from workflow input or default
env:
DEFAULT_KIND_NODE_VERSION: v1.27.1
run: |
if [[ -z "${{ inputs.kind_node_version }}" ]]; then
echo "kind_node_version=${{ env.DEFAULT_KIND_NODE_VERSION }}" >> $GITHUB_OUTPUT
else
echo "kind_node_version=${{ inputs.kind_node_version }}" >> $GITHUB_OUTPUT
fi
build_image:
name: Build Image
runs-on: ubuntu-latest
outputs:
image_tag: ${{ steps.parse_image_tag.outputs.image_tag }}
steps:
- uses: actions/checkout@v4
if: github.event_name == 'pull_request'
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/checkout@v4
if: github.event_name != 'pull_request'
- name: Parse image version
id: parse_image_tag
run: echo "image_tag=$(yq eval '.images[0].newTag' config/deployments/default/kustomization.yaml)" >> $GITHUB_OUTPUT
- name: Set up Docker buildx
uses: docker/setup-buildx-action@v3
- name: Build image
id: docker_build
uses: docker/build-push-action@v5
with:
file: Dockerfile
context: .
push: false
tags: k8ssandra/k8ssandra-operator:latest,k8ssandra/k8ssandra-operator:${{ steps.parse_image_tag.outputs.image_tag }}
platforms: linux/amd64
outputs: type=docker,dest=/tmp/k8ssandra-operator.tar
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
- name: Upload k8ssandra-operator image
uses: actions/upload-artifact@v4
with:
name: k8ssandra-operator
path: /tmp/k8ssandra-operator.tar
kind_e2e_tests:
runs-on: ubuntu-latest
needs: [set_kind_node_version, build_image]
strategy:
matrix:
kind_node_version: ["${{ needs.set_kind_node_version.outputs.kind_node_version }}"]
e2e_test:
- CreateSingleDatacenterCluster
- CreateStargateAndDatacenter
- CreateSingleReaperNoStargate
- CreateSingleReaperWStargateAndHTTP
- CreateReaperAndDatacenter
- CreateSingleMedusaJob
- CreateMultiDcSingleMedusaJob
- CreateSingleDseMedusaJob
- ConfigControllerRestarts
# TODO: these e2e tests started breaking after new client certificates were added. Needs fixing.
#- SingleDcEncryptionWithStargate
- SingleDcEncryptionWithReaper
- GCTests/3.11-jdk8-G1
- GCTests/3.11-jdk8-CMS
- GCTests/4.0-jdk11-G1
- GCTests/4.0-jdk11-CMS
- GCTests/4.0-jdk11-ZGC
- UpgradeOperatorImage
- StargateJwt
- CreateSingleDseDatacenterCluster
- CreateSingleDseSearchDatacenterCluster
- CreateSingleDseGraphDatacenterCluster
- CreateSingleHcdDatacenterCluster
- ChangeDseWorkload
- PerNodeConfig/UserDefined
- RemoveLocalDcFromCluster
- AddDcToClusterSameDataplane
- CreateMedusaConfiguration
fail-fast: false
name: ${{ matrix.e2e_test }}
env:
CGO_ENABLED: 0
KUBECONFIG_FILE: "./build/kind-kubeconfig"
CONTROL_PLANE: kind-k8ssandra-0
DATA_PLANES: kind-k8ssandra-0
steps:
- name: Raise open files limit
run: |
echo fs.file-max=1000000 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
echo fs.inotify.max_user_instances=1280 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
echo fs.inotify.max_user_watches=655360 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
ulimit -a
- name: Free diskspace by removing unused packages
run: |
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/share/dotnet
- uses: actions/checkout@v4
if: github.event_name == 'pull_request'
with:
ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/checkout@v4
if: github.event_name != 'pull_request'
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: 'go.mod'
cache: true
- name: Install kustomize
uses: imranismail/setup-kustomize@v2
with:
kustomize-version: 4.x
- name: Log kustomize version
run: kustomize version
- name: Install Kind
run: go get sigs.k8s.io/kind
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Download k8ssandra-operator image
uses: actions/download-artifact@v4
with:
name: k8ssandra-operator
path: /tmp
- name: Load images
run: |
docker load --input /tmp/k8ssandra-operator.tar
- name: Setup kind cluster ( ${{ matrix.kind_node_version }} )
run: make IMG="k8ssandra/k8ssandra-operator:${{ needs.build_image.outputs.image_tag }}" KIND_NODE_VERSION="${{ matrix.kind_node_version }}" create-kind-cluster kind-load-image cert-manager nginx-kind
- name: Run e2e test ( ${{ matrix.e2e_test }} )
run: |
e2e_test="TestOperator/${{ matrix.e2e_test }}"
args="-kubeconfigFile '${{ env.KUBECONFIG_FILE }}'"
args="$args -controlPlane '${{ env.CONTROL_PLANE }}'"
args="$args -dataPlanes '${{ env.DATA_PLANES }}'"
args="$args -imageTag ${{ needs.build_image.outputs.image_tag }}"
make E2E_TEST="$e2e_test" TEST_ARGS="$args" e2e-test
- name: Get artefact upload directory
if: ${{ failure() }}
run: |
uploaddir_name=$(echo ${{ matrix.e2e_test }}| sed 's/\//__/g')
echo 'setting uploaddir_name to' $uploaddir_name
echo "uploaddir_name=$uploaddir_name" >> $GITHUB_ENV
- name: Archive k8s logs
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: k8s-logs-${{ env.uploaddir_name }}
path: ./build/test