Prepare next release #3246
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |