web-dev-qa-db-fra.com

utiliser le jeton gitlab pour cloner sans authentification

Je souhaite cloner le référentiel gitlab sans demander mon script d'automatisation, en utilisant mon jeton privé à partir de mon compte gitlab.

Quelqu'un peut-il me fournir un échantillon?

Je sais que je peux le faire avec un utilisateur et un mot de passe:

git clone https://" + user + ":" + password + "@" + gitlaburl;

et je sais qu'il est possible avec la clé SSH

mais, les deux options ne sont pas suffisantes

103
Muky

Je sais que c'est vieux mais c'est comme ça que vous le faites:

git clone https://oauth2:[email protected]/vendor/package.git

132
Roshan Gautam

Vous pouvez le faire comme ça:

git clone https://gitlab-ci-token:<private token>@git.example.com/myuser/myrepo.git
34
Tim Hughes

Le gitlab a beaucoup de jetons:

  • Jeton privé
  • Jeton d'accès personnel
  • Jeton exécutant CI/CD

J'ai testé uniquement le jeton d'accès personnel à l'aide de ( GitLab Community Edition 10.1.2 , l'exemple suivant:

git clone https://gitlab-ci-token:${Personal Access Tokens}@gitlab.com/username/myrepo.git


git clone https://oauth2:${Personal Access Tokens}@gitlab.com/username/myrepo.git

ou en utilisant le nom d'utilisateur et mot de passe:

git clone https://${username}:${password}@gitlab.com/username/myrepo.git

ou en entrant votre mot de passe:

git clone https://${username}@gitlab.com/username/myrepo.git

Mais le jeton privé semble ne peut pas fonctionner.

24
xuanyuanaosheng

Utilisez le jeton au lieu du mot de passe (le jeton doit avoir une étendue "api" pour que le clone soit autorisé):

git clone https://username:[email protected]/user/repo.git

Testé contre 11.0.0-ee.

17
Zbyněk Winkler

Vous pouvez utiliser le jeton Runners pour les pipelines CI/CD de votre référentiel GitLab.

git clone https://gitlab-ci-token:<runners token>@git.example.com/myuser/myrepo.git

<runners token> peut être obtenu auprès de:

git.example.com/myuser/myrepo/pipelines/settings

ou en cliquant sur le Settings icon -> CI/CD Pipeline et cherchez le jeton de coureur sur la page

Capture d'écran de l'emplacement du jeton des coureurs: Screenshot of the runners token location

13
Enlai Chu

Si vous avez déjà un référentiel et que vous venez de changer votre méthode d'authentification à MFA, vous pouvez changer votre remote Origin HTTP URI pour utiliser votre nouveau jeton api comme suit:

git remote set-url Origin https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.git

Et vous n'aurez pas besoin de re-cloner le référentiel.

8
Roger Barreto

À partir de 8.12, le clonage à l'aide de HTTPS + jeton n'est plus pris en charge, comme indiqué ici :

En 8.12, nous avons amélioré les autorisations de construction. Le fait de pouvoir cloner un projet à l'aide de jetons runners n'est plus pris en charge à présent (il fonctionnait par hasard et n'a jamais été une fonctionnalité à part entière, nous l'avons donc modifiée en 8.12). Vous devriez utiliser le jeton de construction à la place.

Ceci est largement documenté ici - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .

8
Yan Foto

Une solution possible consiste à utiliser un jeton de déploiement ( https://docs.gitlab.com/ee/user/project/deploy_tokens ). Après avoir créé le jeton, utilisez:

git clone https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git 

comme mentionné dans le lien ci-dessus.

6
shahar taite

Dans un pipeline GitLab CI, la variable d'environnement CI_JOB_TOKEN fonctionne pour moi:

git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...

Source: Docs Gitlab

En passant, définir cette variable dans .gitlab-ci.yml permet de déboguer les erreurs.

variables:
    CI_DEBUG_TRACE: "true"
5
Slawa

Je suis allé à SSH en utilisant le paramètre de déploiement par projet (lecture seule)

1
Laurent

Pour rendre mon avenir heureux: RTFM - n'utilisez pas du tout le gitlab-ci-token, mais le fichier .netrc.

Il y a quelques points importants:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. N'oubliez pas de remplacer "gitlab.com" par votre URL!
  3. N'essayez pas d'être intelligent et créez directement le fichier .netrc - gitlab ne remplacera pas le $CI_JOB_TOKEN dans le fichier!
  4. Utilisez https://gitlab.com/whatever/foobar.com - pas ssh://git@foobar, pas git+ssh://, pas git+https://. Vous n'avez également pas besoin de trucs CI-TOKEN dans l'URL.
  5. Assurez-vous que vous pouvez git clone [url from step 4]

Contexte: j'ai eu

fatal: could not read Username for 'https://gitlab.mycompany.com': No such device or address

quand j'ai essayé de faire fonctionner Ansible + Gitlab + Docker comme je l'imagine. Maintenant ça marche.

0
Martin Thoma