name: e2e-arm64 on: workflow_dispatch: push: branches: [ 'main', 'update-components', 'e2e-*', 'release/**' ] permissions: contents: read jobs: e2e-arm64-kubernetes: # Hosted on Equinix # Docs: https://github.com/fluxcd/flux2/tree/main/.github/runners runs-on: [self-hosted, Linux, ARM64, equinix] strategy: matrix: # Keep this list up-to-date with https://endoflife.date/kubernetes # Build images with https://github.com/fluxcd/flux-benchmark/actions/workflows/build-kind.yaml KUBERNETES_VERSION: [ 1.28.9, 1.29.4, 1.30.0 ] fail-fast: false steps: - name: Checkout uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Setup Go uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1 with: go-version: 1.22.x cache-dependency-path: | **/go.sum **/go.mod - name: Prepare id: prep run: | ID=${GITHUB_SHA:0:7}-${{ matrix.KUBERNETES_VERSION }}-$(date +%s) echo "CLUSTER=arm64-${ID}" >> $GITHUB_OUTPUT - name: Build run: | make build - name: Setup Kubernetes Kind run: | kind create cluster \ --wait 5m \ --name ${{ steps.prep.outputs.CLUSTER }} \ --kubeconfig=/tmp/${{ steps.prep.outputs.CLUSTER }} \ --image=ghcr.io/fluxcd/kindest/node:v${{ matrix.KUBERNETES_VERSION }}-arm64 - name: Run e2e tests run: TEST_KUBECONFIG=/tmp/${{ steps.prep.outputs.CLUSTER }} make e2e - name: Run multi-tenancy tests env: KUBECONFIG: /tmp/${{ steps.prep.outputs.CLUSTER }} run: | ./bin/flux install ./bin/flux create source git flux-system \ --interval=15m \ --url=https://github.com/fluxcd/flux2-multi-tenancy \ --branch=main \ --ignore-paths="./clusters/**/flux-system/" ./bin/flux create kustomization flux-system \ --interval=15m \ --source=flux-system \ --path=./clusters/staging kubectl -n flux-system wait kustomization/tenants --for=condition=ready --timeout=5m kubectl -n apps wait kustomization/dev-team --for=condition=ready --timeout=1m kubectl -n apps wait helmrelease/podinfo --for=condition=ready --timeout=1m - name: Debug failure if: failure() env: KUBECONFIG: /tmp/${{ steps.prep.outputs.CLUSTER }} run: | kubectl -n flux-system get all kubectl -n flux-system describe po kubectl -n flux-system logs deploy/source-controller kubectl -n flux-system logs deploy/kustomize-controller - name: Cleanup if: always() run: | kind delete cluster --name ${{ steps.prep.outputs.CLUSTER }} rm /tmp/${{ steps.prep.outputs.CLUSTER }}