From 39064633ed90b6d14725c3a63348d53d43c1da42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Mon, 30 Jun 2025 17:35:13 +0200 Subject: [PATCH] add CI workflow to build and push MkDocs Docker image --- .../build-and-push-mkdocs-docker-image.yml | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 .gitea/workflows/build-and-push-mkdocs-docker-image.yml diff --git a/.gitea/workflows/build-and-push-mkdocs-docker-image.yml b/.gitea/workflows/build-and-push-mkdocs-docker-image.yml new file mode 100644 index 0000000..21fdb29 --- /dev/null +++ b/.gitea/workflows/build-and-push-mkdocs-docker-image.yml @@ -0,0 +1,94 @@ +name: Build and Push MkDocs Docker Image + +on: + push: + branches: + - main + - master + paths: + - 'Dockerfile' + - 'user/**' + - 'admin/**' + - '.gitea/workflows/**' + workflow_dispatch: + +jobs: + build-and-push: + runs-on: cth-ubuntu-latest + + env: + REGISTRY: ${{ vars.REGISTRY }} + IMAGE: ${{ vars.IMAGE }} + IMAGE_NAME: ${{ env.REGISTRY }}/${{ IMAGE }}:${{ github.sha }} + KUBE_CA: ${{ vars.KUBE_CA }} + KUBE_SERVER: ${{ vars.KUBE_SERVER }} + REGISTRY_USERNAME: ${{ vars.REGISTRY_USERNAME }} + NAMESPACE: ${{ vars.NAMESPACE }} + DEPLOYMENT_NAME: ${{ vars.DEPLOYMENT_NAME }} + CONTAINER: ${{ vars.CONTAINER }} + + steps: + - name: Checkout code + uses: https://github.com/actions/checkout@v4 + + - name: Set up Docker Buildx + uses: https://github.com/docker/setup-buildx-action@v3 + + - name: Log in to Docker registry + uses: https://github.com/docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ env.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Build and push + id: build-push + uses: https://github.com/docker/build-push-action@v5 + with: + context: . + file: documentation.Dockerfile + push: true + tags: '${{ env.IMAGE_NAME }}' + + - name: Install kubectl + run: | + curl -LO "https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl" + chmod +x ./kubectl + sudo mv ./kubectl /usr/local/bin/kubectl + + - name: Set up kubeconfig + env: + KUBE_SERVER: ${{ env.KUBE_SERVER }} # e.g. https:// + KUBE_CA: ${{ env.KUBE_CA }} # base64 encoded, or fetched via kubectl config view + KUBE_TOKEN: ${{ secrets.KUBE_TOKEN }} # Token generated via 'kubectl create token' + run: | + mkdir -p ~/.kube + cat < ~/.kube/config + apiVersion: v1 + kind: Config + clusters: + - name: default-cluster + cluster: + server: "$KUBE_SERVER" + certificate-authority-data: "$KUBE_CA" + contexts: + - name: default-context + context: + cluster: default-cluster + user: gitea-actions + current-context: default-context + users: + - name: gitea-actions + user: + token: "$KUBE_TOKEN" + EOF + + - name: Patch Deployment Image + env: + NAMESPACE: ${{ env.NAMESPACE }} + DEPLOYMENT: ${{ env.DEPLOYMENT_NAME }} + CONTAINER: ${{ env.CONTAINER }} + run: | + echo "deploy new tag: $TAG_IMAGE" + env + kubectl -n ${NAMESPACE} set image deployment/${DEPLOYMENT} ${CONTAINER}=${IMAGE_NAME}