55 lines
1.6 KiB
YAML
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"
|