From 2db9ced593be44827eb8e8620ac5866860c56892 Mon Sep 17 00:00:00 2001 From: Derek Nola Date: Fri, 7 Jun 2024 09:20:10 -0700 Subject: [PATCH] Build and Run Arm64 K3s Docker Tests Signed-off-by: Derek Nola --- .github/workflows/build-k3s.yaml | 21 ++++++++++++++--- .github/workflows/e2e.yaml | 36 ++++++++++++++++++++++++++++++ .github/workflows/integration.yaml | 2 +- 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-k3s.yaml b/.github/workflows/build-k3s.yaml index 47ba18e247ee..643342b6b3e4 100644 --- a/.github/workflows/build-k3s.yaml +++ b/.github/workflows/build-k3s.yaml @@ -3,6 +3,10 @@ name: Build K3s on: workflow_call: inputs: + arch: + type: string + description: 'Architecture to build' + default: 'ubuntu-latest' upload-repo: type: boolean required: false @@ -18,11 +22,16 @@ permissions: jobs: build: name: Build - runs-on: ubuntu-latest + runs-on: ${{ inputs.arch }} # defaults to ubuntu-latest, for arm64 use oracle-aarch64-4cpu-16gb timeout-minutes: 20 steps: - name: Checkout K3s uses: actions/checkout@v4 + - name: Setup Arm64 Runner + if: contains(inputs.arch, 'aarch64') + run: | + sudo apt-get update + sudo apt-get install -y make - name: Build K3s binary run: | DOCKER_BUILDKIT=1 SKIP_IMAGE=1 SKIP_AIRGAP=1 SKIP_VALIDATE=1 GOCOVER=1 make @@ -44,9 +53,15 @@ jobs: - name: "Save K3s image" if: inputs.upload-image == true run: docker image save rancher/k3s -o ./dist/artifacts/k3s-image.tar - - name: "Upload K3s binary" - if: inputs.upload-repo == false + - name: "Upload K3s Artifacts" + if: inputs.upload-repo == false && inputs.arch == 'ubuntu-latest' uses: actions/upload-artifact@v4 with: name: k3s + path: dist/artifacts/k3s* + - name: "Upload K3s Arm64 Artifacts" + if: contains(inputs.arch, 'aarch64') + uses: actions/upload-artifact@v4 + with: + name: k3s-arm64 path: dist/artifacts/k3s* \ No newline at end of file diff --git a/.github/workflows/e2e.yaml b/.github/workflows/e2e.yaml index 80f4af12cc8a..3649571931d1 100644 --- a/.github/workflows/e2e.yaml +++ b/.github/workflows/e2e.yaml @@ -30,6 +30,12 @@ jobs: uses: ./.github/workflows/build-k3s.yaml with: upload-image: true + build-arm64: + if : github.repository == 'k3s-io/k3s' + uses: ./.github/workflows/build-k3s.yaml + with: + arch: oracle-aarch64-4cpu-16gb + upload-image: true e2e: name: "E2E Tests" needs: build @@ -119,3 +125,33 @@ jobs: . ./tests/docker/test-helpers . ./tests/docker/test-run-${{ matrix.dtest }} echo "Did test-run-${{ matrix.dtest }} pass $?" + docker-arm64: + needs: build-arm64 + name: Docker Tests Arm64 + if: github.repository == 'k3s-io/k3s' + runs-on: oracle-aarch64-4cpu-16gb + timeout-minutes: 20 + strategy: + fail-fast: false + matrix: + dtest: [basics, bootstraptoken, cacerts, compat, lazypull, upgrade] + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: "Download k3s image" + uses: actions/download-artifact@v4 + with: + name: k3s-arm64 + path: ./dist/artifacts + - name: Load k3s image + run: docker image load -i ./dist/artifacts/k3s-image.tar + - name: Run ${{ matrix.dtest }} Test + run: | + mv ./dist/artifacts/k3s-arm64 ./dist/artifacts/k3s + chmod +x ./dist/artifacts/k3s + . ./scripts/version.sh + . ./tests/docker/test-helpers + . ./tests/docker/test-run-${{ matrix.dtest }} + echo "Did test-run-${{ matrix.dtest }} pass $?" \ No newline at end of file diff --git a/.github/workflows/integration.yaml b/.github/workflows/integration.yaml index 2cde5fc0a9c1..66a8dc1f22d5 100644 --- a/.github/workflows/integration.yaml +++ b/.github/workflows/integration.yaml @@ -58,7 +58,7 @@ jobs: mkdir -p $GOCOVERDIR sudo -E env "PATH=$PATH" go test -v -timeout=45m ./tests/integration/${{ matrix.itest }}/... -run Integration - name: On Failure, Launch Debug Session - uses: lhotari/action-upterm@v1 + uses: dereknola/action-upterm@v1.1 if: ${{ failure() }} with: ## If no one connects after 5 minutes, shut down server.