タグ
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
Gitでは、タグはリポジトリの履歴における重要なポイントを示します。Gitは、次の2種類のタグをサポートしています:
- 軽量タグは特定のコミットを指し、他の情報は含まれません。ソフトタグとも呼ばれています。必要に応じて作成したり削除したりできます。
- 注釈付きタグにはメタデータが含まれており、検証のために署名できますが、変更はできません。
タグの作成や削除は、以下を含む自動化のトリガーとして使用できます:
- Webhookを使用して、Slack通知などのアクションを自動化する。
- リポジトリミラーを更新するように通知する。
if: $CI_COMMIT_TAGでCI/CDパイプラインを実行する。
リリースを作成すると、GitLabはリリースのポイントを示すタグも作成します。多くのプロジェクトでは、注釈付きリリースタグと安定したブランチを組み合わせます。デプロイまたはリリースタグを自動的に設定することを検討してください。
GitLab UIでは、各タグに以下が表示されます:
- タグ名( )
- タグ名をコピー ( )。
- オプション。タグが保護されている場合は、保護バッジ。
- コミットSHA( )。コミットの内容にリンクしています。
- コミットのタイトルと作成日。
- オプション。リリースへのリンク( )。
- オプション。パイプラインを実行している場合、現在のパイプラインの状態。
- タグにリンクするソースコードとアーティファクトへのダウンロードリンク。
- リリースを作成( )リンク。
- タグを削除するためのリンク。
プロジェクトのタグを表示する
プロジェクトの既存のタグをすべて表示するには、以下を実行します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > タグを選択します。
コミットリストでタグ付けされたコミットを表示する
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
コード > コミットを選択します。
タグ付けされたコミットには、タグアイコン( )とタグの名前がラベル付けされています。この例は、
v1.26.0でタグ付けされたコミットを示しています:
このタグのコミットのリストを表示するには、タグ名を選択します。
タグを作成する
タグは、コマンドラインまたはGitLab UIから作成できます。
コマンドラインから
コマンドラインから軽量タグまたは注釈付きタグを作成し、アップストリームにプッシュするには、以下を実行します:
軽量タグを作成するには、コマンド
git tag TAG_NAMEを実行し、TAG_NAMEを希望するタグ名に変更します。注釈付きタグを作成するには、コマンドラインから
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.0git push origin --tagsを使用して、タグをアップストリームにプッシュします。
UIから作成する
GitLab UIからタグを作成するには、以下を実行します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > タグを選択します。
- 新しいタグを選択します。
- タグ名を入力します。
- 作成元で、既存のブランチ名、タグ、またはコミットSHAを選択します。
- オプション。メッセージを追加して注釈付きタグを作成するか、空白のままにして軽量タグを作成します。
- タグを作成を選択します。
タグに名前を付ける
Gitはタグ名のルールを適用して、タグ名が他のツールとの互換性を維持できるようにします。GitLabはタグ名に追加の要件を設定し、適切に構造化されたタグ名に対してメリットを提供しています。
GitLabは、すべてのタグに対して次の追加のルールを適用します:
- タグ名にはスペースを使用できません。
- 40または64の16進文字で始まるタグ名は、Gitのコミットハッシュと似ているため禁止されています。
- タグ名を
-、refs/heads/、refs/tags/、refs/remotes/で始めることはできません - タグ名では、大文字と小文字が区別されます。
タグ名をコピー
クリップボードにタグ名をコピーするには、次の手順に従います:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- コード > タグを選択します。
- タグ名の横にあるTagの名前をコピー ( ) を選択します。
タグを削除できないようにする
- プラン: 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変数を使用して、新しいタグのパイプラインを制御できます:
タグパイプラインでセキュリティスキャンをトリガーする
デフォルトでは、スキャン実行ポリシーはブランチでのみ実行され、タグでは実行されません。ただし、パイプライン実行ポリシーを設定して、タグでセキュリティスキャンを実行できます。
タグでセキュリティスキャンを実行するには:
- カスタムジョブが含まれたCI/CD設定YAMLファイルを作成します。このカスタムジョブは、セキュリティスキャナーテンプレートを拡張し、タグで実行するルールを含んでいます。
- この設定をパイプラインに挿入するパイプライン実行ポリシーを作成します。
パイプライン実行ポリシーの例
この例は、依存関係スキャンと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: falseCI/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."
