From d7649bc5537de6a76e78070285bb6e9e1fe3bb26 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Mon, 13 Jan 2025 10:42:19 +0100 Subject: [PATCH] deployment --- .woodpecker.yml | 30 +++++++++++++++++++ deployment/deploy-yml.tmpl | 59 ++++++++++++++++++++++++++++++++++++++ deployment/deploy.sh | 26 +++++++++++++++++ 3 files changed, 115 insertions(+) create mode 100644 .woodpecker.yml create mode 100644 deployment/deploy-yml.tmpl create mode 100755 deployment/deploy.sh diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..af3f1f7 --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,30 @@ +steps: + build: + image: plugins/kaniko + settings: + repo: ${FORGE_NAME}/${CI_REPO} + registry: + from_secret: container_registry + tags: latest,${CI_COMMIT_SHA},${CI_COMMIT_TAG} + username: + from_secret: container_registry_username + password: + from_secret: container_registry_password + build-args: "BASE_URL=https://minimal-setups.hottis.de" + dockerfile: Dockerfile + when: + - event: push + + deploy: + image: portainer/kubectl-shell:latest + secrets: + - source: kube_config + target: KUBE_CONFIG_CONTENT + commands: + - export IMAGE_TAG=$CI_COMMIT_TAG + - printf "$KUBE_CONFIG_CONTENT" > /tmp/kubeconfig + - export KUBECONFIG=/tmp/kubeconfig + - ./deployment/deploy.sh + when: + - event: push + diff --git a/deployment/deploy-yml.tmpl b/deployment/deploy-yml.tmpl new file mode 100644 index 0000000..18cdcdf --- /dev/null +++ b/deployment/deploy-yml.tmpl @@ -0,0 +1,59 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: hugo-build-and-serve-env + labels: + app: hugo-build-and-serve-env +spec: + replicas: 1 + selector: + matchLabels: + app: hugo-build-and-serve-env + template: + metadata: + labels: + app: hugo-build-and-serve-env + spec: + containers: + - name: hugo-build-and-serve-env + image: %IMAGE% + ports: + - containerPort: 8080 + protocol: TCP +--- +apiVersion: v1 +kind: Service +metadata: + name: hugo-build-and-serve-env +spec: + type: ClusterIP + selector: + app: hugo-build-and-serve-env + ports: + - name: http + targetPort: 8080 + port: 80 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: hugo-build-and-serve-env + annotations: + cert-manager.io/cluster-issuer: letsencrypt-production-http +spec: + tls: + - hosts: + - minimal-setups.hottis.de + secretName: hugo-build-and-serve-env-cert + rules: + - host: minimal-setups.hottis.de + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: hugo-build-and-serve-env + port: + number: 80 + diff --git a/deployment/deploy.sh b/deployment/deploy.sh new file mode 100755 index 0000000..b16d367 --- /dev/null +++ b/deployment/deploy.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +if [ "$IMAGE_TAG" == "" ]; then + echo "Make sure IMAGE_TAG is set" + exit 1 +fi + + +IMAGE_NAME=gitea.hottis.de/wn/hugo-build-and-serve-env +NAMESPACE=homepages +DEPLOYMENT_DIR=$PWD/deployment + +pushd $DEPLOYMENT_DIR > /dev/null + +kubectl create namespace $NAMESPACE \ + --dry-run=client \ + -o yaml | \ + kubectl -f - apply + + +cat $DEPLOYMENT_DIR/deploy-yml.tmpl | \ + sed -e 's,%IMAGE%,'$IMAGE_NAME':'$IMAGE_TAG','g | \ + kubectl apply -f - -n $NAMESPACE + +popd > /dev/null +