usando el token de gitlab para clonar sin autenticación

139

Quiero clonar el repositorio de gitlab sin solicitar mi script de automatización, utilizando mi token privado de mi cuenta de gitlab.

¿Alguien puede proporcionarme una muestra?

Sé que puedo hacerlo con usuario y contraseña:

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

y sé que es posible con la tecla ssh

pero, ambas opciones no son suficientes

Muky
fuente
21
git clone https://<token-name>:<token>@gitlaburl
Kinght 金
1
@ Kinging 金 ¡¡Solo tu comando funcionó !!. Muchas gracias :-)
Hussain K

Respuestas:

195

Sé que esto es viejo, pero así es como lo haces:

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

Roshan Gautam
fuente
3
Esto funcionó para mí en GitLab 8.5.7 Enterprise Edition.
Ben Patterson
1
Funciona aquí (GitLab Community Edition 8.16.5 064dab1)
Martin M.
55
¡Funciona! Me pregunto por qué en gitlab.com en los detalles del proyecto no dan la sintaxis completa del comando: - ((
FRa
Funciona para Gitlab 10.4.4 pero necesitas hacer un apitoken. A read_usersolo puede leer repositorios bajo/users
Kurt
2
¿Cómo usar esto ssh?
hemu
41

Puedes hacerlo así:

git clone https://gitlab-ci-token:<private token>@git.example.com/myuser/myrepo.git
Tim Hughes
fuente
2
esto parece correcto pero siempre falla la autenticación para mí :(
Randyaa
lo mismo para mí: fatal: falló la autenticación para
vogash
44
<token privado> debe ser reemplazado por el token del corredor de CI, no el token privado de la cuenta.
Kip
2
Creo que también deberías poder usar tu token personal correctamente @tim
Gobi Dasu
Puede usar el token ci específico del proyecto (habilitar compilaciones, luego ir a la configuración del proyecto / corredores).
BM5k
41

El gitlab tiene muchos tokens:

  • Token privado
  • Token de acceso personal
  • Token de ejecución de CI / CD

Probé solo el token de acceso personal usando GitLab Community Edition 10.1.2 , el ejemplo:

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

o usando nombre de usuario y contraseña:

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

o ingresando su contraseña:

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

Pero el token privado parece que no puede funcionar.

xuanyuanaosheng
fuente
55
Tenga en cuenta que los tokens privados se eliminaron a favor de los tokens de acceso personal en GitLab 10.2: about.gitlab.com/2017/09/22/gitlab-10-0-released/…
David Planella
26

Use el token en lugar de la contraseña (el token debe tener un alcance "api" para permitir la clonación):

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

Probado contra 11.0.0-ee.

Zbyněk Winkler
fuente
Si, funciona para mi. El token se puede usar como contraseña.
cwtuan
1
Para las personas que buscan en Google esto: esto es lo que desea si usa tokens de acceso personal a través de HTTPS en gitlab.com.
Adam Baxter
14

Puede usar el token de los corredores para las canalizaciones de CI / CD de su repositorio de GitLab.

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

Dónde <runners token>se puede obtener de:

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

o haciendo clic en Settings icon -> CI/CD Pipeliney busque el token Runners en la página

Captura de pantalla de la ubicación del token de los corredores: Captura de pantalla de la ubicación del token de los corredores

Enlai Chu
fuente
55
Nota: El token de los corredores ha quedado en desuso ahora.
Arihant Godha
@ArihantGodha fuente?
miq
2
@miq ver aquí (a partir de> = 8.12)
Yan Foto
1
Este formato ahora está en desuso, consulte stackoverflow.com/questions/25409700/…
Muhan Alim
No funciona desde el interior de la tubería de GitLab CI. Pero esta línea funciona:git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Slawa
12

Si ya tiene un repositorio y acaba de cambiar la forma en que realiza la autenticación a MFA, puede cambiar su remote originURI de HTTP para usar su nuevo token de API de la siguiente manera:

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

Y no necesitará volver a clonar el repositorio en absoluto.

Roger Barreto
fuente
3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.gitTambién funcionó para mí, ¡gracias! Contestaré este hilo con mi solución correcta.
Rutrus
10

Una forma posible es usar un token de implementación ( https://docs.gitlab.com/ee/user/project/deploy_tokens ). Después de crear el token, use:

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

como se menciona en el enlace de arriba.

shahar taite
fuente
Tampoco parece estar funcionando con npm install en un nuevo contenedor acoplable, por defecto es ssh.
Vix
Realmente no funciona.
rios0rios0
10

A partir de ahora 8.12, la clonación usando el HTTPStoken + runner ya no es compatible, como se menciona aquí :

En 8.12 mejoramos los permisos de compilación. Poder clonar proyectos usando el token de los corredores no es compatible de ahora en adelante (en realidad funcionaba por coincidencia y nunca fue una característica completa, por lo que cambiamos eso en 8.12). Deberías usar el token de compilación en su lugar.

Esto está ampliamente documentado aquí: https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .

Yan Foto
fuente
1
No es posible usar tokens de corredores pero está usando tokens de acceso personal. Por favor vea mi respuesta: stackoverflow.com/questions/25409700/…
Muhan Alim
@MuhanAlim No recomendaría a nadie que exponga toda su cuenta utilizando tokens de acceso. ¡Es por eso que se llaman tokens de acceso privado !
Yan Foto
La pregunta no menciona nada acerca de hacer pública la clave, solo cómo usar la clave en lugar de un nombre de usuario y contraseña para la clonación. Pero ese es un buen punto, no recomendaría que nadie use las teclas en ningún lugar que sea público.
Muhan Alim
1
El script de automatización implica que todo el procedimiento no se ejecuta localmente. Probablemente en algún lugar donde otros también tengan acceso.
Yan Foto
8

Dentro de una tubería GitLab CI, la CI_JOB_TOKENvariable de entorno funciona para mí:

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

Fuente: Documentos de Gitlab

Por cierto, establecer esta variable .gitlab-ci.ymlayuda a depurar errores.

variables:
    CI_DEBUG_TRACE: "true"
Slawa
fuente
2

Fui SSH usando la configuración de claves de implementación por proyecto (solo lectura)

Laurent
fuente
Yo también porque estoy usando GIT_STRATEGY: ninguno.
Aalex Gabi
1

Para hacerme feliz en el futuro: RTFM : no use el gitlab-ci-token en absoluto, sino el .netrcarchivo.

Hay un par de puntos importantes:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. ¡No olvides reemplazar "gitlab.com" por tu URL!
  3. No intente ser inteligente y cree el archivo .netrc directamente, ¡gitlab no reemplazará $CI_JOB_TOKENel archivo dentro del archivo!
  4. Uso https://gitlab.com/whatever/foobar.com- no ssh://git@foobar, no git+ssh://, no git+https://. Tampoco necesita ningún elemento de CI-TOKEN en la URL.
  5. Asegúrate de que puedas git clone [url from step 4]

Antecedentes: tengo

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

cuando intenté hacer que Ansible + Gitlab + Docker funcionara como lo imagino. Ahora funciona.

Martin Thoma
fuente
1

No es necesario personalizar la URL. Solo use una configuración git para tokens gitlab como

git config --global gitlab.accesstoken {TOKEN_VALUE}

descripción extendida aquí

Bizmate
fuente
1

muchas respuestas anteriores están cerca, pero obtienen una usernamesintaxis ~ para los deploytokens incorrectos. Hay otros tipos de tokens, pero esto deploy tokenes lo que ofrece gitlab (alrededor de 2020+ al menos) por repositorio para permitir un acceso personalizado, incluido solo lectura.

de a repository(o group), encuentre el settings-> repository-> deploy tokens. Crea uno nuevo. A usernamey tokencampo son creados. El usernameNO es un valor fijo por defecto; Es exclusivo de este token.

git clone https://<your_deploy_token_username>:<the_token>@gitlab.com/your/repo/path.git

probado en gitlab.com cuenta pública, gratuita.

Miguel
fuente