All checks were successful
Build docker container / Build image (push) Successful in 15s
87 lines
2.7 KiB
Bash
87 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Function to create HelmChart YAML
|
|
createHelmYaml() {
|
|
# Load values from Chart.yaml
|
|
chart_version=$(yq -r '.dependencies[0].version' Chart.yaml)
|
|
chart_name=$(yq -r '.name' Chart.yaml)
|
|
chart_repo=$(yq -r '.dependencies[0].repository' Chart.yaml)
|
|
chart_namespace=$(yq -r '.annotations.namespace' Chart.yaml)
|
|
|
|
# Check if chart_namespace is empty and default to chart_name if it is
|
|
if [[ -z "$chart_namespace" ]]; then
|
|
chart_namespace="$chart_name"
|
|
fi
|
|
|
|
# Determine the correct chart and repo values based on chart_repo
|
|
if [[ $chart_repo == oci://* ]]; then
|
|
chart="${chart_repo}/${chart_name}"
|
|
else
|
|
repo="$chart_repo"
|
|
chart="$chart_name"
|
|
fi
|
|
|
|
# Load the raw content of values.yaml
|
|
|
|
values_content=$(cat values.yaml | yq -r ".$chart_name")
|
|
|
|
# Create HelmChart content in a variable
|
|
helm_chart_yaml=$(yq eval -n -r ".apiVersion = \"helm.cattle.io/v1\" |
|
|
.kind = \"HelmChart\" |
|
|
.metadata.name = \"$chart_name\" |
|
|
.metadata.namespace = \"$chart_namespace\" |
|
|
.spec.chart = \"$chart\" |
|
|
.spec.version = \"$chart_version\" |
|
|
.spec.targetNamespace = \"$chart_namespace\" |
|
|
.spec.valuesContent = \"$values_content\"")
|
|
|
|
# If repo is set, add it to the spec
|
|
if [[ -n "$repo" ]]; then
|
|
helm_chart_yaml=$(echo "$helm_chart_yaml" | yq eval ".spec.repo = \"$repo\"")
|
|
fi
|
|
|
|
# Print the final YAML to stdout
|
|
echo "$helm_chart_yaml"
|
|
}
|
|
|
|
# if actions is not set
|
|
if [[ -z "$action" ]]; then
|
|
action="print"
|
|
fi
|
|
echo "# action: $action"
|
|
|
|
# if KUBECONFIG_DATA is set
|
|
if [[ -n "$KUBECONFIG_DATA" ]]; then
|
|
mkdir -p ~/.kube
|
|
echo "$KUBECONFIG_DATA" > ~/.kube/config
|
|
echo "# .kube/config is set"
|
|
fi
|
|
|
|
# Check if the action environment variable is set to 'print'
|
|
if [[ "$action" == "print" ]]; then
|
|
createHelmYaml
|
|
elif [[ "$action" == "deploy" ]] && [[ -n "$KUBECONFIG_DATA" ]]; then
|
|
kubectl version
|
|
createHelmYaml | kubectl apply -f -
|
|
elif [[ "$action" == "deploy-dry-run" ]] && [[ -n "$KUBECONFIG_DATA" ]]; then
|
|
kubectl version
|
|
createHelmYaml | kubectl apply --dry-run=client -o yaml -f -
|
|
elif [[ "$action" == "deploy" ]]; then
|
|
echo "# no .kube/config set"
|
|
kubectl version --client=true
|
|
elif [[ "$action" == "helm-print" ]]; then
|
|
helm dependency build .
|
|
helm template -g . --set-json="subchartData=$(yq '.dependencies[0]' Chart.yaml -ojson | jq -rc)"
|
|
elif [[ "$action" == "helm-deploy" ]]; then
|
|
helm dependency build .
|
|
helm template -g . --set-json="subchartData=$(yq '.dependencies[0]' Chart.yaml -ojson | jq -rc)"
|
|
helm template -g . --set-json="subchartData=$(yq '.dependencies[0]' Chart.yaml -ojson | jq -rc)" | kubectl apply -f -
|
|
elif [[ "$action" == "debug" ]]; then
|
|
echo "# dumping files"
|
|
find . -type f -print -exec cat {} \;
|
|
echo "# Computed file"
|
|
createHelmYaml
|
|
else
|
|
echo "# invalid action"
|
|
fi
|