web-dev-qa-db-ja.com

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

Gitlabアカウントのプライベートトークンを使用して、自動化スクリプトのプロンプトを表示せずにgitlabリポジトリを複製したい。

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

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

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

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

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

94
Muky

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

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

125
Roshan Gautam

次のようにできます:

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

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

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

21
xuanyuanaosheng

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

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

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

15
Zbyněk Winkler

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をクリックして、ページでランナートークンを探します

ランナートークンの場所のスクリーンショット: Screenshot of the runners token location

13
Enlai Chu

8.12の時点で、 here のように、HTTPS +トークンを使用したクローン作成はサポートされていません。

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

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

8
Yan Foto

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

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

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

6
Roger Barreto

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

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

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

6
shahar taite

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"
5
Slawa

プロジェクトごとにキーを展開する設定を使用してSSHを実行しました(読み取り専用)

1
Laurent

私の将来を幸せにするために: RTFM -gitlab-ci-tokenを使用せず、.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@foobargit+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を想像どおりに動作させようとしたとき。今では動作します。

0
Martin Thoma