name: Helm Diff Deployment description: Diff a Helm chart for a deployment in a Kubernetes cluster inputs: DEPLOYMENT_NAME: description: "The Helm release name" required: true DEPLOYMENT_NAMESPACE: description: "The Kubernetes namespace (defaults to DEPLOYMENT_NAME)" default: "" REGISTRY: description: "OCI registry hostname for helm dependency login" required: true REGISTRY_USERNAME: description: "Username for OCI registry login" required: true REGISTRY_TOKEN: description: "Token for OCI registry login" required: true CHART_PATH: description: "Path to the Helm chart" default: "./helm" VALUES_FILE: description: "The values file to use" default: "./helm/values.yaml" IMAGE_PATH: description: "The registry path to the image (optional)" default: "" IMAGE_TAG: description: "The image tag to deploy (optional)" default: "" TAG_KEY: description: "Helm --set key for the image tag (e.g. deploy.api.tag)" default: "" runs: using: composite steps: - name: Helm OCI Login shell: sh env: REGISTRY: ${{ inputs.REGISTRY }} REGISTRY_USERNAME: ${{ inputs.REGISTRY_USERNAME }} REGISTRY_TOKEN: ${{ inputs.REGISTRY_TOKEN }} run: | echo "$REGISTRY_TOKEN" | helm registry login "$REGISTRY" \ --username "$REGISTRY_USERNAME" \ --password-stdin - name: Install Helm Diff shell: sh run: | helm plugin list | grep -q diff || helm plugin install https://github.com/databus23/helm-diff - name: Helm Diff shell: sh env: DEPLOYMENT_NAME: ${{ inputs.DEPLOYMENT_NAME }} DEPLOYMENT_NAMESPACE: ${{ inputs.DEPLOYMENT_NAMESPACE }} CHART_PATH: ${{ inputs.CHART_PATH }} VALUES_FILE: ${{ inputs.VALUES_FILE }} IMAGE_PATH: ${{ inputs.IMAGE_PATH }} IMAGE_TAG: ${{ inputs.IMAGE_TAG }} TAG_KEY: ${{ inputs.TAG_KEY }} run: | NAMESPACE="$DEPLOYMENT_NAMESPACE" if [ -z "$NAMESPACE" ]; then NAMESPACE="$DEPLOYMENT_NAME"; fi SET_FLAGS="" if [ -n "$TAG_KEY" ] && [ -n "$IMAGE_TAG" ]; then SET_FLAGS="$SET_FLAGS --set $TAG_KEY=$IMAGE_TAG" fi if [ -n "$IMAGE_PATH" ]; then SET_FLAGS="$SET_FLAGS --set image.repository=$IMAGE_PATH" fi helm dependency update "$CHART_PATH" helm diff upgrade "$DEPLOYMENT_NAME" "$CHART_PATH" -n "$NAMESPACE" --values "$VALUES_FILE" $SET_FLAGS --context 5