用途
该技能用于在 GitLab 流水线中配置 CI/CD 变量并安全管理密钥,覆盖凭据的安全处理。适用场景包括:配置 GitLab CI/CD 变量、管理密钥,或与外部密钥提供商集成。
主要能力
变量类型
预定义变量:GitLab 提供的内置变量,例如:
build:
script:
- echo "Branch: $CI_COMMIT_BRANCH"
- echo "Commit: $CI_COMMIT_SHA"
- echo "Pipeline: $CI_PIPELINE_ID"
- echo "Project: $CI_PROJECT_NAME"
- echo "Registry: $CI_REGISTRY_IMAGE"
自定义变量:
variables:
NODE_ENV: production
DATABASE_URL: "postgres://localhost/app"
build:
variables:
BUILD_TARGET: dist
script:
- npm run build --target=$BUILD_TARGET
变量作用域
全局变量:
variables:
GLOBAL_VAR: "available everywhere"
作业级变量:
deploy:
variables:
DEPLOY_ENV: production
script:
- ./deploy.sh $DEPLOY_ENV
环境级变量:在 GitLab UI 中配置:Settings > CI/CD > Variables;可限定到特定环境(production、staging),也可限定到特定分支(main、develop)。
受保护变量与掩码变量
在 gitlab-ci.yml 中:
variables:
PUBLIC_KEY:
value: "pk_test_xxx"
description: "Stripe public key"
在 GitLab UI 中设置变量时可启用:
- Protected(受保护):仅在受保护的分支/标签上可用
- Masked(掩码):在作业日志中隐藏(需要特定格式)
- Expanded(展开):允许在值中引用变量
文件类型变量
deploy:
script:
- cat $KUBECONFIG # File variable contents
- kubectl apply -f deployment.yaml
外部密钥提供商
HashiCorp Vault:
job:
secrets:
DATABASE_PASSWORD:
vault:
engine:
name: kv-v2
path: secret
field: password
path: production/db
Azure Key Vault:
job:
secrets:
API_KEY:
azure_key_vault:
name: my-api-key
version: latest
AWS Secrets Manager:
job:
secrets:
AWS_SECRET:
aws_secrets_manager:
name: prod/api-key
version_id: latest
OIDC 身份验证
deploy:aws:
id_tokens:
AWS_TOKEN:
aud: https://gitlab.com
script:
- >
aws sts assume-role-with-web-identity
--role-arn $AWS_ROLE_ARN
--web-identity-token $AWS_TOKEN
最佳实践
- 绝不在
.gitlab-ci.yml中硬编码密钥 - 生产凭据使用受保护变量
- 对敏感值进行掩码,避免日志暴露
- 优先使用 OIDC 而非长期凭据
- 将变量作用域限定到所需的最小环境范围
- 证书和密钥使用文件类型变量
限制
资料未提供该技能的安装命令、具体依赖要求、支持的 GitLab 版本范围,以及定价或授权信息。