Skip to content
This repository was archived by the owner on May 7, 2026. It is now read-only.

Update github actions #3660

Update github actions

Update github actions #3660

Workflow file for this run

name: Build
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
name: Build
runs-on: ubuntu-24.04
if: ${{ github.event.head_commit.message != '[Release] Update Chart.yaml' }}
steps:
- name: Free disk space
run: |
echo "Disk usage BEFORE cleanup:"
df -h
echo "Removing hosted toolcache..."
sudo rm -rf /opt/hostedtoolcache || true
echo "Removing .NET..."
sudo rm -rf /usr/share/dotnet || true
echo "Removing Android SDK..."
sudo rm -rf /usr/local/lib/android || true
echo "Removing GHC / Haskell..."
sudo rm -rf /opt/ghc || true
sudo rm -rf /usr/local/.ghcup || true
echo "Disk usage AFTER cleanup:"
df -h
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Get head sha
id: parse-commit-sha
run: |
head=$(git rev-parse HEAD)
echo "head_commit_sha=${head}" >> $GITHUB_ENV
echo "Head commit sha ${head}"
- name: Get merge request latest commit
id: parse-commit
if: ${{ github.event_name == 'pull_request' }}
run: |
msg=$(git show -s --format=%s)
echo "head_commit_message=${msg}" >> $GITHUB_ENV
echo "Latest commit: ${msg}"
echo "Env commit ${{env.head_commit_message}}"
echo "Contains msg ${{ contains(env.head_commit_message, '#skip-lint') }}"
- name: Secret Scanning
uses: trufflesecurity/trufflehog@90ca685b33dd2ad6fe7d287d935f85088260ec90 # main
with:
extra_args: --only-verified
- name: Setup Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
with:
go-version-file: "go.mod"
- name: Build agent go binary amd64
run: UNAME_M=x86_64 VERSION=${RELEASE_TAG:-commit-$GITHUB_SHA} make kvisor-agent
- name: Build controller go binary amd64
run: UNAME_M=x86_64 VERSION=${RELEASE_TAG:-commit-$GITHUB_SHA} make kvisor-controller
- name: Build image-scanner go binary amd64
run: UNAME_M=x86_64 VERSION=${RELEASE_TAG:-commit-$GITHUB_SHA} make kvisor-image-scanner
- name: Build linter go binary amd64
run: UNAME_M=x86_64 VERSION=${RELEASE_TAG:-commit-$GITHUB_SHA} make kvisor-linter
- name: Build agent go binary arm64
run: UNAME_M=arm64 VERSION=${RELEASE_TAG:-commit-$GITHUB_SHA} make kvisor-agent
- name: Build controller go binary arm64
run: UNAME_M=arm64 VERSION=${RELEASE_TAG:-commit-$GITHUB_SHA} make kvisor-controller
- name: Build image-scanner go binary arm64
run: UNAME_M=arm64 VERSION=${RELEASE_TAG:-commit-$GITHUB_SHA} make kvisor-image-scanner
- name: Build linter go binary arm64
run: UNAME_M=arm64 VERSION=${RELEASE_TAG:-commit-$GITHUB_SHA} make kvisor-linter
- name: Set up QEMU
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
- name: Login to GitHub Container Registry
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Docker build and push pr (controller)
if: ${{ github.event_name == 'pull_request' }}
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ./Dockerfile.controller
platforms: linux/arm64,linux/amd64
push: true
tags: ghcr.io/castai/kvisor/kvisor-controller:${{ env.head_commit_sha }}
- name: Docker build and push pr (agent)
if: ${{ github.event_name == 'pull_request' }}
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ./Dockerfile.agent
platforms: linux/arm64,linux/amd64
push: true
tags: ghcr.io/castai/kvisor/kvisor-agent:${{ env.head_commit_sha }}
- name: Docker build and push pr (scanners)
if: ${{ github.event_name == 'pull_request' }}
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ./Dockerfile.scanners
platforms: linux/arm64,linux/amd64
push: true
tags: ghcr.io/castai/kvisor/kvisor-scanners:${{ env.head_commit_sha }}
- name: Docker build and push main (controller)
if: ${{ github.event_name != 'pull_request' && github.event_name != 'release'}}
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ./Dockerfile.controller
platforms: linux/arm64,linux/amd64
push: true
tags: ghcr.io/castai/kvisor/kvisor-controller:${{ env.head_commit_sha }},ghcr.io/castai/kvisor/kvisor-controller:latest
- name: Docker build and push main (agent)
if: ${{ github.event_name != 'pull_request' && github.event_name != 'release'}}
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ./Dockerfile.agent
platforms: linux/arm64,linux/amd64
push: true
tags: ghcr.io/castai/kvisor/kvisor-agent:${{ env.head_commit_sha }},ghcr.io/castai/kvisor/kvisor-agent:latest
- name: Docker build and push main (scanners)
if: ${{ github.event_name != 'pull_request' && github.event_name != 'release'}}
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: ./Dockerfile.scanners
platforms: linux/arm64,linux/amd64
push: true
tags: ghcr.io/castai/kvisor/kvisor-scanners:${{ env.head_commit_sha }},ghcr.io/castai/kvisor/kvisor-scanners:latest
- name: Run golangci-lint
# You may pin to the exact commit or the version.
# uses: golangci/golangci-lint-action@537aa1903e5d359d0b27dbc19ddd22c5087f3fbc
if: ${{ github.event_name == 'pull_request' && !contains(env.head_commit_message, '#skip-lint') }}
uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0
with:
args: -v --timeout=5m
version: v2.12.1
only-new-issues: false
- name: Test
if: ${{ github.event_name == 'pull_request' && !contains(env.head_commit_message, '#skip-test') }}
run: go test -race -short ./...
- name: Summary
run: |
echo "**Pushed docker images:**" >> $GITHUB_STEP_SUMMARY
echo "ghcr.io/castai/kvisor/kvisor-controller:${{ env.head_commit_sha }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "ghcr.io/castai/kvisor/kvisor-agent:${{ env.head_commit_sha }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "ghcr.io/castai/kvisor/kvisor-scanners:${{ env.head_commit_sha }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Upgrade with helm:**" >> $GITHUB_STEP_SUMMARY
echo "helm upgrade castai-kvisor castai-helm/castai-kvisor -n castai-agent --reuse-values --set image.tag=${{ env.head_commit_sha }}" >> $GITHUB_STEP_SUMMARY
helm-test:
name: Test Helm Charts
runs-on: ubuntu-24.04
if: ${{ github.event_name == 'pull_request' }}
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 2
- name: Check for chart changes
id: changes
run: |
if git diff --name-only HEAD^ HEAD | grep -q '^charts/'; then
echo "charts_changed=true" >> $GITHUB_OUTPUT
else
echo "charts_changed=false" >> $GITHUB_OUTPUT
fi
- name: Setup Helm
if: steps.changes.outputs.charts_changed == 'true'
uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4
# TODO: re-add verification when https://github.com/helm-unittest/helm-unittest/issues/777 is resolved
- name: Install helm-unittest plugin
if: steps.changes.outputs.charts_changed == 'true'
run: helm plugin install https://github.com/helm-unittest/helm-unittest.git --verify=false
- name: Build chart dependencies
if: steps.changes.outputs.charts_changed == 'true'
run: helm dependency build ./charts/kvisor
- name: Run Helm unit tests
if: steps.changes.outputs.charts_changed == 'true'
run: helm unittest -f 'tests/**/test.yaml' ./charts/kvisor
# TODO: we might want to run the tests both in ubuntu-22.04, as well as ubuntu-20.04 to test
# if we everything is working with cgroups v1 and v2
e2e:
name: E2E
runs-on: ubuntu-24.04
if: ${{ github.event_name == 'pull_request' }}
needs: build
steps:
- name: Free disk space
run: |
echo "Disk usage BEFORE cleanup:"
df -h
echo "Removing hosted toolcache..."
sudo rm -rf /opt/hostedtoolcache || true
echo "Removing .NET..."
sudo rm -rf /usr/share/dotnet || true
echo "Removing Android SDK..."
sudo rm -rf /usr/local/lib/android || true
echo "Removing GHC / Haskell..."
sudo rm -rf /opt/ghc || true
sudo rm -rf /usr/local/.ghcup || true
echo "Disk usage AFTER cleanup:"
df -h
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Get head sha
id: parse-commit-sha
run: |
head=$(git rev-parse HEAD)
echo "head_commit_sha=${head}" >> $GITHUB_ENV
echo "Head commit sha ${head}"
- name: Setup Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
with:
go-version-file: "go.mod"
- name: Login to GitHub Container Registry
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create kind cluster
uses: helm/kind-action@ef37e7f390d99f746eb8b610417061a60e82a6cc # v1.14.0
with:
config: ./e2e/kind-config.yaml
cluster_name: kvisor-e2e
- name: Run e2e
shell: bash
run: |
KIND_CONTEXT=kvisor-e2e IMAGE_TAG=${{ env.head_commit_sha }} ./e2e/run.sh