add default image docker fallback #8

Merged
qpismont merged 5 commits from 1.2.1 into main 2026-09-29 20:50:36 +02:00
Owner
  • Add default docker image if project not contain devcontainer
  • Improve cleanup if container sandbox fail
- Add default docker image if project not contain devcontainer - Improve cleanup if container sandbox fail
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
README.md Outdated
@@ -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`.
qpismont added 1 commit 2026-09-29 18:30:48 +02:00
improve cleanup if container setup fail
ci/woodpecker/push/tests Pipeline was successful
4999091f32
qpismont added 1 commit 2026-09-29 18:42:49 +02:00
Author
Owner
@Herald
Herald left a comment
Collaborator

Review Feedback

1 issues found.

  • 1 bug

Summary

Le repli vers une image par défaut est bien intégré, avec un nettoyage des ressources en cas d'échec, une validation du workspace et une bonne protection contre l'exposition de variables d'environnement secrètes. En revanche, le chemin de workspace choisi n'existe pas dans debian:stable-slim, ce qui rend le nouveau scénario de repli inutilisable.


Cost: $0.015564419999999999

## Review Feedback ### 1 issues found. - 1 bug --- ### Summary Le repli vers une image par défaut est bien intégré, avec un nettoyage des ressources en cas d'échec, une validation du workspace et une bonne protection contre l'exposition de variables d'environnement secrètes. En revanche, le chemin de workspace choisi n'existe pas dans `debian:stable-slim`, ce qui rend le nouveau scénario de repli inutilisable. --- ### Cost: $0.015564419999999999
@@ -198,0 +227,4 @@
fn default() -> Self {
Self {
name: Some("generic-devcontainer".to_string()),
image: Some(DEFAULT_IMAGE_NAME.to_string()),
Collaborator

[bug] L'image de repli debian:stable-slim ne crée pas le répertoire /workspace, alors que workspace_folder() retourne cette valeur par défaut et que le conteneur est créé avec ce répertoire comme working_dir (lignes 124-125). Le démarrage échouera avec une erreur de répertoire de travail inexistant, avant même la copie du dépôt. Il faut créer le répertoire dans l'image de repli ou démarrer temporairement avec un répertoire existant (par exemple /) afin de créer /workspace avant de l'utiliser.

**[bug]** L'image de repli `debian:stable-slim` ne crée pas le répertoire `/workspace`, alors que `workspace_folder()` retourne cette valeur par défaut et que le conteneur est créé avec ce répertoire comme `working_dir` (lignes 124-125). Le démarrage échouera avec une erreur de répertoire de travail inexistant, avant même la copie du dépôt. Il faut créer le répertoire dans l'image de repli ou démarrer temporairement avec un répertoire existant (par exemple `/`) afin de créer `/workspace` avant de l'utiliser.
qpismont added 1 commit 2026-09-29 19:49:36 +02:00
Add roadmap
ci/woodpecker/push/tests Pipeline was successful
9f03384bc9
qpismont added 1 commit 2026-09-29 20:36:14 +02:00
rebranding herald => steep
ci/woodpecker/push/tests Pipeline was successful
f5f0d3999e
qpismont merged commit c546707f72 into main 2026-09-29 20:50:36 +02:00
qpismont deleted branch 1.2.1 2026-09-29 20:50:36 +02:00
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/steep#8