shared-actions/helm-deploy/action.yml

55 lines
1.6 KiB
YAML

name: helm-deploy
description: Deploy a service to Kubernetes via Helm over SSH
inputs:
service-name:
description: Helm release name
required: true
helm-host:
description: SSH target (e.g., dsp1-stage.schmalzgroup.net)
required: true
overrides-file:
description: Local path to Helm values override file
required: false
default: kubernetes/overrides-su.yaml
image-tag:
description: Docker image tag to deploy
required: true
ssh-key:
description: Private SSH key content
required: true
namespace:
description: Kubernetes namespace
required: false
default: dsp
helm-repo:
description: Helm chart repository name
required: false
default: nexus-helm-repository
helm-chart:
description: Chart name in the repo
required: false
default: DSP-Blueprint
runs:
using: composite
steps:
- shell: bash
run: |
SSH_KEY_FILE=$(mktemp)
trap "rm -f '$SSH_KEY_FILE'" EXIT
echo "${{ inputs.ssh-key }}" > "$SSH_KEY_FILE"
chmod 600 "$SSH_KEY_FILE"
SSH_OPTS="-i $SSH_KEY_FILE -o StrictHostKeyChecking=no"
REMOTE="root@${{ inputs.helm-host }}"
SERVICE="${{ inputs.service-name }}"
scp $SSH_OPTS "${{ inputs.overrides-file }}" "$REMOTE:/tmp/${SERVICE}-overrides.yaml"
ssh $SSH_OPTS "$REMOTE" \
"helm repo update && \
helm upgrade --install --create-namespace -n ${{ inputs.namespace }} $SERVICE \
${{ inputs.helm-repo }}/${{ inputs.helm-chart }} -f /tmp/${SERVICE}-overrides.yaml \
--set image.tag=${{ inputs.image-tag }} --atomic --debug"