mcpField
G
gitlab-variable

gitlab-variable

github.com/grandcamelCloud & DevOps489 installsUpdated 40w ago
Repository

About gitlab-variable

A skill for managing GitLab CI/CD variables with the glab CLI, aimed at build and deployment configuration. It covers listing, reading, setting, updating, deleting, and exporting variables, with risk cues for changes.

Key features

  1. 01List and read variables
  2. 02Set and update variables
  3. 03Delete variables
  4. 04Export dotenv format
  5. 05Configure scopes, types, and protection

Use cases

  1. 01Configure deployment variables by environment
  2. 02Rotate CI/CD secrets
  3. 03Export variables for local or script use

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/grandcamel/gitlab-assistant-skills --skill gitlab-variable

After installing, type/gitlab-variablein Claude Code to confirm it loaded.

Details

From the project README

CI/CD Variable Skill

CI/CD variable management operations for GitLab using the glab CLI.

Quick Reference

OperationCommandRisk
List variablesglab variable list-
Get variableglab variable get <key>-
Set variableglab variable set <key> <value>⚠️
Update variableglab variable update <key> <value>⚠️
Delete variableglab variable delete <key>⚠️⚠️
Export variablesglab variable export-

Risk Legend: - Safe | ⚠️ Caution | ⚠️⚠️ Warning | ⚠️⚠️⚠️ Danger

When to Use This Skill

ALWAYS use when:

  • User wants to manage CI/CD variables
  • User mentions "variable", "secret", "env var", "CI variable", "environment variable"
  • User wants to configure build/deployment settings

NEVER use when:

  • User wants to run pipelines (use gitlab-ci)
  • User wants to manage .env files locally (use file operations)

Available Commands

List Variables
glab variable list [options]

Options:

FlagDescription
-g, --group=<group>List group-level variables
-P, --per-page=<n>Results per page

Examples:

# List project variables
glab variable list

# List group variables
glab variable list -g mygroup
Get Variable
glab variable get <key> [options]

Options:

FlagDescription
-g, --group=<group>Get from group level
-s, --scope=<scope>Variable scope/environment

Examples:

# Get variable value
glab variable get API_KEY

# Get scoped variable
glab variable get DATABASE_URL --scope=production
Set Variable
glab variable set <key> <value> [options]

Options:

FlagDescription
-g, --group=<group>Set at group level
-m, --maskedMask value in logs
-p, --protectedOnly available in protected branches
-r, --rawValue is raw (no expansion)
-s, --scope=<scope>Variable scope/environment
-t, --type=<type>Variable type: env_var, file

Examples:

# 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
Update Variable
glab variable update <key> <value> [options]

Same options as set. Updates existing variable.

Examples:

# Update variable value
glab variable update API_KEY "new-secret" --masked

# Update and change scope
glab variable update DATABASE_URL "new-url" --scope=staging
Delete Variable
glab variable delete <key> [options]

Options:

FlagDescription
-g, --group=<group>Delete from group level
-s, --scope=<scope>Variable scope

Warning: This permanently deletes the variable.

Examples:

# Delete variable
glab variable delete OLD_API_KEY

# Delete scoped variable
glab variable delete DATABASE_URL --scope=staging
Export Variables
glab variable export [options]

Export variables in dotenv format.

Examples:

# Export to stdout
glab variable export

# Export to file
glab variable export > .env.ci

# Export and source
eval $(glab variable export)

Variable Types

TypeUse Case
env_varEnvironment variable (default)
fileWrite value to file, expose path as variable

Variable Flags

FlagEffect
maskedValue is hidden in job logs
protectedOnly available on protected branches/tags
rawNo variable expansion (use for JSON, etc.)

Common Workflows

Workflow 1: Set Up Deployment Variables
# 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
Workflow 2: Rotate Secrets
# 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
Workflow 3: Set Up Service Account
# 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
Workflow 4: Configure Multi-Environment
# 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

Security Best Practices

  1. Always mask secrets: Use --masked for any sensitive values
  2. Protect production secrets: Use --protected for production credentials
  3. Use scopes: Separate variables by environment
  4. Rotate regularly: Update secrets periodically
  5. Avoid logging: Never echo variable values in CI scripts
  6. Use file type for complex secrets: JSON, certificates, etc.

Troubleshooting

IssueCauseSolution
Authentication failedInvalid/expired tokenRun glab auth login
Variable not foundWrong key or scopeCheck with glab variable list
Cannot see valueVariable is maskedMasked values cannot be retrieved
Permission deniedNot maintainerNeed maintainer+ role for variables
Value truncatedSpecial charactersUse --raw flag for complex values

Related Documentation

Comments

Markdown supported