Skip to content

Test docker builds

Test docker builds #11

Workflow file for this run

name: Main workflow
on:
pull_request:
paths:
- '**'
push:
branches:
- main
paths:
- '**'
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.23'
cache: true
cache-dependency-path: go.sum
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: v1.60
# test:
# name: Test code
# needs: golangci
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-go@v5
# with:
# go-version: '1.23'
# cache: true
# cache-dependency-path: go.sum
# - name: Run tests
# run: |
# make test
# make integration-test
build-docker-image:
name: Build Docker image
# needs: test
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
permissions:
contents: read
packages: write
attestations: write
id-token: write
outputs:
image-tags: ${{ steps.meta.outputs.tags }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build Docker image
id: build
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: .
push: false
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
load: true
- name: Save image as artifact
run: docker save ${{ steps.meta.outputs.tags }} -o image.tar
- name: Upload image artifact
uses: actions/upload-artifact@v4
with:
name: docker-image
path: image.tar
helm-test:
name: Test chart
runs-on: ubuntu-latest
needs: build-docker-image
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Download Docker image
uses: actions/download-artifact@v4
with:
name: docker-image
- name: Load Docker image
run: docker load -i image.tar
- name: Install Helm
uses: azure/setup-helm@v4
- name: Set up chart-testing
uses: helm/[email protected]
- name: Run chart-testing (lint)
if: steps.list-changed.outputs.changed == 'true'
run: |
ct lint \
--config ct.yaml \
--target-branch ${{ github.event.repository.default_branch }} \
--chart-dirs deploy/helm --charts deploy/helm/kubenetmon-server,deploy/helm/kubenetmon-agent
- name: Create kind cluster
if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/main' }}
uses: helm/[email protected]
with:
config: ${{ github.workspace }}/src/test/kind-config.yaml
- name: Set up kubectl
if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/main' }}
uses: azure/setup-kubectl@v4
- name: Create required resources for test
if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/main' }}
run: |
kind load docker-image --name chart-testing ${{ needs.build-and-push-image.outputs.image-tags }}
kubectl create namespace kubenetmon-agent
kubectl create namespace kubenetmon-server
- name: Run chart-testing (install)
if: ${{ github.event_name == 'pull_request' || github.ref == 'refs/heads/main' || github.event.inputs.deploy_to_dev == 'true' || github.event.inputs.build_and_push == 'true' }}
run: |
cd src/kubenetmon/deploy/helm
ct install \
--config ../../../.github/workflows/configs/ct.yaml \
--target-branch ${{ github.event.repository.default_branch }} \
--chart-dirs . \
--charts kubenetmon-agent \
--namespace kubenetmon-agent \
--helm-extra-set-args "\
--set=image.repository=$(echo ${{ needs.build-and-push-image.outputs.image-tags }} | cut -d':' -f1) \
--set=image.tag=$(echo ${{ needs.build-and-push-image.outputs.image-tags }} | cut -d':' -f2) \
--set=configuration.skipConntrackSanityCheck=true \
--set=configuration.uptimeWaitDuration=1s"
ct install \
--config ../../../.github/workflows/configs/ct.yaml \
--target-branch ${{ github.event.repository.default_branch }} \
--chart-dirs . \
--charts kubenetmon-server \
--namespace kubenetmon-server \
--helm-extra-set-args "\
--set=image.repository=$(echo ${{ needs.build-and-push-image.outputs.image-tags }} | cut -d':' -f1) \
--set=image.tag=$(echo ${{ needs.build-and-push-image.outputs.image-tags }} | cut -d':' -f2) \
--set=inserter.skipPing=true \
--set=inserter.disableTLS=true \
--set=deployment.replicaCount=1 \
--set=cluster=default \
--set=region=europe-north1 \
--set=environment=development \
--set=cloud=gcp"