デプロイトークン

デプロイトークンを使用すると、ユーザーとパスワードがなくても、プロジェクトのパッケージやコンテナレジストリイメージをダウンロード(git clone)したり、プッシュ&プルしたりすることができます。

デプロイトークンはメンテナーのみが管理できます。

鍵ペアがある場合は、代わりにデプロイ鍵を使用するとよいでしょう。

デプロイトークンの作成

プロジェクトの設定から好きなだけデプロイトークンを作成できます。 また、グループスコープのデプロイトークンを作成することもできます。

  1. GitLabアカウントにログインします。
  2. デプロイトークンを作成したいプロジェクト(またはグループ)に移動します。
  3. settings} 設定>リポジトリに移動します。
  4. デプロイトークンセクションの“Expand “をクリックします。
  5. トークンの名前、有効期限(オプション)、ユーザー名(オプション)を選択します。
  6. 希望のスコープを選択します。
  7. デプロイトークンの作成をクリックします。
  8. デプロイトークンを安全な場所に保存してください。 ページを離れるか更新すると、二度とアクセスできなくなります。

Personal access tokens page

デプロイトークン期限切れ

デプロイトークンの有効期限は、定義した日付の午前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 クローン

デプロイトークンを使ってリポジトリをダウンロードするには、次のようにします:

  1. read_repository をスコープとしてデプロイトークンを作成します。
  2. usernametokenに注意してください。
  3. git clone デプロイトークンを使用してプロジェクトを作成します:

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

<username><deploy_token> を適切な値に置き換えてください。

コンテナレジストリイメージの読み込み

コンテナ・レジストリ・イメージを読み込むには、次のことが必要です:

  1. read_registry をスコープとしてデプロイトークンを作成します。
  2. usernametokenに注意してください。
  3. デプロイトークンを使って GitLab のコンテナレジストリにログインします:
docker login -u <username> -p <deploy_token> registry.example.com

<username><deploy_token> を適切な値に置き換えるだけで、コンテナレジストリから画像を引き出すことができます。

コンテナレジストリイメージのプッシュ

GitLab 12.10 で導入されました

コンテナ・レジストリ・イメージをプッシュするには、以下が必要です:

  1. write_registry をスコープとしてデプロイトークンを作成します。
  2. usernametokenに注意してください。
  3. デプロイトークンを使って GitLab のコンテナレジストリにログインします:

    docker login -u <username> -p <deploy_token> registry.example.com
    

<username><deploy_token> を適切な値に置き換えるだけで、コンテナレジストリに画像をプッシュできます。

パッケージの読み込みまたはプル

GitLab 13.0から導入されました

GitLabのパッケージレジストリにあるパッケージを引き出すには

  1. read_package_registry をスコープとしてデプロイトークンを作成します。
  2. usernametokenに注意してください。
  3. 選択したパッケージタイプについて、デプロイトークンの認証手順に従ってください。

パッケージのプッシュまたはアップロード

GitLab 13.0から導入されました

GitLab パッケージレジストリにパッケージをアップロードするには、次のようにします:

  1. write_package_registry をスコープとしてデプロイトークンを作成します。
  2. usernametokenに注意してください。
  3. 選択したパッケージタイプについて、デプロイトークンの認証手順に従ってください。

グループデプロイトークン

GitLab 12.9で導入されました

グループレベルで作成されたデプロイトークンは、特定のグループまたはそのサブグループのいずれかに属するすべてのプロジェクトで使用できます。

概要については、グループ・デプロイトークンを参照してください。

グループデプロイトークンを使用するには:

  1. グループのデプロイトークンを作成します。
  2. リポジトリをクローンするときにプロジェクトデプロイトークンを使うのと同じように使います。

グループデプロイトークン(read_repositoryなど)に適用されるスコープは、関連プロジェクトのリポジトリをクローンするときに一貫して適用されます。

GitLab デプロイトークン

GitLab 10.8で導入されました

デプロイトークンに関しては特別なケースがあります。 ユーザーがgitlab-deploy-tokenという名前のデプロイトークンを作成した場合、デプロイトークンのユーザー名とトークンは自動的に環境変数CI_DEPLOY_USERCI_DEPLOY_PASSWORDとして CI/CD ジョブに公開されます。

トークンを作成したら、その変数を使ってコンテナレジストリにログインできます:

docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
注:gitlab-deploy-token デプロイトークンに対する特別な処理は、現在のところグループデプロイトークンには実装されていません。 CI/CDジョブでデプロイトークンを使用できるようにするには、プロジェクトレベルで作成する必要があります。 詳細については、このイシューを参照してください。