正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

タグ

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

Gitでは、タグはリポジトリの履歴における重要なポイントを示します。Gitは、次の2種類のタグをサポートしています:

  • 軽量タグは特定のコミットを指し、他の情報は含まれません。ソフトタグとも呼ばれています。必要に応じて作成したり削除したりできます。
  • 注釈付きタグにはメタデータが含まれており、検証のために署名できますが、変更はできません。

タグの作成や削除は、以下を含む自動化のトリガーとして使用できます:

リリースを作成すると、GitLabはリリースのポイントを示すタグも作成します。多くのプロジェクトでは、注釈付きリリースタグと安定したブランチを組み合わせます。デプロイまたはリリースタグを自動的に設定することを検討してください。

GitLab UIでは、各タグに以下が表示されます:

単一タグの例

  • タグ名( tag
  • タグ名をコピー ( copy-to-clipboard )。
  • オプション。タグが保護されている場合は、保護バッジ。
  • コミットSHA( commit )。コミットの内容にリンクしています。
  • コミットのタイトルと作成日。
  • オプション。リリースへのリンク( rocket )。
  • オプション。パイプラインを実行している場合、現在のパイプラインの状態。
  • タグにリンクするソースコードとアーティファクトへのダウンロードリンク。
  • リリースを作成 pencil )リンク。
  • タグを削除するためのリンク。

プロジェクトのタグを表示する

プロジェクトの既存のタグをすべて表示するには、以下を実行します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. コード > タグを選択します。

コミットリストでタグ付けされたコミットを表示する

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。

  2. コード > コミットを選択します。

  3. タグ付けされたコミットには、タグアイコン( tag )とタグの名前がラベル付けされています。この例は、v1.26.0でタグ付けされたコミットを示しています:

    コミットビューでタグ付けされたコミット

このタグのコミットのリストを表示するには、タグ名を選択します。

タグを作成する

タグは、コマンドラインまたはGitLab UIから作成できます。

コマンドラインから

コマンドラインから軽量タグまたは注釈付きタグを作成し、アップストリームにプッシュするには、以下を実行します:

  1. 軽量タグを作成するには、コマンドgit tag TAG_NAMEを実行し、TAG_NAMEを希望するタグ名に変更します。

  2. 注釈付きタグを作成するには、コマンドラインからgit tagのいずれかのバージョンを実行します:

    # In this short version, the annotated tag's name is "v1.0",
    # and the message is "Version 1.0".
    git tag -a v1.0 -m "Version 1.0"
    
    # Use this version to write a longer tag message
    # for annotated tag "v1.0" in your text editor.
    git tag -a v1.0
  3. git push origin --tagsを使用して、タグをアップストリームにプッシュします。

UIから作成する

GitLab UIからタグを作成するには、以下を実行します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. コード > タグを選択します。
  3. 新しいタグを選択します。
  4. タグ名を入力します。
  5. 作成元で、既存のブランチ名、タグ、またはコミットSHAを選択します。
  6. オプション。メッセージを追加して注釈付きタグを作成するか、空白のままにして軽量タグを作成します。
  7. タグを作成を選択します。

タグに名前を付ける

Gitはタグ名のルールを適用して、タグ名が他のツールとの互換性を維持できるようにします。GitLabはタグ名に追加の要件を設定し、適切に構造化されたタグ名に対してメリットを提供しています。

GitLabは、すべてのタグに対して次の追加のルールを適用します:

  • タグ名にはスペースを使用できません。
  • 40または64の16進文字で始まるタグ名は、Gitのコミットハッシュと似ているため禁止されています。
  • タグ名を-refs/heads/refs/tags/refs/remotes/で始めることはできません
  • タグ名では、大文字と小文字が区別されます。

タグ名をコピー

クリップボードにタグ名をコピーするには、次の手順に従います:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. コード > タグを選択します。
  3. タグ名の横にあるTagの名前をコピー ( copy-to-clipboard ) を選択します。

タグを削除できないようにする

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

ユーザーがgit pushでタグを削除できないようにするには、プッシュルールを作成します。

タグからパイプラインをトリガーする

GitLab CI/CDは、パイプライン設定でタグを識別するための定義済み変数CI_COMMIT_TAGを提供しています。この変数をジョブのルールやワークフローのルールで使用して、パイプラインがタグによってトリガーされたかどうかをテストできます。

デフォルトでは、CI/CDジョブに特定のルールが設定されていない場合、それらのルールは新しく作成されたタグのタグパイプラインに含まれます。

プロジェクトのCI/CDパイプライン設定用の.gitlab-ci.ymlファイルでは、CI_COMMIT_TAG変数を使用して、新しいタグのパイプラインを制御できます:

  • rules:ifを使用したジョブレベル。
  • workflowキーワードを使用したパイプラインレベル。

タグパイプラインでセキュリティスキャンをトリガーする

デフォルトでは、スキャン実行ポリシーはブランチでのみ実行され、タグでは実行されません。ただし、パイプライン実行ポリシーを設定して、タグでセキュリティスキャンを実行できます。

タグでセキュリティスキャンを実行するには:

  1. カスタムジョブが含まれたCI/CD設定YAMLファイルを作成します。このカスタムジョブは、セキュリティスキャナーテンプレートを拡張し、タグで実行するルールを含んでいます。
  2. この設定をパイプラインに挿入するパイプライン実行ポリシーを作成します。

パイプライン実行ポリシーの例

この例は、依存関係スキャンとSASTスキャンをタグで実行するパイプライン実行ポリシーを作成する方法を示しています:

pipeline_execution_policy:
- name: Pipeline Execution Policy
  description: Run security scans on tags
  enabled: true
  pipeline_config_strategy: inject_policy
  content:
    include:
    - project: <Project path to YAML>
      file: tag-security-scans.yml
  skip_ci:
    allowed: false

CI/CD設定の例

この例は、セキュリティスキャナージョブを拡張してタグで実行する方法を示しています:

include:
  - template: Jobs/Dependency-Scanning.gitlab-ci.yml
  - template: Jobs/SAST.gitlab-ci.yml

# Extend dependency scanning to run on tags
gemnasium-python-dependency_scanning_tags:
  extends: gemnasium-python-dependency_scanning
  rules:
    - if: $CI_COMMIT_TAG

# Extend SAST scanning to run on tags
semgrep-sast_tags:
  extends: semgrep-sast
  rules:
    - if: $CI_COMMIT_TAG

# Example of a custom job that runs only on tags
policy_job_for_tags:
  script:
    - echo "This job runs only on tags"
  rules:
    - if: $CI_COMMIT_TAG

# Example of a job that runs on all pipelines
policy_job_always:
  script:
    - echo "This policy job runs always."