保護されたタグ

保護されたタグ

  • タグを作成する権限を持つ人を制御できるようにします。
  • 一度作成されたタグが誤って更新または削除されないようにします。

各ルールでは、次のいずれかに一致させることができます:

  • 個々のタグ名。
  • 一度に複数のタグを制御するためのワイルドカード。

この機能は保護されたブランチから発展したものです。

保護されたタグを変更できる人

デフォルトでは

  • タグを作成するには、メンテナーのロールが必要です。
  • タグの更新や削除はできません。

保護されたタグの設定

前提条件:

  • 少なくともプロジェクトのメンテナーのロールを持っている必要があります。
  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 設定] > [リポジトリ]を選択します。
  3. 保護されたタグを展開します。
  4. Add newを選択します。
  5. 単一のタグを保護するには、[タグ]を選択し、ドロップダウンリストからタグを選択します。
  6. 文字列と一致する名前を持つすべてのタグを保護するには:
    1. タグを選択します。
    2. タグ照合に使用する文字列を入力します。ワイルドカード (*) が使用できます。
    3. ワイルドカードを作成]を選択します。
  7. 作成許可]で、保護されたタグを作成できるロールを選択します。

    note
    GitLabプレミアムとアルティメットでは、グループや個々のユーザーを作成許可に追加することもできます。
  8. 保護]を選択します。

保護されたタグ(またはワイルドカード)が保護されたタグリストに表示されます。

ワイルドカードの保護タグ

ワイルドカードで保護されたタグを指定すると、ワイルドカードに一致するすべてのタグが保護されます。例えば

ワイルドカード保護タグマッチングタグ
v* v1.0.0,version-9.1
*-deploy march-deploy,1.0-deploy
*gitlab* gitlab,gitlab/v1
* v1.0.1rc2,accidental-tag

2つの異なるワイルドカードは、同じタグにマッチする可能性があります。例えば、*-stableproduction-* は両方ともproduction-stable タグに production-stableマッチします。この場合production-stable 、これらの保護されたタグの_いずれかが_ 作成許可などの設定を持っている場合、 production-stableこの設定も継承します。

保護されたタグの名前を選択すると、GitLabは一致するすべてのタグのリストを表示します:

Protected tag matches

ブランチと同じ名前のタグの作成を防ぐ

同じ名前のタグとブランチには、異なるコミットが含まれることがあります。タグとブランチが同じ名前だと、git checkout コマンドを実行するユーザーは、qa _ブランチを_チェックアウト qaするつもりが_タグを_チェックアウトしてしまうかもしれません。

この問題を防ぐには

  1. タグとして使用したくないブランチ名を特定します。
  2. 保護されたタグの設定で説明したように、保護されたタグを作成します:

    • 名前」には、stable のような名前を指定します。また、stable-v1stable-v2のような複数の名前にマッチするように、stable-* のようなワイルドカードを作成することもできます。
    • Allowed to Create(作成許可)」では、「No one(誰も 作成しない)」を選択します。
    • 保護]を選択します。

ユーザーはブランチを作成することはできますが、保護された名前でタグを作成することはできません。

デプロイキーで保護されたタグを作成できるようにします。

GitLab 15.11 で導入

デプロイキーのオーナーに保護されたタグの作成を許可することができます。ユーザーが関連プロジェクトのメンバーでなくても、デプロイキーは機能します。ただし、デプロイキーのオーナーは少なくともプロジェクトの読み取りアクセス権を持っている必要があります。

前提条件:

  • プロジェクトのデプロイキーを有効にする必要があります。プロジェクトのデプロイ キーは、作成時にデフォルトで有効になります。ただし、公開デプロイ キーがプロジェクトにアクセスできるようにする必要があります。
  • デプロイ キーには、プロジェクト リポジトリへの書き込み権限が必要です。

デプロイキーに保護されたタグの作成を許可するには、次のようにします:

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. 設定] > [リポジトリ]を選択します。
  3. 保護されたタグを展開します。
  4. タグ] ドロップダウンリストから、保護するタグを選択します。
  5. Allowed to create(作成許可)リストから、デプロイキーを選択します。
  6. 保護]を選択します。

保護されたタグの削除

GitLab APIやGitLabユーザーインターフェイスを使って、保護されたタグを手動で削除することができます。

前提条件

  • プロジェクトで少なくともメンテナーのロールを持っている必要があります。

そのためには

  1. 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
  2. コード > タグを選択します。
  3. 削除したいタグの横で、削除({remove})を選択します。
  4. 確認ダイアログでタグ名を入力し、「はい、保護されたタグを削除します」を選択します。

保護されたタグは、GitLabを使ってUIかAPIからしか削除できません。これらの保護により、ローカルのGitコマンドやサードパーティのGitクライアントから誤ってタグを削除することを防ぎます。