gha-deploy-to-k3s/entrypoint.sh
2025-01-01 17:26:31 +02:00

49 lines
1.8 KiB
Bash
Executable File

#!/bin/sh -l
set -e # fail if any command fails
time=$(date)
echo "time=$time" >>"$GITHUB_OUTPUT"
echo "env:"
env
echo "github output:"
cat "$GITHUB_OUTPUT"
KUST_CONFIG=$1
if [ -z "$KUST_CONFIG" ]; then
echo "KUST_CONFIG not defined, pass it in a 'with:' clause to the action" && exit 1
fi
if [ -z "$K3S_YAML" ]; then
echo "K3S_YAML not defined, pass it in the environment with an 'env:' clause to the action" && exit 1
fi
if [ -z "$GITHUB_SHA" ]; then
echo "GITHUB_SHA not defined, pass it in the environment with an 'env:' clause to the action" && exit 1
fi
echo "Going to apply kustomization configuration at ${KUST_CONFIG}"
echo "K3S_YAML:"
echo "$K3S_YAML"
echo "$K3S_YAML" | base64 -d >/tmp/k3s.yaml
chmod 600 /tmp/k3s.yaml
ls -lth /tmp/
echo "K3S_YAML, deserialized:"
cat /tmp/k3s.yaml
cp -r ./kustomize /tmp/ # TODO: we expect the kustomize folder to be present in the root of the repository
find /tmp/kustomize -type f -print0 | xargs -0 sed -i "s/GIT_VERSION/${GITHUB_SHA}/"
# echo "try and get nodes and version... (debugging)"
# kubectl --kubeconfig /tmp/k3s.yaml get all
# kubectl --kubeconfig /tmp/k3s.yaml version
echo "determine kustomize version..."
KUSTOMIZE_VERSION=$(kubectl --kubeconfig /tmp/k3s.yaml version | grep Kustomize | awk '{ print $3 }')
echo "KUSTOMIZE_VERSION=${KUSTOMIZE_VERSION}"
# echo "run kustomize, and print output to console"
# kubectl --kubeconfig /tmp/k3s.yaml kustomize "/tmp/${KUST_CONFIG}"
echo "replace faulty kustomize version (compare https://github.com/kubernetes/kubectl/issues/1495)"
kubectl --kubeconfig /tmp/k3s.yaml kustomize "/tmp/${KUST_CONFIG}" | sed "s/kustomize-(devel)/kustomize-$KUSTOMIZE_VERSION/" >/tmp/manifests.yaml
echo "UPDATED YAML:"
cat /tmp/manifests.yaml
echo "applying..."
kubectl --kubeconfig /tmp/k3s.yaml apply -f - </tmp/manifests.yaml
echo "Done applying kustomized manifests at ${KUST_CONFIG}, success"