From 496e3b76e16c593a5112fd677c871de6c7229536 Mon Sep 17 00:00:00 2001 From: Julie Lenaerts Date: Wed, 16 Jul 2025 15:03:39 +0200 Subject: [PATCH] Setup automatic deployment --- .gitea/workflows/build-image.yaml | 54 +++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/build-image.yaml b/.gitea/workflows/build-image.yaml index 8238cd7..f2c03a4 100644 --- a/.gitea/workflows/build-image.yaml +++ b/.gitea/workflows/build-image.yaml @@ -1,10 +1,11 @@ -name: Build an image to deploy website +name: Build and push chill website image on: # Runs on pushes targeting the default branch push: - tags: - - v* + branches: + - main + - master # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: @@ -18,6 +19,8 @@ env: HUGO_VERSION: "0.121.2" GO_VERSION: "1.21.4" NODE_VERSION: "18" + KUBE_CA: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZCRENDQXV5Z0F3SUJBZ0lCS2pBTkJna3Foa2lHOXcwQkFRc0ZBREFSTVE4d0RRWURWUVFEREFaM05YWTEKZWpRd0hoY05Nakl4TWpFd01qRXdNRFV4V2hjTk1qY3hNakE1TWpFd01EVXhXakFSTVE4d0RRWURWUVFEREFaMwpOWFkxZWpRd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUN0R01hZlNxYzNJc2lpCmp2QjU4ZFhNNk42Z1hMV2hyODU0MlV0N09RSGRLTFZuY2NJTE94R2w0ZkdxWDBEREJlYkE1MWd6ZVR3b0pObWMKNHhpSW5vaWp4VFdWNW0wQ2REU2FrTUpEajJiNGJLbVdVZTBIRDg5YzZ4N20rM3RBR1Myekl5amtmTlVXKy9YRApXNVp4NmQrSjY4VWdmNXN1VnVCL0lXWjFJSEE3YVc3N2FYeStnV1BrYWVVdVpSWXFyMFB3NnVVM0lDZFp6K053CjdRNDRLczlmdUtSK29yT2JwSXRLTUViOUVkUEtGZWs2U3RVK0VJS0gvNnNLZzdKRHdQN1VhVnZhdkhEQXVONlcKb1FuT1JRN1BQM0xTdU9TdFVQcWY3Y09MU2ZQTVdISys5MTRJRFpBaEdVUllYck5keDU4TnV1ZERkTHFUV0VadQpsU01RN3JXdHk3OXBOVnQyOXdYLzhnMTd2NEdBemFGTTJJYUNPUnZVSTZlZnRRY3lybVVIelhCNlhLOVQ2YzN6Ck9CUU5neDh4emRyZ0xCQ3FxNmJSenNMc1M2TWFWY0VNcml6dk9QN3FUcTJKK2VEbzdST3drQjNaZmprT214bDAKVEdLMDgrbGxMNlhvM1RYSGdwa1JHWUgwZE1NMkxUMGJacmFxbVcza0dzK1NiZUlVVzZRMDdwbXhMcG1Jd3JBeAo5U0hqVUxqemZRZmNQNnRmNlA4eXJpeWtJbXlkaGs0bmtrZXpnQ0l3TStyRVFDOVBKTnE4OXNCWUlDcWs1VGowCmN2Q1FhcisycnNwcmR4STlCSFB2bTZxbjNDaVRJNnE1RDgxWnpKZTRsR0FWQ0M4RWVJOXRlamJpczNId0c1SWUKTmxiaUsxZjdWdUFpY2wrOUtKRGpwQnhZZU5HNy9RSURBUUFCbzJjd1pUQVBCZ05WSFJNQkFmOEVCVEFEQVFILwpNQTRHQTFVZER3RUIvd1FFQXdJQkJqQWRCZ05WSFE0RUZnUVUxWC84dGl2TGdEd3UxT2JhU2NicU9JY1FoVWN3Ckl3WURWUjBqQkJ3d0dxRVZwQk13RVRFUE1BMEdBMVVFQXd3R2R6VjJOWG8wZ2dFcU1BMEdDU3FHU0liM0RRRUIKQ3dVQUE0SUNBUUJPSXM1ZjZsMmkwbXdoUEdwakFTNzUzd0hrQUtBbVovbDBiTDA1eDFWc1BrZlg1d041MVNXRQpJS3ROQjMvdStVYTZCS3BjYzZ1RVNKd1hJVVJKRnVCMU1KNloxYzJ2Kzl4NGlMdzgxalVRTy9tU0RhTzRvREhEClJKWmUwQkZEV1hnakI1bjhNQWlWYWo0WGZJUVpFR21CZG4ySHV3WEh4NXR5U3JNOC9TV1l2NVR0ek9VdzlyZWYKckxxeXJQMWh5OG1vaXkrQm9iTEF5RkcyUjBPMmZZZDBnUzlPT2NxZ3RaNHhUMStpRTVMVFFwSkhUaWNORTFnNwpyczFJUnJNTWNRL3AyWGg0bzliNXF0dlNiQVdHb0tjdDFnVElJTzlwZktUTVVuUVUrc0xRd3F3SjBRcTZIbUZxCkpteFQvYmN5VS95MEtwMHNmWDdNQm5vVmM3d1FoWlc2cWhVS0ZOZjRuUy9KeC8vWHd2RG4raUMzTW1id2FUZFoKQnJQYzJ6MnF4WnovMWNXNnY2ZSt5cjFjM1BYYzZISWdSSXhhWHVWTEd2ZnlDY2JNaFBFVkVEUS9CUndrMjNscQpzL05Gc1RUWXZnQjlYSXZTT0FwdGlFRlFsNzRKVFU2WjFta2lQTVRNUXdtNGFZc2lqNytaTHpNRUdrbk9sVVdUCmtaRzRpTUlXKzJjcGN0cEFHV3pmZmVBTFR2ZHlDVkJWdjdHZ1VwWWYwTlRjSVByN0FNWE9lU2YrcWhmUHo1WkYKR2s5aEJIc2dSbGR5cWxKZ1JJcUJuaTZ6OGMwQk42UUtMbDJpMDVqcWxUN2VFalM0WHZhUnUxY0VQUndNZEJYSgp2eWhXOWNZdmh0SEl2aW0zOXRBTkNpK3dUR1ZMd3NRN0NEVmNhck5KRVJJSms2aUhPUXZicVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + KUBE_SERVER: https://w5v5z4.c1.gra9.k8s.ovh.net jobs: # Build job @@ -68,3 +71,48 @@ jobs: context: . push: true tags: 'h3m6q87t.gra7.container-registry.ovh.net/chill_website/web:${{ github.ref_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: chill-website + DEPLOYMENT: chill-website + CONTAINER: nginx + BASE_IMAGE: 'h3m6q87t.gra7.container-registry.ovh.net/chill_website/web' + TAG_IMAGE: '${{ steps.build-push.outputs.digest }}' + run: | + echo "deploy new tag: $TAG_IMAGE" + env + kubectl -n ${NAMESPACE} set image deployment/${DEPLOYMENT} ${CONTAINER}=${BASE_IMAGE}@${TAG_IMAGE}