gitlabトークンを使用して認証なしで複製する


139

gitlabアカウントのプライベートトークンを使用して、自動化スクリプトのプロンプトなしでgitlabリポジトリのクローンを作成します。

誰か私にサンプルを提供できますか?

私はユーザーとパスワードでそれができることを知っています:

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

そして私はそれがsshキーで可能であることを知っています

しかし、両方のオプションは十分ではありません


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

@Kinght金あなたのコマンドだけが機能しました!!。どうもありがとう:-)
フセインK

回答:


195

私はこれが古いことを知っていますが、これはあなたがそれを行う方法です:

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


3
これは、GitLab 8.5.7 Enterprise Editionで動作しました。
Ben Patterson、

1
ここで動作します(GitLab Community Edition 8.16.5 064dab1)
Martin M.

5
できます!gitlab.comのプロジェクトの詳細で、完全なコマンド構文を提供しないのはなぜでしょうか:-((
FRa

Gitlab 10.4.4で動作しますが、apiトークンを作成する必要があります。A read_userは以下のリポジトリのみを読み取ることができます/users
カート

2
これをどのように使用するのsshですか?
ヘームー

41

あなたはこのようにそれを行うことができます:

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

2
これは正しいようですが、私にとっては常に認証に失敗します:(
Randyaa

私と同じ:致命的:認証に失敗しました
vogash

4
<プライベートトークン>は、アカウントのプライベートトークンではなく、CIランナーのトークンに置き換える必要があります。
Kip

2
個人用トークンを@timで正しく使用できるはずだと思います
Gobi

プロジェクト固有のciトークンを使用できます(ビルドを有効にしてから、project / runners構成に移動します)。
BM5k 2016

41

gitlabにはたくさんのトークンがあります:

  • プライベートトークン
  • 個人アクセストークン
  • CI / CD実行トークン

私はGitLab Community Edition 10.1.2を使用してパーソナルアクセストークンのみをテストしました。例:

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

またはユーザー名とパスワードを使用:

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

またはパスワードを入力してください:

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

しかし、プライベートトークンは機能しないようです。


5
GitLab 10.2で個人アクセストークンを優先してプライベートトークンが削除されたことに注意してください。about.gitlab.com/ 2017/09/22
released

26

パスワードの代わりにトークンを使用します(トークンには、クローンを許可するための「api」スコープが必要です)。

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

11.0.0-eeに対してテスト済み。


はい、それは私のために働きます。トークンをパスワードとして使用できます。
cwtuan 2018

1
これをグーグルする人のために:これは、gitlab.comでHTTPS経由でパーソナルアクセストークンを使用する場合に必要なものです。
アダムバクスター

14

GitLabリポジトリのCI / CDパイプラインにランナートークンを使用できます。

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

どこ<runners token>から入手できます:

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

またはをクリックしてSettings icon -> CI/CD Pipeline、ページでランナートークンを探します

ランナートークンの場所のスクリーンショット: ランナートークンの場所のスクリーンショット


5
注:ランナートークンは現在廃止されています。
Arihant Godha

@ArihantGodhaソース?
miq

2
@miq こちらを参照(> = 8.12以降)
Yan Foto

1
この形式は非推奨になりました。stackoverflow.com
questions / 25409700 /…

GitLab CIパイプライン内からは機能しません。しかし、この行は機能しますgit clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/...
。– Slawa

12

すでにリポジトリがあり、認証をMFAに行う方法を変更しただけの場合remote origin、次のようにHTTP URIを変更して新しいAPIトークンを使用できます。

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

また、リポジトリを再クローンする必要はまったくありません。


3
git clone https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.gitまた私のために働いた、ありがとう!! 私は私の正しい解決策でこのスレッドに答えます。
Rutrus

10

考えられる1つの方法は、デプロイトークンを使用することです(https://docs.gitlab.com/ee/user/project/deploy_tokens)。トークンを作成したら、次を使用します。

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

上記のリンクで述べたように。


また、これは新しいDockerコンテナーでのnpm installで機能していないようです。デフォルトはsshです。
Vix

本当に働かない。
rios0rios0

10

の時点で8.12ここでHTTPS言及されているように、+ランナートークンを使用したクローン作成はサポートされなくなりました

8.12では、ビルド権限を改善しました。ランナートークンを使用してプロジェクトのクローンを作成できるため、これ以降はサポートされません(実際には偶然に機能しており、完全な機能ではなかったため、8.12で変更しました)。代わりにビルドトークンを使用する必要があります。

これは広くここに文書化されています-https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html


1
ランナートークンを使用することはできませんが、個人用アクセストークンを使用しています。:私の答えを参照してくださいstackoverflow.com/questions/25409700/...
Muhanアリム

@MuhanAlimアクセストークンを使用してアカウント全体を公開することは誰にもお勧めしません。そのため、それらはプライベートアクセストークンと呼ばれます。
Yan Foto

この質問では、キーを公開することについては何も触れられていません。複製のためにユーザー名とパスワードの代わりにキーを使用する方法についてのみ言及しています。しかし、それは良い点です。公開されている場所でキーを使用することはお勧めしません。
ムハンアリム2017年

1
自動化スクリプトは、プロシージャ全体がローカルで実行されていないことを意味します。おそらくどこか他の人もアクセスできる場所です。
Yan Foto

8

GitLab CIパイプラインの内部では、CI_JOB_TOKEN環境変数が機能します。

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

出典:Gitlab Docs

ところで、この変数を設定.gitlab-ci.ymlすると、エラーのデバッグに役立ちます。

variables:
    CI_DEBUG_TRACE: "true"

2

プロジェクトごとのデプロイキー設定を使用してSSHを実行しました(読み取り専用)


私もGIT_STRATEGYを使用しているため、なし。
Aalex Gabi 2018

1

私を幸せに自分の将来を作成するには:RTFMは -すべてでgitlab-CI-トークンを使用しますが、していない.netrcファイル。

重要な点がいくつかあります。

  1. echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
  2. 「gitlab.com」をあなたのURLに置き換えることを忘れないでください!
  3. 賢くして.netrcファイルを直接作成しないでください-gitlabはファイル$CI_JOB_TOKEN内のを置き換えません!
  4. 使用https://gitlab.com/whatever/foobar.com-ではないssh://git@foobar、ないgit+ssh://、ありませんgit+https://。また、URLにCI-TOKENの要素は必要ありません。
  5. あなたができることを確認してください git clone [url from step 4]

背景:わかった

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

Ansible + Gitlab + Dockerを想像どおりに動作させようとしたとき。今では動作します。



1

上記の多くの答えは近いですがusernamedeployトークンの〜構文が正しくありません。他の種類のトークンもありますが、これdeploy tokenはgitlabが(少なくとも2020年頃以降)リポジトリごとに提供するもので、読み取り専用を含むカスタマイズされたアクセスを許可します。

repository(またはgroup)から、settings-> repository->を見つけますdeploy tokens。新しいものを作成します。A usernametokenフィールドが作成されます。usernameデフォルトでは、固定値ではありません。これはこのトークンに固有です。

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

gitlab.comパブリック、無料アカウントでテスト済み。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.