From 59f34758208fc47722d728f2c1311640b897935e Mon Sep 17 00:00:00 2001 From: devops Date: Sun, 12 Jul 2026 16:19:21 +0000 Subject: [PATCH] Update .gitea/workflows/build.yaml --- .gitea/workflows/build.yaml | 41 ++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 0ac6e1b..b93e690 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -140,10 +140,49 @@ jobs: fi mkdir -p "${HOME}/.kube" - printf '%s' "${KUBE_CONFIG_DATA}" | base64 --decode > "${HOME}/.kube/config" + + # Normaliza saltos de línea, CRLF, espacios o tabulaciones que + # hayan podido introducirse al copiar el secret en la interfaz. + KUBE_CONFIG_B64="$( + printf '%s' "${KUBE_CONFIG_DATA}" \ + | tr -d '\r\n\t ' + )" + + if [ -z "${KUBE_CONFIG_B64}" ]; then + echo "ERROR: KUBE_CONFIG_DATA quedó vacío después de normalizarlo." + exit 1 + fi + + if ! printf '%s' "${KUBE_CONFIG_B64}" \ + | grep -Eq '^[A-Za-z0-9+/]*={0,2}$'; then + echo "ERROR: KUBE_CONFIG_DATA contiene caracteres que no pertenecen a Base64." + echo "Vuelve a generar el secret codificando el archivo kubeconfig completo." + exit 1 + fi + + if [ $(( ${#KUBE_CONFIG_B64} % 4 )) -ne 0 ]; then + echo "ERROR: la longitud de KUBE_CONFIG_DATA no es válida para Base64." + echo "Probablemente el valor fue copiado de forma incompleta." + exit 1 + fi + + if ! printf '%s' "${KUBE_CONFIG_B64}" \ + | base64 --decode > "${HOME}/.kube/config"; then + echo "ERROR: no fue posible decodificar KUBE_CONFIG_DATA." + exit 1 + fi + chmod 600 "${HOME}/.kube/config" export KUBECONFIG="${HOME}/.kube/config" + if ! grep -q '^apiVersion:' "${KUBECONFIG}" \ + || ! grep -q '^clusters:' "${KUBECONFIG}" \ + || ! grep -q '^contexts:' "${KUBECONFIG}"; then + echo "ERROR: el contenido decodificado no parece ser un kubeconfig válido." + echo "No pegues el YAML sin codificar ni una cadena ya recortada." + exit 1 + fi + # Instala kubectl únicamente si el runner no lo incluye. if ! command -v kubectl >/dev/null 2>&1; then case "$(uname -m)" in