Support Kubernetes 1.35 #122
Workflow file for this run
This file contains hidden or 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
| name: CI | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| # needed for git describe --tags | |
| fetch-depth: 0 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: 'go.mod' | |
| - uses: docker/login-action@v4 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build images | |
| run: | | |
| set -x | |
| git fetch origin | |
| tag="$(git describe --tags)" | |
| echo "building images..." | |
| go mod vendor | |
| echo "docker build -t ghcr.io/kilnfi/carina:controller-${tag} . " | |
| docker build -t "ghcr.io/kilnfi/carina:controller-${tag}" . | |
| cd scheduler | |
| go mod vendor | |
| echo "docker build -t ghcr.io/kilnfi/carina:scheduler-${tag} ." | |
| docker build -t "ghcr.io/kilnfi/carina:scheduler-${tag}" . | |
| # Interactive debug | |
| - name: Setup tmate session | |
| uses: mxschmitt/action-tmate@v3 | |
| with: | |
| detached: true | |
| - name: Create KinD cluster | |
| if: github.ref_name != 'main' | |
| uses: helm/kind-action@v1.14.0 | |
| with: | |
| cluster_name: kind | |
| - name: Test Kubernetes | |
| if: github.ref_name != 'main' | |
| run: | | |
| set -x | |
| tag="$(git describe --tags)" | |
| kind load docker-image "ghcr.io/kilnfi/carina:controller-${tag}" "ghcr.io/kilnfi/carina:scheduler-${tag}" | |
| # Install carina without a device first — we need the carina-node | |
| # daemonset running to create a fake block device inside it. | |
| sed -i -e "s/__TAG__/${tag}/" .github/kiln-values.yaml | |
| helm upgrade --install --create-namespace -n carina carina-csi-driver charts/ -f .github/kiln-values.yaml --wait --timeout=20m | |
| # Create a 12G loopback device inside carina-node to simulate a disk, | |
| # then re-install with the device configured and initialize LVM on it. | |
| device="$(kubectl exec -t -n carina ds/csi-carina-node -c csi-carina-node -- \ | |
| sh -c 'truncate --size=12G /tmp/disk.device; losetup --show -f /tmp/disk.device')" | |
| sed -i -e "s/__DEVICE__/${device#/dev/}/" .github/kiln-values.yaml | |
| kubectl exec -t -n carina ds/csi-carina-node -c csi-carina-node -- \ | |
| sh -c "pvcreate ${device}" | |
| helm upgrade --install -n carina carina-csi-driver charts/ -f .github/kiln-values.yaml --wait --timeout=200s | |
| # Run the helm test — creates a PVC and a pod that uses carina storage. | |
| helm test -n carina carina-csi-driver --timeout=500s | |
| - name: Push image | |
| if: github.ref_name == 'main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') | |
| run: | | |
| set -x | |
| tag="$(git describe --tags)" | |
| docker push "ghcr.io/kilnfi/carina:controller-${tag}" | |
| docker push "ghcr.io/kilnfi/carina:scheduler-${tag}" | |
| helm: | |
| name: Helm chart | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| # needed for git describe --tags | |
| fetch-depth: 0 | |
| - name: Login to GitHub Container Registry | |
| uses: docker/login-action@v4 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Push chart | |
| if: github.ref_name == 'main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') | |
| run: | | |
| set -x | |
| tag="$(git describe --tags)" | |
| sed -i -r "s/^(appV|v)ersion *:.*$/\1ersion: $tag/" charts/Chart.yaml | |
| helm package charts --version "${tag}" | |
| HELM_EXPERIMENTAL_OCI=1 helm push "carina-csi-driver-${tag}.tgz" "oci://ghcr.io/kilnfi/helm-charts" |