Skip to content

fix(server-nestjs): purge Harbor repositories before deleting project - #2605

Draft
shikanime wants to merge 1 commit into
mainfrom
fix/harbor-delete-purge-repos
Draft

fix(server-nestjs): purge Harbor repositories before deleting project#2605
shikanime wants to merge 1 commit into
mainfrom
fix/harbor-delete-purge-repos

Conversation

@shikanime

Copy link
Copy Markdown
Member

Issues liées

Issues numéro: #2516


Quel est le comportement actuel ?

Lors de l'archivage d'un projet, RegistryService.deleteProject supprime le projet Harbor directement, sans purger au préalable ses dépôts. Harbor refuse de supprimer un projet non vide et répond 412 Precondition Failed, ce qui fait échouer le hook project.delete pour tout projet ayant déjà reçu au moins une image (constaté en production le 19/08/2026 sur le projet demoargoref).

Le client RegistryClientService n'exposait ni listRepositories ni deleteRepository, si bien que la purge n'avait pas été reprise lors du portage depuis le plugin legacy.

Quel est le nouveau comportement ?

RegistryClientService expose désormais listRepositories et deleteRepository. deleteProject purge l'ensemble des dépôts projet (paginés, comme le faisait le plugin legacy) avant de supprimer le projet Harbor. Le hook project.delete peut ainsi aboutir même pour un projet contenant des images.

Cette PR introduit-elle un breaking change ?

Non.

Autres informations

Tests ajoutés :

  • client — vérification de la forme HTTP de listRepositories et deleteRepository ;
  • service — purge des dépôts avant suppression, et reprise en KO de la réponse 412 Harbor.

Refs #2516

@github-actions github-actions Bot added the built label Aug 26, 2026

@shikanime shikanime left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict : Approuvé (en commentaire : PR propriétaire, approbation GitHub impossible via l API) — PR propre, correcte, couvre le cas de production.

  • registry-client.service.ts:58-69 — [✨ Éloge] listRepositories/deleteRepository exposent exactement ce que le portage legacy avait omis ; pagination page_size + page cohérente avec ROBOT_LIST_PAGE_SIZE.
  • registry.service.ts:305-323 — [✨ Éloge] deleteRepositories purge toutes les pages avant deleteProjectByName, ce qui règle le 412 Precondition Failed de Harbor (#2516, constaté en prod le 19/08). La condition d arrêt (data.length < ROBOT_LIST_PAGE_SIZE) est correcte.
  • registry.service.spec.ts / registry-client.service.spec.ts — [✨ Éloge] Tests de purge (2 dépôts) et de rejet 412 (KO) couvrent les deux branches critiques.

Aucun point bloquant. Fusionnable telle quelle (hors rebase éventuelle sur main déjà à jour).

RegistryService.deleteProject removed the Harbor project directly, without
purging its repositories first. Harbor refuses to delete a non-empty project
and answers 412 Precondition Failed, so the project.delete hook failed for
every console project that had received at least one image (observed in
production on 2026-08-19, project demoargoref).

The legacy Fastify plugin purged repositories (paginated on x-total-count)
before deleteProject. This restores that behavior: RegistryClientService now
exposes listRepositories / deleteRepository, and deleteProject purges all
repositories across pages before issuing the project deletion.

Refs #2516

Signed-off-by: William Phetsinorath <william.phetsinorath-open@interieur.gouv.fr>
Change-Id: If4f5a5d87ae3ce3899e79f66c24b41556a6a6964
@cloud-pi-native-sonarqube

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant