Skip to content

#2196 Cluster reporting implementation #118

#2196 Cluster reporting implementation

#2196 Cluster reporting implementation #118

Workflow file for this run

name: Test
on:
pull_request:
paths:
- .github/workflows/test.yaml
- admission-controller/**
- examples/**
- helm/**
- scripts/**
- tests/**
push:
branches:
- main
paths:
- .github/workflows/test.yaml
- admission-controller/**
- examples/**
- helm/**
- scripts/**
- tests/**
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
test-unit:
name: Unit
runs-on: ubuntu-latest
steps:
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18
- name: Checkout Repo
uses: actions/checkout@v2
- name: Install Dependencies
working-directory: ./tests/
run: npm ci
- name: Install Dependencies (Synchronizer)
working-directory: ./admission-controller/synchronizer/
run: npm ci
- name: Test
working-directory: ./tests/
run: npm run test:unit
test-skaffold:
name: Skaffold
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
type: [standalone, cloud]
steps:
- name: Setup Skaffold
run: curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.9.0/skaffold-linux-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18
- name: Checkout Repo
uses: actions/checkout@v2
- name: Start Minikube
run: minikube start --extra-config=apiserver.enable-admission-plugins=ValidatingAdmissionWebhook
- name: Deploy Admission Controller (Standalone)
if: matrix.type == 'standalone'
run: ./scripts/deploy-${{ matrix.type }}.sh monokle
- name: Deploy Admission Controller (Cloud)
if: matrix.type == 'cloud'
run: ./scripts/deploy-${{ matrix.type }}.sh host.minikube.internal:5000 SAMPLE_TOKEN monokle
- name: Preview namespace state
run: kubectl -n monokle get all,CustomResourceDefinition,ValidatingWebhookConfiguration,secrets
- name: Install Dependencies
working-directory: ./tests/
run: npm ci
- name: Test
working-directory: ./tests/
run: npm test "${{ matrix.type }}"
test-helm-standalone:
name: Helm (Standalone)
runs-on: ubuntu-latest
needs: [test-unit, test-skaffold]
strategy:
fail-fast: true
matrix:
k8s: [v1.25.15, v1.26.10, v1.27.7, v1.28.3]
helm: [v3.11.3, v3.12.3, v3.13.1]
steps:
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18
- name: Setup Helm
uses: azure/setup-helm@v3
with:
version: ${{ matrix.helm }}
- name: Debug helm
run: helm version
- name: Checkout Repo
uses: actions/checkout@v2
- name: Start Minikube
run: minikube start --kubernetes-version=${{ matrix.k8s }} --extra-config=apiserver.enable-admission-plugins=ValidatingAdmissionWebhook
- name: Build local images (init container)
run: eval $(minikube -p minikube docker-env) && minikube image build -t admission-webhook-init -f ./Dockerfile .
working-directory: ./admission-controller/init
- name: Build local images (server container)
run: eval $(minikube -p minikube docker-env) && minikube image build -t admission-webhook -f ./Dockerfile .
working-directory: ./admission-controller/server
- name: Helm install
run: |
eval $(minikube -p minikube docker-env)
helm package ./helm --version 0.0.0
helm install monokle-ac monokle-admission-controller-0.0.0.tgz \
--set image.init.pullPolicy=Never \
--set image.init.overridePath=admission-webhook-init \
--set image.server.pullPolicy=Never \
--set image.server.overridePath=admission-webhook \
--set logLevel=debug \
--namespace=mac-test \
--create-namespace
- name: List charts
run: helm list -A
- name: Preview namespace state
run: kubectl -n mac-test get all,CustomResourceDefinition,ValidatingWebhookConfiguration,secrets
- name: Install Dependencies
working-directory: ./tests/
run: npm ci
- name: Test
working-directory: ./tests/
run: MONOKLE_NAMESPACE=mac-test npm run test standalone
- name: Helm uninstall
run: helm uninstall monokle-ac -n mac-test
test-helm-cloud:
name: Helm (Cloud)
runs-on: ubuntu-latest
needs: [test-unit, test-skaffold]
strategy:
fail-fast: true
matrix:
k8s: [v1.24.17, v1.28.3]
helm: [v3.13.1]
steps:
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18
- name: Setup Helm
uses: azure/setup-helm@v3
with:
version: ${{ matrix.helm }}
- name: Debug helm
run: helm version
- name: Checkout Repo
uses: actions/checkout@v2
- name: Start Minikube
run: minikube start --kubernetes-version=${{ matrix.k8s }} --extra-config=apiserver.enable-admission-plugins=ValidatingAdmissionWebhook
- name: Build local images (init container)
run: eval $(minikube -p minikube docker-env) && minikube image build -t admission-webhook-init -f ./Dockerfile .
working-directory: ./admission-controller/init
- name: Build local images (server container)
run: eval $(minikube -p minikube docker-env) && minikube image build -t admission-webhook -f ./Dockerfile .
working-directory: ./admission-controller/server
- name: Build local images (synchronizer container)
run: eval $(minikube -p minikube docker-env) && minikube image build -t admission-synchronizer -f ./Dockerfile .
working-directory: ./admission-controller/synchronizer
- name: Helm install
run: |
eval $(minikube -p minikube docker-env)
helm package ./helm --version 0.0.0
helm install monokle-ac monokle-admission-controller-0.0.0.tgz \
--set image.init.pullPolicy=Never \
--set image.init.overridePath=admission-webhook-init \
--set image.server.pullPolicy=Never \
--set image.server.overridePath=admission-webhook \
--set image.synchronizer.pullPolicy=Never \
--set image.synchronizer.overridePath=admission-synchronizer \
--set logLevel=debug \
--set cloudApiUrl="host.minikube.internal:5000" \
--set automationToken=SAMPLE_TOKEN \
--namespace=mac-test \
--create-namespace
- name: List charts
run: helm list -A
- name: Preview namespace state
run: kubectl -n mac-test get all,CustomResourceDefinition,ValidatingWebhookConfiguration,secrets
- name: Install Dependencies
working-directory: ./tests/
run: npm ci
- name: Test
working-directory: ./tests/
run: MONOKLE_NAMESPACE=mac-test npm run test cloud
- name: Helm uninstall
run: helm uninstall monokle-ac -n mac-test