Skip to content

Build and Release Helm charts #375

Build and Release Helm charts

Build and Release Helm charts #375

Workflow file for this run

name: Build and Release Helm charts
on:
workflow_dispatch:
inputs:
tag:
description: 'Version tag'
required: true
type:
description: 'Name of the software that should be released.'
required: true
type: choice
options:
- stunner
- stunner-gateway-operator
- stunner-premium #stunner-gateway-operator premium edition, left out the gateway-operator part to shorten the name
env:
TAG: ${{ inputs.tag }}
TYPE: ${{ inputs.type }}
jobs:
push_chart:
runs-on: ubuntu-latest
steps:
- name: Log the received tag
run: |
echo "Version is $TAG"
echo "Triggered by $TYPE"
- name: stunner-helm checkout
uses: actions/checkout@v4
with:
path: stunner-helm
ref: main
repository: l7mp/stunner-helm
- name: Edit helm chart for stunner
if: ${{ env.TYPE == 'stunner'}}
run: |
cd stunner-helm/helm
if ${{ env.TAG == 'dev' }}; then
sed -ri 's/^(\s*)(name\s*:\s*.*\s*$)/\1name: stunner-dev/' stunner/Chart.yaml
sed -ri 's/^(\s*)( pullPolicy\s*:\s*.*\s*$)/\1 pullPolicy: Always/' stunner/values.yaml
else
sed -ri 's/^(\s*)(version\s*:\s*.*\s*$)/\1version: ${{ env.TAG }}/' stunner/Chart.yaml
fi
sed -ri 's/^(\s*)(appVersion\s*:\s*.*\s*$)/\1appVersion: ${{ env.TAG }}/' stunner/Chart.yaml
sed -ri 's/^(\s*)( tag\s*:\s*.*\s*$)/\1 tag: ${{ env.TAG }}/' stunner/values.yaml
- name: Edit helm chart for stunner-gateway-operator
if: ${{ env.TYPE == 'stunner-gateway-operator' }}
run: |
cd stunner-helm/helm
if ${{ env.TAG == 'dev' }}; then
sed -ri 's/^(\s*)(name\s*:\s*.*\s*$)/\1name: stunner-gateway-operator-dev/' stunner-gateway-operator/Chart.yaml
sed -i '/stunnerGatewayOperator:/,/pullPolicy:/ s/\(pullPolicy:\s*\).*/\1Always/' stunner-gateway-operator/values.yaml
sed -i '/dataplane:/,/pullPolicy:/ s/\(pullPolicy:\s*\).*/\1Always/' stunner-gateway-operator/values.yaml
sed -i '/authService:/,/pullPolicy:/ s/\(pullPolicy:\s*\).*/\1Always/' stunner-gateway-operator/values.yaml
else
sed -ri 's/^(\s*)(version\s*:\s*.*\s*$)/\1version: ${{ env.TAG }}/' stunner-gateway-operator/Chart.yaml
fi
sed -i '/stunnerGatewayOperator:/,/tag:/ s/\(tag:\s*\).*/\1'"${{ env.TAG }}"'/' stunner-gateway-operator/values.yaml
sed -i '/dataplane:/,/tag:/ s/\(tag:\s*\).*/\1'"${{ env.TAG }}"'/' stunner-gateway-operator/values.yaml
sed -i '/authService:/,/tag:/ s/\(tag:\s*\).*/\1'"${{ env.TAG }}"'/' stunner-gateway-operator/values.yaml
sed -ri 's/^(\s*)(appVersion\s*:\s*.*\s*$)/\1appVersion: ${{ env.TAG }}/' stunner-gateway-operator/Chart.yaml
# STUNner premium edition
- name: Edit helm chart for stunner-premium
if: ${{ env.TYPE == 'stunner-premium' }}
run: |
cd stunner-helm/helm
if ${{ env.TAG == 'dev' }}; then
sed -ri 's/^(\s*)(name\s*:\s*.*\s*$)/\1name: stunner-gateway-operator-dev/' stunner-gateway-operator/Chart.yaml
sed -i '/stunnerGatewayOperator:/,/pullPolicy:/ s/\(pullPolicy:\s*\).*/\1Always/' stunner-gateway-operator/values.yaml
sed -i '/dataplane:/,/pullPolicy:/ s/\(pullPolicy:\s*\).*/\1Always/' stunner-gateway-operator/values.yaml
sed -i '/authService:/,/pullPolicy:/ s/\(pullPolicy:\s*\).*/\1Always/' stunner-gateway-operator/values.yaml
else
sed -ri 's/^(\s*)(version\s*:\s*.*\s*$)/\1version: ${{ env.TAG }}/' stunner-gateway-operator/Chart.yaml
fi
sed -i '/stunnerGatewayOperator:/,/tag:/ s/\(tag:\s*\).*/\1'"${{ env.TAG }}"'/' stunner-gateway-operator/values.yaml
sed -i '/dataplane:/,/tag:/ s/\(tag:\s*\).*/\1'"${{ env.TAG }}"'/' stunner-gateway-operator/values.yaml
sed -i '/authService:/,/tag:/ s/\(tag:\s*\).*/\1'"${{ env.TAG }}"'/' stunner-gateway-operator/values.yaml
sed -ri 's/^(\s*)(appVersion\s*:\s*.*\s*$)/\1appVersion: ${{ env.TAG }}/' stunner-gateway-operator/Chart.yaml
sed -i '/container:/,/name:/ s/\(name:\s*\)docker\.io\/l7mp\/stunner-gateway-operator/\1'"${{ env.TYPE }}"'/' stunner-gateway-operator/values.yaml
sed -i '/dataplane:/,/name:/ s/\(name:\s*\)docker\.io\/l7mp\/stunnerd/\1docker.io\/l7mp\/stunnerd-premium/' stunner-gateway-operator/values.yaml
sed -ri 's/^(\s*)(name\s*:\s*.*\s*$)/\1name: stunner-premium/' stunner-gateway-operator/Chart.yaml
- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: v3.16.2
- name: Set up chart-testing
uses: helm/chart-testing-action@v2
- name: Run chart-testing (lint)
#TODO: temporary 'if', should be removed. To remove we may need to provide a dummy customer key, not sure
if: ${{ env.TYPE != 'stunner-premium' }}
run: |
cd stunner-helm
ct lint --all --chart-dirs helm --excluded-charts stunner-kurento-one2one-call
- name: Create kind cluster
#TODO: temporary 'if', should be removed. To remove we may need to provide a dummy customer key, not sure
if: ${{ env.TYPE != 'stunner-premium' }}
uses: helm/kind-action@v1
- name: Run chart-testing (install)
#TODO: temporary 'if', should be removed. To remove we may need to provide a dummy customer key, not sure
if: ${{ env.TYPE != 'stunner-premium' }}
run: |
cd stunner-helm
ct install --chart-dirs helm --charts helm/${{ env.TYPE }}
- name: Build helm chart for ${{ env.TYPE }}
run: |
cd stunner-helm/helm
if ${{ env.TYPE == 'stunner-premium' }}; then
helm package stunner-gateway-operator
else
helm package ${{ env.TYPE }}
fi
- name: Set git config
run: |
git config --global user.email "l7mp.info@gmail.com"
git config --global user.name "BotL7mp"
- name: l7mp.io checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.WEB_PAT_TOKEN }}
path: l7mp.io
ref: master
repository: l7mp/l7mp.io
- name: Update and deploy l7mp/l7mp.io repository
run: |
if ${{ env.TAG == 'dev' }}; then
rm -rf l7mp.io/public/stunner/${{ env.TYPE }}-dev*.tgz
fi
cp stunner-helm/helm/*.tgz l7mp.io/public/stunner
helm repo index l7mp.io/public/stunner/ --url https://l7mp.io/stunner
cd l7mp.io
git add .
if ${{ env.TAG == 'dev' }}; then
git commit -m "Update dev helm chart from l7mp/${{ env.TYPE }}" -m "(triggered by the 'Helm release' github action.)"
else
git commit -m "Release helm chart from l7mp/${{ env.TYPE }}" -m "(triggered by the 'Helm release' github action.)"
fi
git push origin master
- name: Update stunner-helm repo
if: ${{ env.TAG != 'dev' && env.TYPE != 'stunner-premium' }}
run: |
cd stunner-helm
rm helm/*.tgz
git add .
git commit -m "Update helm charts from l7mp/${{ env.TYPE }}" -m "(triggered by the 'Helm release' github action.)"
git push origin main