usando o token do gitlab para clonar sem autenticação

139

Quero clonar o repositório do gitlab sem solicitar o meu script de automação, usando meu token privado da minha conta do gitlab.

Alguém pode me fornecer uma amostra?

Eu sei que posso fazer isso com usuário e senha:

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

e eu sei que é possível com a chave ssh

mas, ambas as opções não são suficientes

Muky
fonte
21
git clone https://<token-name>:<token>@gitlaburl
precisa
1
@ Kinght 金 Apenas seu comando funcionou !!. Muito obrigado :-)
Hussain K

Respostas:

195

Eu sei que isso é antigo, mas é assim que você faz:

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

Roshan Gautam
fonte
3
Isso funcionou para mim no GitLab 8.5.7 Enterprise Edition.
Ben Patterson
1
Funciona aqui (GitLab Community Edition 8.16.5 064dab1)
Martin M.
5
Funciona! Eu me pergunto por que gitlab.com sobre detalhes do projeto eles não dão a sintaxe do comando completo: - ((
FRa
Funciona para o Gitlab 10.4.4, mas você precisa criar um apitoken. A read_usersó pode ler repos sob/users
Kurt
2
Como usar isso ssh?
hemu 02/04/19
41

Você pode fazer assim:

git clone https://gitlab-ci-token:<private token>@git.example.com/myuser/myrepo.git
Tim Hughes
fonte
2
isso parece certo, mas sempre falha de autenticação para mim :(
Randyaa
o mesmo para mim: fatal: A autenticação falhou para
vogash 3/16
4
<token privado> precisa ser substituído pelo token do corredor do IC, não pelo token privado da conta.
Kip
2
eu acho que você também deve ser capaz de usar o seu pessoal @ Tim direito de token
Gobi Dasu
Você pode usar o token ci específico do projeto (ative as compilações e vá para a configuração do projeto / corredores).
26516 BM5k
41

O gitlab possui muitos tokens:

  • Token privado
  • Token de acesso pessoal
  • Token de execução de CI / CD

Testei apenas o Token de Acesso Pessoal usando o GitLab Community Edition 10.1.2 , o exemplo:

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 usando nome de usuário e senha:

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

ou digitando sua senha:

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

Mas o token privado parece não funcionar.

xuanyuanaosheng
fonte
5
Note-se que os tokens privadas foram removidos em favor de tokens de acesso pessoal na gitlab 10.2: about.gitlab.com/2017/09/22/gitlab-10-0-released/...
David Planella
26

Use o token em vez da senha (o token precisa ter o escopo "api" para que o clone seja permitido):

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

Testado contra 11.0.0-ee.

Zbyněk Winkler
fonte
Sim, funciona para mim. O token pode ser usado como senha.
Cwtuan
1
Para as pessoas pesquisando no Google: isto é o que você deseja se estiver usando tokens de acesso pessoal por HTTPS no gitlab.com.
Adam Baxter
14

Você pode usar o token de corredores para os pipelines de CI / CD do seu repositório GitLab.

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

Onde <runners token>pode ser obtido em:

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

ou clicando no Settings icon -> CI/CD Pipelinee procure Runners Token na página

Captura de tela do local do token de corredores: Captura de tela do local do token de corredores

Enlai Chu
fonte
5
Nota: O token de corredores foi descontinuado agora.
Arihant Godha 22/09/16
@ArihantGodha fonte?
Miq
2
@miq veja aqui (a partir de> = 8.12)
Yan Foto
1
Agora, este formato foi descontinuado, consulte stackoverflow.com/questions/25409700/…
Muhan Alim 17/17/17
Não funciona de dentro do pipeline do IC do GitLab. Mas esta linha funciona:git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
Slawa
12

Se você já possui um repositório e acabou de alterar a maneira como faz a autenticação para o MFA, pode alterar seu remote originURI HTTP para usar seu novo token de API da seguinte maneira:

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

E você não precisará clonar novamente o repositório.

Roger Barreto
fonte
3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.gittambém funcionou para mim, obrigado !! Vou responder a esta discussão com a minha solução correta.
Rutrus 8/11
10

Uma maneira possível é usar um token de implantação ( https://docs.gitlab.com/ee/user/project/deploy_tokens ). Após criar o token, use:

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

conforme mencionado no link acima.

shahar taite
fonte
Isso também não parece estar funcionando com o npm install em um contêiner de docker novo, o padrão é ssh.
Vix
Realmente não funciona.
rios0rios0 30/06
10

Desde então 8.12, a clonagem usando o HTTPS+ runner token não é mais suportada, conforme mencionado aqui :

Na versão 8.12, melhoramos as permissões de construção. Ser capaz de clonar um projeto usando o token de corredor não é suportado a partir de agora (na verdade, estava funcionando por coincidência e nunca foi um recurso de pleno direito; portanto, mudamos isso em 8.12). Você deve usar o token de compilação.

Isso está amplamente documentado aqui - https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html .

Yan Foto
fonte
1
Não é possível usar tokens de corredores, mas sim tokens de acesso pessoal. Por favor, veja minha resposta: stackoverflow.com/questions/25409700/…
Muhan Alim 17/17/17
@ MuhanAlim Eu recomendo que ninguém exponha toda a sua conta usando tokens de acesso. É por isso que eles são chamados de Tokens de Acesso Privado !
23617 Yan Foto
A pergunta não menciona nada sobre tornar a chave pública, apenas como usar a chave no lugar de um nome de usuário e senha para clonagem. Mas esse é um bom ponto, eu não recomendaria que ninguém usasse as chaves em qualquer lugar público.
Muhan Alim 17/11/19
1
O script de automação implica que todo o procedimento não está sendo executado localmente. Provavelmente em algum lugar onde outros também tenham acesso.
23617 Yan Foto
8

Dentro de um pipeline de IC do GitLab, a CI_JOB_TOKENvariável de ambiente funciona para mim:

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

Fonte: Documentos do Gitlab

BTW, definir essa variável .gitlab-ci.ymlajuda a depurar erros.

variables:
    CI_DEBUG_TRACE: "true"
Slawa
fonte
2

Fui SSH usando a configuração de chaves de implantação por projeto (somente leitura)

Laurent
fonte
Eu também porque estou usando GIT_STRATEGY: none.
Aalex Gabi
1

Para me deixar feliz no futuro: RTFM - não use o gitlab-ci-token, mas o .netrcarquivo.

Existem alguns pontos importantes:

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. Não se esqueça de substituir "gitlab.com" pelo seu URL!
  3. Não tente ser esperto e crie o arquivo .netrc diretamente - o gitlab não substituirá o que está $CI_JOB_TOKENdentro do arquivo!
  4. Use https://gitlab.com/whatever/foobar.com- não ssh://git@foobar, não git+ssh://, nãogit+https:// . Você também não precisa de nenhum material CI-TOKEN no URL.
  5. Certifique-se de que você pode git clone [url from step 4]

Antecedentes: recebi

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

quando tentei fazer o Ansible + Gitlab + Docker funcionar como eu imagino. Agora funciona.

Martin Thoma
fonte
1

Não é necessário personalizar o URL. Basta usar uma configuração git para tokens gitlab como

git config --global gitlab.accesstoken {TOKEN_VALUE}

descrição estendida aqui

Bizmate
fonte
1

muitas respostas acima estão próximas, mas elas possuem ~ usernamesintaxe para deploytokens incorretos. Existem outros tipos de tokens, mas deploy tokené isso que o gitlab oferece (pelo menos 2020 ou mais) por repo para permitir acesso personalizado, incluindo somente leitura.

de um repository(ou group), encontre o settings-> repository-> deploy tokens. Crie um novo. Um campo usernamee tokensão criados. O usernameNÃO é um valor fixo por padrão; é exclusivo para esse token.

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

testado na conta pública gratuita do gitlab.com.

Mike
fonte