#!/usr/bin/env bash # scripts/build.sh [tag] # Empaqueta el contexto, sube a MinIO, lanza Kaniko en-cluster, espera. set -euo pipefail TAG="${1:-dev}" HARBOR="harbor.manabo.org" IMAGE="${HARBOR}/library/smtp-relay:${TAG}" BUCKET="kaniko-builds" CONTEXT_KEY="smtp-relay/context.tar.gz" echo "==> Building ${IMAGE}" echo "==> Packaging context ..." tar -czf /tmp/kaniko-context.tar.gz \ --exclude='.git' \ --exclude='scripts' \ --exclude='.gitea' \ --exclude='README.md' \ -C "$(git rev-parse --show-toplevel)" \ Dockerfile entrypoint.sh main.cf master.cf smtpd.conf echo "==> Uploading to MinIO ..." mc cp /tmp/kaniko-context.tar.gz "minio/${BUCKET}/${CONTEXT_KEY}" rm /tmp/kaniko-context.tar.gz JOB_NAME="kaniko-smtp-relay-$(date +%s)" echo "==> Launching Kaniko job: ${JOB_NAME}" cat < Waiting for build (timeout 10m) ..." kubectl wait "job/${JOB_NAME}" -n kaniko \ --for=condition=complete \ --timeout=600s || { echo "==> Build FAILED. Logs:" POD=$(kubectl get pods -n kaniko -l "job-name=${JOB_NAME}" -o name | head -1) kubectl logs -n kaniko "$POD" --all-containers kubectl delete "job/${JOB_NAME}" -n kaniko --ignore-not-found exit 1 } echo "==> Done: ${IMAGE}"