Pousser depuis le devcontainer
Pousser sur GitLab depuis le Dev Container¶
Vous travaillez dans le Dev Container Kirexo et vous voulez git push votre branche sur GitLab. Le conteneur n'embarque pas openssh-client par choix de design (isolation des credentials de l'hôte), donc tout passe par HTTPS authentifié via le token stocké par glab. Cette recette explique comment configurer l'authentification la première fois, puis comment pousser au quotidien.
Prérequis¶
- Vous êtes dans le Dev Container (cf. le tutoriel PHPStorm).
post-create.sha déjà tourné — la config git globale du conteneur réécritgit@gitlab.com:enhttps://gitlab.com/et délègue l'authentification àglab auth git-credential.
Première utilisation — authentifier glab¶
À faire une seule fois dans la vie du conteneur. Le token est stocké dans /config/glab-cli/config.yml, sur un volume persistant qui survit aux restart mais pas aux rebuilds — il faudra rejouer l'étape après un rebuild.
- Créer un Personal Access Token sur GitLab : Settings → Access Tokens (gitlab.com/-/user_settings/personal_access_tokens). Cocher au minimum les scopes
write_repository(pourgit push) etapi(pour les commandesglabautres que le push). -
Lancer l'authentification interactive depuis le conteneur :
-
Répondre aux questions : instance
gitlab.com, protocoleHTTPS, coller le token quand il est demandé.
Usage courant — git push¶
Une fois glab authentifié, push direct sans configuration supplémentaire :
La réécriture insteadOf transforme à la volée le remote SSH versionné dans .git/config en URL HTTPS, et le credential helper injecte le token stocké par glab. Aucun mot de passe demandé.
Vérification¶
Doit retourner le SHA de la HEAD distante. Si ça réussit, push et fetch fonctionnent.
Troubleshooting¶
error: cannot run sshouPermission denied (publickey): la réécriture HTTPS n'est pas active. Vérifiergit config --global --get-regexp '^url\.'— la ligneurl.https://gitlab.com/.insteadOf git@gitlab.com:doit apparaître.fatal: Authentication failed: le tokenglabest absent ou expiré. Vérifier avecglab auth status; si nécessaire, relancerglab auth login.