wrongmove/.drone.yml

165 lines
6.2 KiB
YAML
Raw Normal View History

2025-06-17 18:45:28 +00:00
kind: pipeline
type: kubernetes
2025-06-17 18:56:52 +00:00
name: frontend
2025-06-17 18:45:28 +00:00
concurrency:
limit: 1
timeout: 20
trigger:
branch:
2026-02-01 21:53:18 +00:00
- master
event:
- push
2025-06-17 18:45:28 +00:00
steps:
- name: Cache builder stage
image: plugins/docker
settings:
username: viktorbarzin
password:
from_secret: dockerhub-token
repo: viktorbarzin/immoweb
dockerfile: frontend/Dockerfile
context: frontend
target: builder
cache_from:
- viktorbarzin/immoweb:builder
tags:
- builder
2025-06-17 18:45:28 +00:00
- name: Build frontend image
image: plugins/docker
settings:
2026-02-01 21:53:18 +00:00
username: viktorbarzin
2025-06-17 18:45:28 +00:00
password:
from_secret: dockerhub-token
2025-06-17 18:56:52 +00:00
repo: viktorbarzin/immoweb
dockerfile: frontend/Dockerfile
context: frontend
cache_from:
- viktorbarzin/immoweb:builder
- viktorbarzin/immoweb:latest
tags:
- latest
- ${DRONE_BUILD_NUMBER}
2026-02-01 21:53:18 +00:00
2025-06-17 18:45:28 +00:00
- name: Update deployment
image: alpine
commands:
2026-02-01 21:53:18 +00:00
- apk add curl
- 'curl -s -X PATCH "https://kubernetes:6443/apis/apps/v1/namespaces/realestate-crawler/deployments/realestate-crawler-ui" -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" -H "Content-Type: application/json-patch+json" -k -d ''[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"viktorbarzin/immoweb:''"$DRONE_BUILD_NUMBER"''"}]'' | head'
2025-06-17 18:56:52 +00:00
- name: Wait for rollout
image: alpine
commands:
- apk add --no-cache curl jq
- >-
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token);
API="https://kubernetes:6443/apis/apps/v1/namespaces/realestate-crawler/deployments";
for DEPLOY in realestate-crawler-ui; do
echo "Waiting for $DEPLOY rollout...";
for i in $(seq 1 60); do
S=$(curl -sk -H "Authorization: Bearer $TOKEN" "$API/$DEPLOY");
DESIRED=$(echo "$S" | jq '.spec.replicas');
UPDATED=$(echo "$S" | jq '.status.updatedReplicas // 0');
READY=$(echo "$S" | jq '.status.readyReplicas // 0');
GEN=$(echo "$S" | jq '.metadata.generation');
OBS=$(echo "$S" | jq '.status.observedGeneration // 0');
if [ "$OBS" -ge "$GEN" ] && [ "$UPDATED" -eq "$DESIRED" ] && [ "$READY" -eq "$DESIRED" ]; then
echo "$DEPLOY rollout complete ($READY/$DESIRED ready)";
break;
fi;
echo " $DEPLOY: $READY/$DESIRED ready, $UPDATED updated (attempt $i/60)";
sleep 5;
done;
if [ "$i" -eq 60 ] && { [ "$READY" -ne "$DESIRED" ] || [ "$UPDATED" -ne "$DESIRED" ]; }; then
echo "ERROR: $DEPLOY rollout timed out after 300s"; exit 1;
fi;
done
2025-06-17 18:56:52 +00:00
---
kind: pipeline
type: kubernetes
name: api
concurrency:
limit: 1
timeout: 20
trigger:
branch:
2026-02-01 21:53:18 +00:00
- master
event:
- push
2025-06-17 18:56:52 +00:00
steps:
- name: Cache builder stage
image: plugins/docker
settings:
username: viktorbarzin
password:
from_secret: dockerhub-token
repo: viktorbarzin/realestatecrawler
dockerfile: Dockerfile
context: .
target: builder
cache_from:
- viktorbarzin/realestatecrawler:builder
tags:
- builder
2026-02-01 21:53:18 +00:00
- name: Build API image
2025-06-17 18:56:52 +00:00
image: plugins/docker
settings:
2026-02-01 21:53:18 +00:00
username: viktorbarzin
2025-06-17 18:56:52 +00:00
password:
from_secret: dockerhub-token
repo: viktorbarzin/realestatecrawler
dockerfile: Dockerfile
context: .
cache_from:
- viktorbarzin/realestatecrawler:builder
- viktorbarzin/realestatecrawler:latest
tags:
- latest
- ${DRONE_BUILD_NUMBER}
2026-02-01 21:53:18 +00:00
2025-06-17 18:56:52 +00:00
- name: Update deployment
image: alpine
commands:
2026-02-01 21:53:18 +00:00
- apk add curl
- 'curl -s -X PATCH "https://kubernetes:6443/apis/apps/v1/namespaces/realestate-crawler/deployments/realestate-crawler-api" -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" -H "Content-Type: application/json-patch+json" -k -d ''[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"viktorbarzin/realestatecrawler:''"$DRONE_BUILD_NUMBER"''"}]'' | head'
- 'curl -s -X PATCH "https://kubernetes:6443/apis/apps/v1/namespaces/realestate-crawler/deployments/realestate-crawler-celery" -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" -H "Content-Type: application/json-patch+json" -k -d ''[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"viktorbarzin/realestatecrawler:''"$DRONE_BUILD_NUMBER"''"}]'' | head'
- 'curl -s -X PATCH "https://kubernetes:6443/apis/apps/v1/namespaces/realestate-crawler/deployments/realestate-crawler-celery-beat" -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" -H "Content-Type: application/json-patch+json" -k -d ''[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"viktorbarzin/realestatecrawler:''"$DRONE_BUILD_NUMBER"''"}]'' | head'
- name: Wait for rollout
image: alpine
commands:
- apk add --no-cache curl jq
- >-
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token);
API="https://kubernetes:6443/apis/apps/v1/namespaces/realestate-crawler/deployments";
for DEPLOY in realestate-crawler-api realestate-crawler-celery realestate-crawler-celery-beat; do
echo "Waiting for $DEPLOY rollout...";
for i in $(seq 1 60); do
S=$(curl -sk -H "Authorization: Bearer $TOKEN" "$API/$DEPLOY");
DESIRED=$(echo "$S" | jq '.spec.replicas');
UPDATED=$(echo "$S" | jq '.status.updatedReplicas // 0');
READY=$(echo "$S" | jq '.status.readyReplicas // 0');
GEN=$(echo "$S" | jq '.metadata.generation');
OBS=$(echo "$S" | jq '.status.observedGeneration // 0');
if [ "$OBS" -ge "$GEN" ] && [ "$UPDATED" -eq "$DESIRED" ] && [ "$READY" -eq "$DESIRED" ]; then
echo "$DEPLOY rollout complete ($READY/$DESIRED ready)";
break;
fi;
echo " $DEPLOY: $READY/$DESIRED ready, $UPDATED updated (attempt $i/60)";
sleep 5;
done;
if [ "$i" -eq 60 ] && { [ "$READY" -ne "$DESIRED" ] || [ "$UPDATED" -ne "$DESIRED" ]; }; then
echo "ERROR: $DEPLOY rollout timed out after 300s"; exit 1;
fi;
done