Aller au contenu

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.sh a déjà tourné — la config git globale du conteneur réécrit git@gitlab.com: en https://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.

  1. 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 (pour git push) et api (pour les commandes glab autres que le push).
  2. Lancer l'authentification interactive depuis le conteneur :

    glab auth login
    
  3. Répondre aux questions : instance gitlab.com, protocole HTTPS, coller le token quand il est demandé.

Usage courant — git push

Une fois glab authentifié, push direct sans configuration supplémentaire :

git push origin <branche>

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

git ls-remote origin HEAD

Doit retourner le SHA de la HEAD distante. Si ça réussit, push et fetch fonctionnent.

Troubleshooting

  • error: cannot run ssh ou Permission denied (publickey) : la réécriture HTTPS n'est pas active. Vérifier git config --global --get-regexp '^url\.' — la ligne url.https://gitlab.com/.insteadOf git@gitlab.com: doit apparaître.
  • fatal: Authentication failed : le token glab est absent ou expiré. Vérifier avec glab auth status ; si nécessaire, relancer glab auth login.