Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions .github/workflows/build-k3s.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
inputs:
arch:
type: string
description: 'Architecture to build (amd64, arm64, or arm)'
description: 'Architecture to build (amd64, arm64, arm, or riscv64)'
default: 'amd64'
os:
type: string
Expand All @@ -26,8 +26,8 @@ permissions:
jobs:
build:
name: Build # DO NOT CHANGE THIS NAME, we rely on it for INSTALL_K3S_PR functionality
runs-on: ${{ contains(inputs.arch, 'arm') && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
timeout-minutes: 20
runs-on: ${{ (contains(inputs.arch, 'riscv') && 'ubuntu-24.04-riscv') || (contains(inputs.arch, 'arm') && 'ubuntu-24.04-arm') || 'ubuntu-24.04' }}
timeout-minutes: ${{ (contains(inputs.arch, 'riscv') && 180) || 20 }}
env:
BIN_EXT: ${{ inputs.os == 'windows' && '.exe' || '' }}
ARCH_EXT: ${{ inputs.os == 'windows' && '-windows' || format('-{0}', inputs.arch) }}
Expand All @@ -43,6 +43,7 @@ jobs:
cache-image: false

- name: Set up Docker
if: inputs.arch != 'riscv64'
uses: docker/setup-docker-action@1a6edb0ba9ac496f6850236981f15d8f9a82254d # v5
with:
version: type=image,tag=28
Expand All @@ -64,7 +65,7 @@ jobs:
} >> "$GITHUB_OUTPUT"

- name: Build K3s Binary Native
if: inputs.arch == 'arm64' || inputs.arch == 'amd64'
if: inputs.arch == 'arm64' || inputs.arch == 'amd64' || inputs.arch == 'riscv64'
env:
DOCKER_BUILD_SUMMARY: false
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7
Expand All @@ -85,7 +86,7 @@ jobs:
outputs: type=local,dest=.

- name: Build K3s Binary Emulated
if: inputs.arch != 'arm64' && inputs.arch != 'amd64'
if: inputs.arch != 'arm64' && inputs.arch != 'amd64' && inputs.arch != 'riscv64'
env:
PLATFORM: ${{ inputs.arch == 'arm' && 'linux/arm/v7' || format('linux/{0}', inputs.arch) }}
DOCKER_BUILD_SUMMARY: false
Expand Down Expand Up @@ -115,7 +116,7 @@ jobs:
fi

- name: Build K3s image
if: inputs.upload-image == true && inputs.os == 'linux' && (inputs.arch == 'amd64' || inputs.arch == 'arm64')
if: inputs.upload-image == true && inputs.os == 'linux' && (inputs.arch == 'amd64' || inputs.arch == 'arm64' || inputs.arch == 'riscv64')
run: ./scripts/package-image

- name: "Save K3s image"
Expand Down
21 changes: 16 additions & 5 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ jobs:
with:
arch: arm64
upload-image: true
build-riscv64:
uses: ./.github/workflows/build-k3s.yaml
permissions:
contents: read
packages: write
with:
arch: riscv64
upload-image: true
e2e:
name: "E2E Tests"
needs: build
Expand Down Expand Up @@ -148,8 +156,8 @@ jobs:
name: "Build Go Tests"
strategy:
matrix:
arch: [amd64, arm64]
runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
arch: [amd64, arm64, riscv64]
runs-on: ${{ (matrix.arch == 'riscv64' && 'ubuntu-24.04-riscv') || (matrix.arch == 'arm64' && 'ubuntu-24.04-arm') || 'ubuntu-latest' }}
outputs:
channel: ${{ steps.channel_step.outputs.channel }}
steps:
Expand Down Expand Up @@ -185,14 +193,14 @@ jobs:
fi

docker-go:
needs: [build, build-arm64, build-go-tests]
needs: [build, build-arm64, build-riscv64, build-go-tests]
name: Docker
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
dtest: [autoimport, basics, bootstraptoken, cacerts, dualstack, etcd, hardened, lazypull, nixsnapshotter, skew, secretsencryption, snapshotrestore, svcpoliciesandfirewall, token, upgrade]
arch: [amd64, arm64]
arch: [amd64, arm64, riscv64]
exclude:
- dtest: autoimport
arch: arm64
Expand All @@ -206,7 +214,7 @@ jobs:
arch: arm64
- dtest: svcpoliciesandfirewall
arch: arm64
runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}
runs-on: ${{ (matrix.arch == 'riscv64' && 'ubuntu-24.04-riscv') || (matrix.arch == 'arm64' && 'ubuntu-24.04-arm') || 'ubuntu-latest' }}
env:
CHANNEL: ${{ needs.build-go-tests.outputs.channel }}
steps:
Expand Down Expand Up @@ -238,6 +246,7 @@ jobs:
path: ./dist/artifacts
- name: Set up Docker
uses: docker/setup-docker-action@1a6edb0ba9ac496f6850236981f15d8f9a82254d # v5
if: matrix.arch != 'riscv64'
with:
version: type=image,tag=28
daemon-config: '{"features":{"containerd-snapshotter":true}}'
Expand All @@ -246,6 +255,8 @@ jobs:
run: |
if [ ${{ matrix.arch }} = "arm64" ]; then
mv ./dist/artifacts/k3s-arm64 ./dist/artifacts/k3s
elif [ ${{ matrix.arch }} = "riscv64" ]; then
mv ./dist/artifacts/k3s-riscv64 ./dist/artifacts/k3s
fi
chmod +x ./dist/artifacts/k3s
docker image load -i ./dist/artifacts/k3s-image.tar
Expand Down