usando il token gitlab per clonare senza autenticazione


139

Voglio clonare il repository gitlab senza richiedere il mio script di automazione, usando il mio token privato dal mio account gitlab.

Qualcuno può fornirmi un campione?

So di poterlo fare con utente e password:

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

e so che è possibile con il tasto ssh

ma entrambe le opzioni non sono sufficienti


21
git clone https://<token-name>:<token>@gitlaburl
Kinght 金

1
@Kinght 金 Solo il tuo comando ha funzionato !!. Grazie mille :-)
Hussain K

Risposte:


195

So che è vecchio ma è così che lo fai:

git clone https://oauth2:ACCESS_TOKEN@somegitlab.com/vendor/package.git


3
Questo ha funzionato per me su GitLab 8.5.7 Enterprise Edition.
Ben Patterson,

1
Funziona qui (GitLab Community Edition 8.16.5 064dab1)
Martin M.

5
Funziona! Mi chiedo perché su gitlab.com sui dettagli del progetto non forniscano la sintassi completa del comando: - ((
FRa

Funziona con Gitlab 10.4.4 ma devi creare un apitoken. A read_userpuò solo leggere repository sotto/users
Kurt

2
Come usarlo ssh?
hemu

41

Puoi farlo in questo modo:

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

2
questo sembra giusto ma fallisce sempre l'autenticazione per me :(
Randyaa

lo stesso per me: fatale: autenticazione fallita per
vogash

4
<token privato> deve essere sostituito con il token del corridore CI, non con il token privato dell'account.
Kip

2
penso che dovresti anche essere in grado di usare il tuo token personale proprio @tim
Gobi Dasu,

È possibile utilizzare il token ci specifico del progetto (abilitare le build, quindi andare alla configurazione del progetto / corridori).
BM5k,

41

Il gitlab ha molti token:

  • Token privato
  • Token di accesso personale
  • Token in esecuzione CI / CD

Ho testato solo il token di accesso personale utilizzando GitLab Community Edition 10.1.2 , l'esempio:

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 username e password:

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

o inserendo la password:

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

Ma il token privato sembra non funzionare.


5
Si noti che i token privati ​​sono stati rimossi a favore dei token di accesso personale in GitLab 10.2: about.gitlab.com/2017/09/22/gitlab-10-0-released/…
David Planella

26

Utilizzare il token anziché la password (il token deve avere un ambito "api" per consentire il clone):

git clone https://username:token@gitlab.com/user/repo.git

Testato contro 11.0.0-ee.


Sì, funziona per me. Il token può essere utilizzato come password.
cwtuan,

1
Per le persone che cercano su Google: questo è ciò che vuoi se usi i token di accesso personali su HTTPS su gitlab.com.
Adam Baxter,

14

È possibile utilizzare il token dei corridori per le pipeline CI / CD del repository GitLab.

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

Dove si <runners token>può ottenere da:

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

oppure facendo clic su Settings icon -> CI/CD Pipelinee cercare il token dei corridori nella pagina

Schermata della posizione del token dei corridori: Schermata della posizione del token dei corridori


5
Nota: il token dei corridori è stato deprecato ora.
Arihant Godha,

@ArihantGodha source?
miq,

2
@miq vedi qui (a partire da> = 8.12)
Yan Foto

1
Questo formato è ormai deprecato, vedere stackoverflow.com/questions/25409700/...
Muhan Alim

Non funziona dall'interno della pipeline di GitLab CI. Ma questa linea funziona:git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Slawa,

12

Se hai già un repository e hai appena cambiato il modo in cui esegui l'autenticazione in MFA, puoi modificare il tuo remote originURI HTTP per utilizzare il nuovo token API come segue:

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

E non sarà necessario clonare nuovamente il repository.


3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.githa funzionato anche per me, grazie !! Risponderò a questa discussione con la mia soluzione corretta.
Rutrus,

10

Un modo possibile è utilizzare un token di distribuzione ( https://docs.gitlab.com/ee/user/project/deploy_tokens ). Dopo aver creato il token, utilizzare:

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

come menzionato nel link sopra.


Né sembra funzionare con l'installazione di npm su un contenitore docker nuovo, il valore predefinito è ssh.
Vix,

Davvero non funziona.
rios0rios0

10

A partire da 8.12, la clonazione usando il HTTPStoken runner non è più supportata, come menzionato qui :

In 8.12 abbiamo migliorato i permessi di costruzione. Essere in grado di clonare il progetto usando il token corridori non è supportato da ora in poi (funzionava per coincidenza e non era mai una funzionalità a tutti gli effetti, quindi l'abbiamo cambiato in 8.12). Dovresti usare invece il token build.

Questo è ampiamente documentato qui - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .


1
Non è possibile utilizzare i token dei corridori ma utilizza i token di accesso personali. Si prega di vedere la mia risposta: stackoverflow.com/questions/25409700/...
Muhan Alim

@MuhanAlim Consiglierei a nessuno di esporre l'intero account utilizzando i token di accesso. Ecco perché sono chiamati token di accesso privato !
Yan Foto

La domanda non menziona nulla sul rendere pubblica la chiave, ma solo su come utilizzare la chiave al posto di un nome utente e una password per la clonazione. Ma è un buon punto, non consiglierei a nessuno di usare le chiavi ovunque sia pubblico.
Muhan Alim,

1
lo script di automazione implica che l'intera procedura non è in esecuzione localmente. Probabilmente da qualche parte dove anche altri hanno accesso.
Yan Foto

8

All'interno di una pipeline di GitLab CI la CI_JOB_TOKENvariabile d'ambiente funziona per me:

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

Fonte: Gitlab Docs

A proposito, l'impostazione di questa variabile .gitlab-ci.ymlaiuta a eseguire il debug degli errori.

variables:
    CI_DEBUG_TRACE: "true"

2

Sono andato su SSH usando l'impostazione delle chiavi di distribuzione per progetto (sola lettura)


Anche a me perché sto usando GIT_STRATEGY: nessuno.
Aalex Gabi,

1

Per rendere felice il mio futuro: RTFM - non usare affatto il token gitlab, ma il .netrcfile.

Ci sono un paio di punti importanti:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. Non dimenticare di sostituire "gitlab.com" con il tuo URL!
  3. Non cercare di essere intelligente e creare direttamente il file .netrc - gitlab non sostituirà $CI_JOB_TOKENil file all'interno del file!
  4. Usa https://gitlab.com/whatever/foobar.com- no ssh://git@foobar, no git+ssh://, no git+https://. Inoltre, non è necessario alcun elemento CI-TOKEN nell'URL.
  5. Assicurati di si git clone [url from step 4]

Contesto: ho capito

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

quando ho provato a far funzionare Ansible + Gitlab + Docker come immagino. Ora funziona.


1

Non è necessario personalizzare l'URL. Basta usare una configurazione git per token gitlab come

git config --global gitlab.accesstoken {TOKEN_VALUE}

descrizione estesa qui


1

molte risposte sopra sono vicine, ma ottengono ~ la usernamesintassi per i deploytoken errati. Esistono altri tipi di token, ma deploy tokenè quello che gitlab offre (almeno circa 2020+) per repo per consentire l'accesso personalizzato, incluso di sola lettura.

da un repository(o group), trova settings-> repository-> deploy tokens. Creane uno nuovo. A usernamee tokencampo vengono creati. Il usernamenon è un valore fisso di default; è unico per questo token.

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

testato su gitlab.com account pubblico gratuito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.