ci: add ci for helm

Signed-off-by: bin <brian.xb.bian@gmail.com>
This commit is contained in:
bin
2022-07-15 13:01:44 +08:00
parent 15abb40681
commit cb328b6478
3 changed files with 129 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
name: Check helm version
on:
push:
paths:
- deploy/charts/neuron/templates/**
pull_request:
paths:
- deploy/charts/neuron/templates/**
jobs:
check-helm-version:
runs-on: ubuntu-latest
steps:
- run: minikube start
- uses: actions/checkout@v2
- name: Update helm
run: |
helm repo add emqx https://repos.emqx.io/charts
helm repo update
- name: Check helm version
run: |
old=$(helm show chart emqx/neuron |egrep "^version" | sed -r 's|^version:[[:space:]]([0-9]+.[0-9]+.[0-9]+)$|\1|g')
now=$(egrep "^version" deploy/charts/neuron/Chart.yaml | sed -r 's|^version:[[:space:]]([0-9]+.[0-9]+.[0-9]+)$|\1|g')
if [ "$old" = "$now" ];then
echo "Need update version for Chart.yaml"
exit 1
fi
+42
View File
@@ -0,0 +1,42 @@
name: Release neuron
on:
push:
tags:
- "*"
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Check appVersion for helm
run: |
appVersion=$(egrep "^appVersion" deploy/charts/neuron/Chart.yaml | sed -r 's|^appVersion:[[:space:]]([0-9]+.[0-9]+.[0-9]+)$|\1|g')
if [ "$appVersion" != "${GITHUB_REF##*/}" ]; then
echo "Need update appVersion for Chart.yaml"
exit 1
fi
helm:
runs-on: self-hosted
if: github.repository_owner == 'emqx'
needs:
- release
steps:
- uses: actions/checkout@v2
- name: Check appVersion for helm
working-directory: deploy/charts/neuron
run: |
appVersion=$(egrep "^appVersion" Chart.yaml | sed -r 's|^appVersion:[[:space:]]([0-9]+.[0-9]+.[0-9]+)$|\1|g')
if [ "$appVersion" != "${GITHUB_REF##*/}" ]; then
echo "Need update appVersion for Chart.yaml"
exit 1
fi
- name: Create helm package
working-directory: deploy/charts/neuron
run: helm package .
- name: Update helm repo
run: |
sudo mv $(find deploy/charts/neuron -name "*.tgz") /repos/charts
sudo helm repo index /repos/charts
+59
View File
@@ -0,0 +1,59 @@
name: Test helm
inputs:
repository:
description: "neuron image repository"
required: true
default: "emqx/neuron"
tag:
description: "neuron image tag"
required: true
default: "2.0.1"
on:
push:
tags:
- "*"
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: minikube start --kubernetes-version="v1.23.0"
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: '1.18.3'
- name: install kubebuilder
run: |
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_64/amd64/')
curl -fsL "https://storage.googleapis.com/kubebuilder-tools/kubebuilder-tools-1.16.4-${OS}-${ARCH}.tar.gz" -o kubebuilder-tools
tar -zxvf kubebuilder-tools
sudo mv kubebuilder/ /usr/local/kubebuilder
- run: make test
deployment:
runs-on: ubuntu-latest
steps:
- run: minikube start --kubernetes-version="v1.23.0"
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: '1.18.3'
- name: Deploy neuron by helm
shell: bash
run: |
helm install neuron deploy/charts/neuron\
--set image.repository=${{ inputs.repository }} \
--set image.tag=${{ inputs.tag }}
- name: Check deployment
run: |
while [ "$(kubectl get Deployment -l app.kubernetes.io/name=neuron -o jsonpath='{.items[0].status.replicas}')" \
!= "$(kubectl get Deployment -l app.kubernetes.io/name=neuron -o jsonpath='{.items[0].status.readyReplicas}')" ]; do
echo "=============================="
kubectl get pods
echo "=============================="
echo "waiting neuron started"
sleep 10
done