GitLabのプライベートリポジトリから複数人で使うサーバ上へgit pullする時に、deploy tokenを使ってみた

GitLabのプライベートリポジトリから複数人で使うサーバ上へgit pullする機会がありましたが、ちょっと悩んだためメモを残します。

 
目次

 

環境

  • GitLab.comのプライベートリポジトリ
  • GitLabアカウントには2FA設定済

 

困ったこと

そのサーバのgit remoteには、GItLabのプライベートリポジトリにhttpsでアクセスするoriginが設定してありました。

ただ、自分のアカウントでgit pullしようとしても

という状況であり、困っていました。

 

対応

GitLabのドキュメントを読んだところ、 Deploy Token がありました。
Deploy Tokens | GitLab

 
ドキュメントを読むと、リポジトリ単位でScopeを決めてトークンを発行できるようです。

今回、サーバ上で操作する全員がGitLab上のプライベートリポジトリへのアクセス権を持っていたため、サーバ上にDeploy Tokenを書いてあっても問題ありませんでした。

また、deploy token用にgit remoteの差し替えが必要そうでしたが、こちらも特に問題なさそうでした。

そこで、deploy tokenを試してみることにしました。

 

まずはドキュメントに従い、GitLabのプライベートリポジトリに、deploy tokenを設定します。

今回はcloneできれば良いので、Scopeは read_repository にしました。

 
続いて、サーバ上でgit remoteを差し替えます。

# git remoteの差し替え
$ git remote set-url origin https://<deploy token用ユーザー>:<deploy token>@gitlab.com/<グループ(ユーザー)>/<リポジトリ>.git

# 確認
$ git remote -v
origin  https://<deploy token用ユーザー>:<deploy token>@gitlab.com/<グループ(ユーザー)>/<リポジトリ>.git (fetch)
origin  https://<deploy token用ユーザー>:<deploy token>@gitlab.com/<グループ(ユーザー)>/<リポジトリ>.git (push)

 
最後にgit pullしたところ、問題なく動作しました。

$ git pull
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 12 (delta 4), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (12/12), done.
From https://gitlab.com/<グループ(ユーザー)>/<リポジトリ>
 * [new branch]      yy-zzz     -> origin/<ブランチ名>
   xxxxxxx..xxxxxxx  master     -> origin/master