add default image docker fallback #8

Open
qpismont wants to merge 1 commits from 1.2.1 into main
Owner
  • Add default docker image if project not contain devcontainer
- Add default docker image if project not contain devcontainer
qpismont added 1 commit 2026-09-22 22:58:04 +02:00
add default image docker fallback
ci/woodpecker/push/tests Pipeline was successful
e7b8048992
Author
Owner
@Herald
Herald left a comment
Collaborator

Review Feedback

3 issues found.

  • 1 bug
  • 1 performance
  • 1 maintainability

Summary

Le fallback d'image par défaut est bien intégré au parcours de création de sandbox, avec une gestion prudente des variables d'environnement non fiables, l'isolation réseau après les hooks et un contexte de build diffusé en flux. En revanche, le répertoire de workspace du fallback n'est pas garanti d'exister, la documentation donne un chemin différent, et les échecs précoces peuvent laisser des images construites dans le daemon.


Cost: $0.01688862

## Review Feedback ### 3 issues found. - 1 bug - 1 performance - 1 maintainability --- ### Summary Le fallback d'image par défaut est bien intégré au parcours de création de sandbox, avec une gestion prudente des variables d'environnement non fiables, l'isolation réseau après les hooks et un contexte de build diffusé en flux. En revanche, le répertoire de workspace du fallback n'est pas garanti d'exister, la documentation donne un chemin différent, et les échecs précoces peuvent laisser des images construites dans le daemon. --- ### Cost: $0.01688862
@@ -72,0 +71,4 @@
Docker-compatible socket. When the repository contains a
`.devcontainer/devcontainer.json` (or `.devcontainer.json`), Herald uses it;
otherwise it falls back to a default devcontainer that pulls `debian:stable-slim`
and runs the review in `/workspace`.
Collaborator

[maintainability] La documentation indique que le fallback s'exécute dans /workspace, alors que l'implémentation utilise /workspaces/workspace par défaut. Cette divergence rend les commandes et instructions d'utilisation incorrectes pour les consommateurs du fallback ; alignez la documentation et le code.

**[maintainability]** La documentation indique que le fallback s'exécute dans `/workspace`, alors que l'implémentation utilise `/workspaces/workspace` par défaut. Cette divergence rend les commandes et instructions d'utilisation incorrectes pour les consommateurs du fallback ; alignez la documentation et le code.
@@ -152,3 +160,3 @@
self.remote_user.clone(),
Some(network.clone()),
Some(image_tag),
owns_image.then_some(image),
Collaborator

[performance] Le tag d'une image construite n'est enregistré dans Container::owned_image qu'après la création, le démarrage et l'upload du workspace. Si le réseau, la création/le démarrage du container ou l'upload échoue avant cette ligne, l'image construite reste dans le daemon sans possibilité de nettoyage, ce qui laisse des images potentiellement volumineuses à chaque sandbox échouée. Nettoyez l'image dans chaque chemin d'erreur après le build, ou encapsulez sa propriété dans un garde-fou jusqu'à la création de Container.

**[performance]** Le tag d'une image construite n'est enregistré dans `Container::owned_image` qu'après la création, le démarrage et l'upload du workspace. Si le réseau, la création/le démarrage du container ou l'upload échoue avant cette ligne, l'image construite reste dans le daemon sans possibilité de nettoyage, ce qui laisse des images potentiellement volumineuses à chaque sandbox échouée. Nettoyez l'image dans chaque chemin d'erreur après le build, ou encapsulez sa propriété dans un garde-fou jusqu'à la création de `Container`.
@@ -198,0 +214,4 @@
container_env: HashMap::new(),
container_file_path: None,
remote_user: None,
workspace_folder: None,
Collaborator

[bug] L'image par défaut debian:stable-slim ne crée pas le répertoire /workspaces/workspace, qui est pourtant le chemin retourné par workspace_folder() lorsque cette valeur est absente. up() tente ensuite d'y téléverser le workspace et configure ce chemin comme répertoire de travail ; le fallback échouera donc probablement dès le démarrage ou l'upload. Il faut créer ce répertoire avant l'upload, ou choisir un chemin garanti d'exister comme /tmp/workspace.

**[bug]** L'image par défaut `debian:stable-slim` ne crée pas le répertoire `/workspaces/workspace`, qui est pourtant le chemin retourné par `workspace_folder()` lorsque cette valeur est absente. `up()` tente ensuite d'y téléverser le workspace et configure ce chemin comme répertoire de travail ; le fallback échouera donc probablement dès le démarrage ou l'upload. Il faut créer ce répertoire avant l'upload, ou choisir un chemin garanti d'exister comme `/tmp/workspace`.
All checks were successful
ci/woodpecker/push/tests Pipeline was successful
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin 1.2.1:1.2.1
git checkout 1.2.1
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: qpismont/herald#8