Rollback
Escopo: deploy. O rollback é por serviço: volta ao deployment anterior do serviço, com as variáveis resolvidas daquela versão (não as atuais).
1. Escolher o deploy de destino
Seção intitulada “1. Escolher o deploy de destino”Liste os deploys do serviço e pegue o id de um que esteja ready e seja anterior ao problema.
SUF=$(date +%s)-$RANDOMH="Authorization: Bearer $NEBULAR_TOKEN"P=$(curl -sS -X POST "$NEBULAR_API/v1/projects" -H "$H" -H "Content-Type: application/json" \ -H "Idempotency-Key: rb-proj-$SUF" -d "{\"name\": \"rb-$SUF\"}" | jq -r .id)S=$(curl -sS -X POST "$NEBULAR_API/v1/projects/$P/services" -H "$H" -H "Content-Type: application/json" \ -H "Idempotency-Key: rb-svc-$SUF" \ -d '{"name": "app", "kind": "app", "visibility": "private", "source": {"type": "image", "ref": "ghcr.io/org/app:1.0"}}' | jq -r .id)curl -sS "$NEBULAR_API/v1/projects/$P/services/$S/deployments" -H "$H"{"items": [], "next_cursor": null, "has_more": false}Em um serviço com histórico, extraia os pares com jq -r '.items[] | "\(.id)\t\(.status)"'.
2. Reverter
Seção intitulada “2. Reverter”SUF=$(date +%s)-$RANDOMH="Authorization: Bearer $NEBULAR_TOKEN"P=$(curl -sS -X POST "$NEBULAR_API/v1/projects" -H "$H" -H "Content-Type: application/json" \ -d "{\"name\": \"rb2-$SUF\"}" | jq -r .id)S=$(curl -sS -X PATCH "$NEBULAR_API/v1/projects/$P/services/web" -H "$H" -H "Content-Type: application/json" \ -d '{"source": {"type": "image", "ref": "ghcr.io/org/app:1.0"}}' | jq -r .id)D=$(curl -sS -X POST "$NEBULAR_API/v1/projects/$P/services/$S/deployments" -H "$H" \ -H "Content-Type: application/json" -d '{}' | jq -r .id)
# o destino do rollback precisa ter terminado com sucesso (ready)delay=2for i in $(seq 1 40); do st=$(curl -sS "$NEBULAR_API/v1/projects/$P/services/$S/deployments/$D" -H "$H" | jq -r .status) echo "tentativa $i: $st" case "$st" in ready) break ;; failed|blocked|canceled|superseded) echo "deploy terminou em $st" >&2; exit 1 ;; esac sleep "$delay"; delay=$(( delay * 2 > 30 ? 30 : delay * 2 ))done[ "$st" = ready ]
curl -sS -X POST "$NEBULAR_API/v1/projects/$P/services/$S/deployments/$D/rollback" \ -H "$H" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: rollback-$D" -d '{}'{"id": "01j9zkbssrj776q2jrwy8cf13v", "status": "queued"}Acompanhe o novo deploy com polling até ready.
Se algo falhar
Seção intitulada “Se algo falhar”| Resposta | O que fazer |
|---|---|
403 forbidden |
Falta o escopo deploy. |
404 not_found |
Deploy, serviço ou projeto inexistente ou fora do seu acesso. |
409 nothing_to_rollback |
O deploy de destino não terminou com sucesso (ready). Escolha outro ou espere. |
409 deploy_in_progress |
Há um deploy em andamento; espere terminar e tente de novo. |
deploy do rollback failed |
Leia o log de build; se o problema era dado e não código, o rollback não o desfaz (migrations: veja Migrações). |