gitlab-variable

Original🇺🇸 English
Translated

GitLab CI/CD variable operations. ALWAYS use this skill when user wants to: (1) list CI/CD variables, (2) set/create variables, (3) update variables, (4) delete variables, (5) manage secrets.

2installs
Added on

NPX Install

npx skill4agent add grandcamel/gitlab-assistant-skills gitlab-variable

Tags

Translated version includes tags in frontmatter

CI/CD Variable Skill

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

Quick Reference

OperationCommandRisk
List variables
glab variable list
-
Get variable
glab variable get <key>
-
Set variable
glab variable set <key> <value>
⚠️
Update variable
glab variable update <key> <value>
⚠️
Delete variable
glab variable delete <key>
⚠️⚠️
Export variables
glab 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

bash
glab variable list [options]
Options:
FlagDescription
-g, --group=<group>
List group-level variables
-P, --per-page=<n>
Results per page
Examples:
bash
# List project variables
glab variable list

# List group variables
glab variable list -g mygroup

Get Variable

bash
glab variable get <key> [options]
Options:
FlagDescription
-g, --group=<group>
Get from group level
-s, --scope=<scope>
Variable scope/environment
Examples:
bash
# Get variable value
glab variable get API_KEY

# Get scoped variable
glab variable get DATABASE_URL --scope=production

Set Variable

bash
glab variable set <key> <value> [options]
Options:
FlagDescription
-g, --group=<group>
Set at group level
-m, --masked
Mask value in logs
-p, --protected
Only available in protected branches
-r, --raw
Value is raw (no expansion)
-s, --scope=<scope>
Variable scope/environment
-t, --type=<type>
Variable type: env_var, file
Examples:
bash
# 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

bash
glab variable update <key> <value> [options]
Same options as
set
. Updates existing variable.
Examples:
bash
# 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

bash
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:
bash
# Delete variable
glab variable delete OLD_API_KEY

# Delete scoped variable
glab variable delete DATABASE_URL --scope=staging

Export Variables

bash
glab variable export [options]
Export variables in dotenv format.
Examples:
bash
# 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_var
Environment variable (default)
file
Write value to file, expose path as variable

Variable Flags

FlagEffect
masked
Value is hidden in job logs
protected
Only available on protected branches/tags
raw
No variable expansion (use for JSON, etc.)

Common Workflows

Workflow 1: Set Up Deployment Variables

bash
# 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

bash
# 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

bash
# 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

bash
# 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

  • Safeguards
  • Quick Reference