Gitlabアカウントのプライベートトークンを使用して、自動化スクリプトのプロンプトを表示せずにgitlabリポジトリを複製したい。
誰かが私にサンプルを提供できますか?
私はユーザーとパスワードでそれができることを知っています:
git clone https://" + user + ":" + password + "@" + gitlaburl;
そして、私はそれがsshキーで可能であることを知っています
しかし、両方のオプションは十分ではありません
私はこれが古いことを知っていますが、これはあなたがそれを行う方法です:
git clone https://oauth2:[email protected]/vendor/package.git
次のようにできます:
git clone https://gitlab-ci-token:<private token>@git.example.com/myuser/myrepo.git
Gitlabには多くのトークンがあります:
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
ただし、プライベートトークンは機能しないようです。
パスワードの代わりにトークンを使用します(クローンを許可するには、トークンに「api」スコープが必要です)。
git clone https://username:[email protected]/user/repo.git
11.0.0-eeに対してテスト済み。
8.12
の時点で、 here のように、HTTPS
+トークンを使用したクローン作成はサポートされていません。
8.12では、ビルドのアクセス許可が改善されました。ランナートークンを使用してプロジェクトのクローンを作成できるようになったため、今後サポートされません(実際には偶然に機能し、完全な機能ではなかったため、8.12で変更しました)。代わりにビルドトークンを使用する必要があります。
これはここで広く文書化されています- https://docs.gitlab.com/ce/user/project/new_ci_build_permissions_model.html 。
既にリポジトリがあり、MFAへの認証方法を変更しただけの場合、次のようにremote Origin
HTTP URIを変更して新しいAPIトークンを使用できます。
git remote set-url Origin https://oauth2:TOKEN@ANY_GIT_PROVIDER_DOMAIN/YOUR_PROJECT/YOUR_REPO.git
そして、リポジトリを再クローンする必要はまったくありません。
可能な方法の1つは、デプロイトークンを使用することです( https://docs.gitlab.com/ee/user/project/deploy_tokens )。トークンを作成したら、次を使用します。
git clone https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git
上記のリンクで述べたように。
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"
プロジェクトごとにキーを展開する設定を使用してSSHを実行しました(読み取り専用)
私の将来を幸せにするために: RTFM -gitlab-ci-tokenを使用せず、.netrc
ファイルを使用します。
重要な点がいくつかあります。
echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
$CI_JOB_TOKEN
を置き換えません!https://gitlab.com/whatever/foobar.com
ではなく、ssh://git@foobar
、git+ssh://
ではなく、git+https://
を使用してください。また、URLにCI-TOKENのものは必要ありません。git clone [url from step 4]
できることを確認してください背景:わかった
fatal: could not read Username for 'https://gitlab.mycompany.com': No such device or address
ansible + Gitlab + Dockerを想像どおりに動作させようとしたとき。今では動作します。