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
Je sais que c'est vieux mais c'est comme ça que vous le faites:
git clone https://oauth2:[email protected]/vendor/package.git
Vous pouvez le faire comme ça:
git clone https://gitlab-ci-token:<private token>@git.example.com/myuser/myrepo.git
Le gitlab a beaucoup de jetons:
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.
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.
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
Où <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
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.
À 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 .
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.
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"
Je suis allé à SSH en utilisant le paramètre de déploiement par projet (lecture seule)
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:
echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
$CI_JOB_TOKEN
dans le fichier!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.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.