gitlab-variable について
glab CLIで GitLab の CI/CD 変数を管理するスキルです。ビルドやデプロイの設定向けに、変数の照会、設定、更新、削除、エクスポートと操作リスクの目安を提供します。
主な機能
- 01変数の一覧表示と取得
- 02変数の設定と更新
- 03変数の削除
- 04dotenv 形式でのエクスポート
- 05スコープ、種類、保護設定の指定
活用シーン
- 01環境別のデプロイ変数の設定
- 02CI/CD シークレットのローテーション
- 03ローカルやスクリプト向けの変数エクスポート
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ grandcamel/ gitlab-assistant-skills --skill gitlab-variableインストール後、Claude Code で/gitlab-variableを入力して読み込まれたか確認します。
詳細
CI/CD 変数スキル
glab CLI を使用した GitLab の CI/CD 変数管理操作です。
クイックリファレンス
| 操作 | コマンド | リスク |
|---|---|---|
| 変数の一覧表示 | glab variable list | - |
| 変数の取得 | glab variable get <key> | - |
| 変数の設定 | glab variable set <key> <value> | ⚠️ |
| 変数の更新 | glab variable update <key> <value> | ⚠️ |
| 変数の削除 | glab variable delete <key> | ⚠️⚠️ |
| 変数のエクスポート | glab variable export | - |
リスクの凡例:- 安全 | ⚠️ 注意 | ⚠️⚠️ 警告 | ⚠️⚠️⚠️ 危険
このスキルを使用する場面
必ず使用する場合:
- ユーザーが CI/CD 変数の管理を希望している
- ユーザーが「variable」、「secret」、「env var」、「CI variable」、「environment variable」と言及している
- ユーザーがビルド/デプロイの設定を希望している
使用しない場合:
- ユーザーがパイプラインの実行を希望している(gitlab-ci を使用)
- ユーザーがローカルの .env ファイルの管理を希望している(ファイル操作を使用)
使用可能なコマンド
変数の一覧表示
glab variable list [options]
オプション:
| フラグ | 説明 |
|---|---|
-g, --group=<group> | グループレベルの変数を一覧表示 |
-P, --per-page=<n> | 1 ページあたりの結果数 |
使用例:
# List project variables
glab variable list
# List group variables
glab variable list -g mygroup
変数の取得
glab variable get <key> [options]
オプション:
| フラグ | 説明 |
|---|---|
-g, --group=<group> | グループレベルから取得 |
-s, --scope=<scope> | 変数のスコープ/環境 |
使用例:
# Get variable value
glab variable get API_KEY
# Get scoped variable
glab variable get DATABASE_URL --scope=production
変数の設定
glab variable set <key> <value> [options]
オプション:
| フラグ | 説明 |
|---|---|
-g, --group=<group> | グループレベルで設定 |
-m, --masked | ログ内で値をマスク |
-p, --protected | 保護されたブランチでのみ使用可能 |
-r, --raw | 値をそのまま使用(展開なし) |
-s, --scope=<scope> | 変数のスコープ/環境 |
-t, --type=<type> | 変数の種類:env_var、file |
使用例:
# Set simple variable
glab variable set API_URL "https://api.example.com"
# Set masked secret
glab variable set API_KEY "secret123" --masked
# Set protected variable (only on protected branches)
glab variable set DEPLOY_KEY "key123" --protected --masked
# Set scoped variable for production
glab variable set DATABASE_URL "postgres://prod..." --scope=production
# Set file type variable
glab variable set CONFIG_FILE "$(cat config.json)" --type=file
# Set group variable
glab variable set SHARED_SECRET "secret" -g mygroup --masked
変数の更新
glab variable update <key> <value> [options]
set と同じオプションです。既存の変数を更新します。
使用例:
# Update variable value
glab variable update API_KEY "new-secret" --masked
# Update and change scope
glab variable update DATABASE_URL "new-url" --scope=staging
変数の削除
glab variable delete <key> [options]
オプション:
| フラグ | 説明 |
|---|---|
-g, --group=<group> | グループレベルから削除 |
-s, --scope=<scope> | 変数のスコープ |
警告: 変数は完全に削除されます。
使用例:
# Delete variable
glab variable delete OLD_API_KEY
# Delete scoped variable
glab variable delete DATABASE_URL --scope=staging
変数のエクスポート
glab variable export [options]
変数を dotenv 形式でエクスポートします。
使用例:
# Export to stdout
glab variable export
# Export to file
glab variable export > .env.ci
# Export and source
eval $(glab variable export)
変数の種類
| 種類 | 用途 |
|---|---|
env_var | 環境変数(デフォルト) |
file | 値をファイルに書き込み、パスを変数として公開 |
変数フラグ
| フラグ | 効果 |
|---|---|
masked | ジョブログ内で値を非表示にする |
protected | 保護されたブランチ/タグでのみ使用可能 |
raw | 変数を展開しない(JSON などに使用) |
よくあるワークフロー
ワークフロー 1:デプロイ用変数の設定
# Set production secrets
glab variable set PROD_API_KEY "xxx" --protected --masked --scope=production
glab variable set PROD_DB_URL "postgres://..." --protected --masked --scope=production
# Set staging secrets
glab variable set STAGING_API_KEY "xxx" --masked --scope=staging
glab variable set STAGING_DB_URL "postgres://..." --masked --scope=staging
ワークフロー 2:シークレットのローテーション
# 1. List current variables
glab variable list
# 2. Update the secret
glab variable update API_KEY "new-secret-value" --masked
# 3. Trigger a new pipeline to use new secret
glab ci run
ワークフロー 3:サービスアカウントの設定
# Store credentials as masked file
glab variable set SERVICE_ACCOUNT_JSON "$(cat service-account.json)" \
--type=file --protected --masked
# In CI/CD, use $SERVICE_ACCOUNT_JSON as path to the credentials file
ワークフロー 4:複数環境の設定
# Production (protected + masked)
glab variable set DATABASE_URL "postgres://prod..." --scope=production --protected --masked
glab variable set API_KEY "prod-key" --scope=production --protected --masked
# Staging
glab variable set DATABASE_URL "postgres://staging..." --scope=staging --masked
glab variable set API_KEY "staging-key" --scope=staging --masked
# Development
glab variable set DATABASE_URL "postgres://dev..." --scope=development
glab variable set API_KEY "dev-key" --scope=development
セキュリティのベストプラクティス
- シークレットは必ずマスクする:機密性の高い値には
--maskedを使用します - 本番環境のシークレットを保護する:本番環境の認証情報には
--protectedを使用します - スコープを使用する:環境ごとに変数を分けます
- 定期的にローテーションする:シークレットを定期的に更新します
- ログ出力を避ける:CI スクリプトで変数の値を絶対にエコーしないでください
- 複雑なシークレットには file 型を使用する:JSON、証明書など
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 認証に失敗する | トークンが無効または期限切れ | glab auth login を実行 |
| 変数が見つからない | キーまたはスコープが正しくない | glab variable list で確認 |
| 値を確認できない | 変数がマスクされている | マスクされた値は取得できません |
| アクセスが拒否される | メンテナーではない | 変数にはメンテナー以上のロールが必要 |
| 値が途中で切れる | 特殊文字が含まれている | 複雑な値には --raw フラグを使用 |
関連ドキュメント
コメント
Markdown 対応