diff --git a/.gitea/workflows/deploy-verso.yml b/.gitea/workflows/deploy-verso.yml new file mode 100644 index 0000000000..21f480379b --- /dev/null +++ b/.gitea/workflows/deploy-verso.yml @@ -0,0 +1,95 @@ +name: Build and Deploy Verso + +on: + push: + branches: + - main + workflow_dispatch: + +env: + IMAGE: registry.alocoq.fr/verso:latest + REPO_URL: https://git.alocoq.fr/alois/verso.git + +jobs: + deploy: + runs-on: native + timeout-minutes: 90 + + steps: + - name: Build and push image with BuildKit + run: | + kubectl -n ci delete job verso-buildkit --ignore-not-found=true + + cat <<'EOF' | kubectl apply -f - + apiVersion: batch/v1 + kind: Job + metadata: + name: verso-buildkit + namespace: ci + spec: + backoffLimit: 0 + template: + spec: + restartPolicy: Never + + initContainers: + - name: prepare + image: alpine/git:latest + command: + - sh + - -c + - | + set -eux + git clone --depth 1 https://git.alocoq.fr/alois/verso.git /workspace/repo + volumeMounts: + - name: workspace + mountPath: /workspace + + containers: + - name: buildkit + image: moby/buildkit:latest + securityContext: + privileged: true + command: + - sh + - -c + - | + set -eux + + buildctl-daemonless.sh build \ + --frontend=dockerfile.v0 \ + --local context=/workspace/repo \ + --local dockerfile=/workspace/repo/server-ce \ + --opt filename=Dockerfile \ + --output type=image,name=registry.alocoq.fr/verso:latest,push=true + volumeMounts: + - name: workspace + mountPath: /workspace + + volumes: + - name: workspace + emptyDir: {} + EOF + + - name: Wait for build + run: | + kubectl -n ci wait --for=condition=complete job/verso-buildkit --timeout=5400s + + - name: Show logs + if: always() + run: | + kubectl -n ci logs job/verso-buildkit -c prepare || true + kubectl -n ci logs job/verso-buildkit -c buildkit || true + + - name: Deploy + run: | + kubectl -n test set image deployment/verso \ + verso=registry.alocoq.fr/verso:latest + + kubectl -n test rollout restart deployment/verso + kubectl -n test rollout status deployment/verso + + - name: Cleanup + if: always() + run: | + kubectl -n ci delete job verso-buildkit --ignore-not-found=true \ No newline at end of file