デプロイトークン
- GitLab 10.7から導入されました。
- GitLab 12.9の設定 >リポジトリから移動しました。
- GitLab 12.10 で
write_registry
scope を追加しました。- GitLab 12.10.1の設定 >CI/CD から移動しました。
- GitLab 13.0にパッケージレジストリスコープを追加しました。
デプロイトークンを使用すると、ユーザーとパスワードがなくても、プロジェクトのパッケージやコンテナレジストリイメージをダウンロード(git clone
)したり、プッシュ&プルしたりすることができます。
デプロイトークンはメンテナーのみが管理できます。
鍵ペアがある場合は、代わりにデプロイ鍵を使用するとよいでしょう。
デプロイトークンの作成
プロジェクトの設定から好きなだけデプロイトークンを作成できます。 また、グループスコープのデプロイトークンを作成することもできます。
- GitLabアカウントにログインします。
- デプロイトークンを作成したいプロジェクト(またはグループ)に移動します。
- settings} 設定>リポジトリに移動します。
- デプロイトークンセクションの“Expand “をクリックします。
- トークンの名前、有効期限(オプション)、ユーザー名(オプション)を選択します。
- 希望のスコープを選択します。
- デプロイトークンの作成をクリックします。
- デプロイトークンを安全な場所に保存してください。 ページを離れるか更新すると、二度とアクセスできなくなります。
デプロイトークン期限切れ
デプロイトークンの有効期限は、定義した日付の午前0時(UTC)です。
デプロイトークンの失効
アクティブなデプロイトークン]エリアにある[取り消し]ボタンをクリックするだけで、いつでもデプロイトークンを取り消すことができます。
デプロイトークンのスコープの制限
デプロイトークンは、トークンが実行できるさまざまなアクションを許可する異なるスコープで作成することができます。 利用可能なスコープは、導入された GitLab のバージョンとともに次の表に示されています。
範囲 | 説明 | GitLabバージョンで導入されました。 |
---|---|---|
read_repository
| リポジトリへの読み取りアクセスを許可します。git clone
| 10.7 |
read_registry
| プロジェクトが非公開で承認が必要な場合に、コンテナレジストリイメージへの読み取りアクセスを許可します。 | 10.7 |
write_registry
| コンテナレジストリへの書き込みアクセス(プッシュ)を許可。 | 12.10 |
read_package_registry
| パッケージのレジストリへの読み込みアクセスを許可します。 | 13.0 |
write_package_registry
| パッケージのレジストリへの書き込みアクセスを許可します。 | 13.0 |
デプロイトークンカスタムユーザー名
GitLab 12.1で導入されました。
デフォルトのユーザー名形式はgitlab+deploy-token-#{n}
です。ツールやプラットフォームによっては、この形式をサポートしていない場合があります。そのような場合は、デプロイトークン作成時に使用するカスタムユーザー名を指定することができます。
使用方法
リポジトリの git クローン
デプロイトークンを使ってリポジトリをダウンロードするには、次のようにします:
-
read_repository
をスコープとしてデプロイトークンを作成します。 -
username
とtoken
に注意してください。 -
git clone
デプロイトークンを使用してプロジェクトを作成します:git clone https://<username>:<deploy_token>@gitlab.example.com/tanuki/awesome_project.git
<username>
と<deploy_token>
を適切な値に置き換えてください。
コンテナレジストリイメージの読み込み
コンテナ・レジストリ・イメージを読み込むには、次のことが必要です:
-
read_registry
をスコープとしてデプロイトークンを作成します。 -
username
とtoken
に注意してください。 - デプロイトークンを使って GitLab のコンテナレジストリにログインします:
docker login -u <username> -p <deploy_token> registry.example.com
<username>
と<deploy_token>
を適切な値に置き換えるだけで、コンテナレジストリから画像を引き出すことができます。
コンテナレジストリイメージのプッシュ
GitLab 12.10 で導入されました。
コンテナ・レジストリ・イメージをプッシュするには、以下が必要です:
-
write_registry
をスコープとしてデプロイトークンを作成します。 -
username
とtoken
に注意してください。 -
デプロイトークンを使って GitLab のコンテナレジストリにログインします:
docker login -u <username> -p <deploy_token> registry.example.com
<username>
と<deploy_token>
を適切な値に置き換えるだけで、コンテナレジストリに画像をプッシュできます。
パッケージの読み込みまたはプル
GitLab 13.0から導入されました。
GitLabのパッケージレジストリにあるパッケージを引き出すには
-
read_package_registry
をスコープとしてデプロイトークンを作成します。 -
username
とtoken
に注意してください。 - 選択したパッケージタイプについて、デプロイトークンの認証手順に従ってください。
パッケージのプッシュまたはアップロード
GitLab 13.0から導入されました。
GitLab パッケージレジストリにパッケージをアップロードするには、次のようにします:
-
write_package_registry
をスコープとしてデプロイトークンを作成します。 -
username
とtoken
に注意してください。 - 選択したパッケージタイプについて、デプロイトークンの認証手順に従ってください。
グループデプロイトークン
GitLab 12.9で導入されました。
グループレベルで作成されたデプロイトークンは、特定のグループまたはそのサブグループのいずれかに属するすべてのプロジェクトで使用できます。
概要については、グループ・デプロイトークンを参照してください。
グループデプロイトークンを使用するには:
グループデプロイトークン(read_repository
など)に適用されるスコープは、関連プロジェクトのリポジトリをクローンするときに一貫して適用されます。
GitLab デプロイトークン
GitLab 10.8で導入されました。
デプロイトークンに関しては特別なケースがあります。 ユーザーがgitlab-deploy-token
という名前のデプロイトークンを作成した場合、デプロイトークンのユーザー名とトークンは自動的に環境変数CI_DEPLOY_USER
とCI_DEPLOY_PASSWORD
として CI/CD ジョブに公開されます。
トークンを作成したら、その変数を使ってコンテナレジストリにログインできます:
docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
gitlab-deploy-token
デプロイトークンに対する特別な処理は、現在のところグループデプロイトークンには実装されていません。 CI/CDジョブでデプロイトークンを使用できるようにするには、プロジェクトレベルで作成する必要があります。 詳細については、このイシューを参照してください。