diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 3cbe1fd..39d6066 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -4,37 +4,92 @@ on: push: branches: - main + workflow_dispatch: + +env: + IMAGE: registry.alocoq.fr/coqresearch:latest jobs: - build: + deploy: runs-on: native - timeout-minutes: 15 + timeout-minutes: 30 steps: - - name: Build Jekyll in Kubernetes job - run: | - cat <<'EOF' | kubectl apply -f - - apiVersion: batch/v1 - kind: Job - metadata: - name: jekyll-build - namespace: ci - spec: - backoffLimit: 0 - template: - spec: - restartPolicy: Never - containers: - - name: jekyll - image: ruby:3.3-alpine - command: - - sh - - -c - - | - apk add --no-cache git build-base - git clone --depth 1 https://git.alocoq.fr/alois/CoqResearch.git /work - cd /work - bundle install - bundle exec jekyll build + - name: Build and push image with Kaniko + run: | + cat <<'EOF' | kubectl apply -f - + apiVersion: batch/v1 + kind: Job + metadata: + name: coqresearch-kaniko + namespace: ci + spec: + backoffLimit: 0 + template: + spec: + restartPolicy: Never + initContainers: + - name: prepare + image: ruby:3.3-alpine + command: + - sh + - -c + - | + set -eux + apk add --no-cache git build-base - EOF \ No newline at end of file + git clone --depth 1 https://git.alocoq.fr/alois/CoqResearch.git /work + cd /work + + bundle install + bundle exec jekyll build + + mkdir -p /workspace/image + cp -a /work/_site/. /workspace/image/ + + cat > /workspace/image/Dockerfile <<'DOCKER' + FROM nginx:alpine + COPY . /usr/share/nginx/html/ + DOCKER + volumeMounts: + - name: workspace + mountPath: /workspace + + containers: + - name: kaniko + image: gcr.io/kaniko-project/executor:debug + args: + - --context=dir:///workspace/image + - --dockerfile=/workspace/image/Dockerfile + - --destination=registry.alocoq.fr/coqresearch:latest + volumeMounts: + - name: workspace + mountPath: /workspace + + volumes: + - name: workspace + emptyDir: {} + EOF + + - name: Wait for build + run: | + kubectl -n ci wait --for=condition=complete job/coqresearch-kaniko --timeout=1800s + + - name: Show logs + if: always() + run: | + kubectl -n ci logs job/coqresearch-kaniko -c prepare || true + kubectl -n ci logs job/coqresearch-kaniko -c kaniko || true + + - name: Deploy + run: | + kubectl -n research set image deployment/research-nginx \ + research-nginx=registry.alocoq.fr/coqresearch:latest + + kubectl -n research rollout restart deployment/research-nginx + kubectl -n research rollout status deployment/research-nginx + + - name: Cleanup + if: always() + run: | + kubectl -n ci delete job coqresearch-kaniko --ignore-not-found=true \ No newline at end of file