Agent Skillswshobson/agents › gitlab-ci-patterns

gitlab-ci-patterns

GitHub

提供 GitLab CI/CD 流水线构建模式,涵盖多阶段工作流、缓存配置、分布式 Runner 设置及自动化测试部署。用于优化管道性能、实现 GitOps 和基础设施即代码流程。

plugins/cicd-automation/skills/gitlab-ci-patterns/SKILL.md wshobson/agents

Trigger Scenarios

实现 GitLab CI/CD 自动化 配置多阶段流水线 优化管道性能 从 GitLab 部署到 Kubernetes

Install

npx skills add wshobson/agents --skill gitlab-ci-patterns -g -y
More Options

Non-standard path

npx skills add https://github.com/wshobson/agents/tree/main/plugins/cicd-automation/skills/gitlab-ci-patterns -g -y

Use without installing

npx skills use wshobson/agents@gitlab-ci-patterns

指定 Agent (Claude Code)

npx skills add wshobson/agents --skill gitlab-ci-patterns -a claude-code -g -y

安装 repo 全部 skill

npx skills add wshobson/agents --all -g -y

预览 repo 内 skill

npx skills add wshobson/agents --list

SKILL.md

Frontmatter
{
    "name": "gitlab-ci-patterns",
    "description": "Build GitLab CI\/CD pipelines with multi-stage workflows, caching, and distributed runners for scalable automation. Use when implementing GitLab CI\/CD, optimizing pipeline performance, or setting up automated testing and deployment."
}

GitLab CI Patterns

Comprehensive GitLab CI/CD pipeline patterns for automated testing, building, and deployment.

Purpose

Create efficient GitLab CI pipelines with proper stage organization, caching, and deployment strategies.

When to Use

  • Automate GitLab-based CI/CD
  • Implement multi-stage pipelines
  • Configure GitLab Runners
  • Deploy to Kubernetes from GitLab
  • Implement GitOps workflows

Basic Pipeline Structure

stages:
  - build
  - test
  - deploy

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: "/certs"

build:
  stage: build
  image: node:20
  script:
    - npm ci
    - npm run build
  artifacts:
    paths:
      - dist/
    expire_in: 1 hour
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - node_modules/

test:
  stage: test
  image: node:20
  script:
    - npm ci
    - npm run lint
    - npm test
  coverage: '/Lines\s*:\s*(\d+\.\d+)%/'
  artifacts:
    reports:
      coverage_report:
        coverage_format: cobertura
        path: coverage/cobertura-coverage.xml

deploy:
  stage: deploy
  image: bitnami/kubectl:1.31
  script:
    - kubectl apply -f k8s/
    - kubectl rollout status deployment/my-app
  only:
    - main
  environment:
    name: production
    url: https://app.example.com

Docker Build and Push

build-docker:
  stage: build
  image: docker:24
  services:
    - docker:24-dind
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker build -t $CI_REGISTRY_IMAGE:latest .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    - docker push $CI_REGISTRY_IMAGE:latest
  only:
    - main
    - tags

Multi-Environment Deployment

.deploy_template: &deploy_template
  image: bitnami/kubectl:1.31
  before_script:
    - kubectl config set-cluster k8s --server="$KUBE_URL" --insecure-skip-tls-verify=true
    - kubectl config set-credentials admin --token="$KUBE_TOKEN"
    - kubectl config set-context default --cluster=k8s --user=admin
    - kubectl config use-context default

deploy:staging:
  <<: *deploy_template
  stage: deploy
  script:
    - kubectl apply -f k8s/ -n staging
    - kubectl rollout status deployment/my-app -n staging
  environment:
    name: staging
    url: https://staging.example.com
  only:
    - develop

deploy:production:
  <<: *deploy_template
  stage: deploy
  script:
    - kubectl apply -f k8s/ -n production
    - kubectl rollout status deployment/my-app -n production
  environment:
    name: production
    url: https://app.example.com
  when: manual
  only:
    - main

Terraform Pipeline

stages:
  - validate
  - plan
  - apply

variables:
  TF_ROOT: ${CI_PROJECT_DIR}/terraform
  TF_VERSION: "1.6.0"

before_script:
  - cd ${TF_ROOT}
  - terraform --version

validate:
  stage: validate
  image: hashicorp/terraform:${TF_VERSION}
  script:
    - terraform init -backend=false
    - terraform validate
    - terraform fmt -check

plan:
  stage: plan
  image: hashicorp/terraform:${TF_VERSION}
  script:
    - terraform init
    - terraform plan -out=tfplan
  artifacts:
    paths:
      - ${TF_ROOT}/tfplan
    expire_in: 1 day

apply:
  stage: apply
  image: hashicorp/terraform:${TF_VERSION}
  script:
    - terraform init
    - terraform apply -auto-approve tfplan
  dependencies:
    - plan
  when: manual
  only:
    - main

Security Scanning

include:
  - template: Security/SAST.gitlab-ci.yml
  - template: Security/Dependency-Scanning.gitlab-ci.yml
  - template: Security/Container-Scanning.gitlab-ci.yml

trivy-scan:
  stage: test
  image: aquasec/trivy:0.58.0
  script:
    - trivy image --exit-code 1 --severity HIGH,CRITICAL $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  allow_failure: true

Caching Strategies

# Cache node_modules
build:
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - node_modules/
    policy: pull-push

# Global cache
cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - .cache/
    - vendor/

# Separate cache per job
job1:
  cache:
    key: job1-cache
    paths:
      - build/

job2:
  cache:
    key: job2-cache
    paths:
      - dist/

Dynamic Child Pipelines

generate-pipeline:
  stage: build
  script:
    - python generate_pipeline.py > child-pipeline.yml
  artifacts:
    paths:
      - child-pipeline.yml

trigger-child:
  stage: deploy
  trigger:
    include:
      - artifact: child-pipeline.yml
        job: generate-pipeline
    strategy: depend

Best Practices

  1. Use specific image tags (node:20, not node:latest)
  2. Cache dependencies appropriately
  3. Use artifacts for build outputs
  4. Implement manual gates for production
  5. Use environments for deployment tracking
  6. Enable merge request pipelines
  7. Use pipeline schedules for recurring jobs
  8. Implement security scanning
  9. Use CI/CD variables for secrets
  10. Monitor pipeline performance

Related Skills

  • github-actions-templates - For GitHub Actions
  • deployment-pipeline-design - For architecture
  • secrets-management - For secrets handling

Version History

  • 367cb6a Current 2026-08-20 06:50

Same Skill Collection

plugins/accessibility-compliance/skills/screen-reader-testing/SKILL.md
plugins/accessibility-compliance/skills/wcag-audit-patterns/SKILL.md
plugins/agent-teams/skills/multi-reviewer-patterns/SKILL.md
plugins/agent-teams/skills/parallel-debugging/SKILL.md
plugins/agent-teams/skills/task-coordination-strategies/SKILL.md
plugins/api-scaffolding/skills/fastapi-templates/SKILL.md
plugins/avoid-ai-writing/skills/avoid-ai-writing/SKILL.md
plugins/backend-development/skills/api-design-principles/SKILL.md
plugins/backend-development/skills/architecture-patterns/SKILL.md
plugins/backend-development/skills/cqrs-implementation/SKILL.md
plugins/backend-development/skills/event-store-design/SKILL.md
plugins/backend-development/skills/microservices-patterns/SKILL.md
plugins/backend-development/skills/projection-patterns/SKILL.md
plugins/backend-development/skills/temporal-python-testing/SKILL.md
plugins/backend-development/skills/workflow-orchestration-patterns/SKILL.md
plugins/before-you-build/skills/before-you-build/SKILL.md
plugins/block-no-verify/skills/block-no-verify-hook/SKILL.md
plugins/blockchain-web3/skills/defi-protocol-templates/SKILL.md
plugins/blockchain-web3/skills/nft-standards/SKILL.md
plugins/blockchain-web3/skills/solidity-security/SKILL.md
plugins/blockchain-web3/skills/web3-testing/SKILL.md
plugins/business-analytics/skills/data-storytelling/SKILL.md
plugins/business-analytics/skills/kpi-dashboard-design/SKILL.md
plugins/cicd-automation/skills/deployment-pipeline-design/SKILL.md
plugins/cicd-automation/skills/github-actions-templates/SKILL.md
plugins/cicd-automation/skills/secrets-management/SKILL.md
plugins/cloud-infrastructure/skills/cost-optimization/SKILL.md
plugins/cloud-infrastructure/skills/hybrid-cloud-networking/SKILL.md
plugins/cloud-infrastructure/skills/istio-traffic-management/SKILL.md
plugins/cloud-infrastructure/skills/linkerd-patterns/SKILL.md
plugins/cloud-infrastructure/skills/mtls-configuration/SKILL.md
plugins/cloud-infrastructure/skills/multi-cloud-architecture/SKILL.md
plugins/cloud-infrastructure/skills/service-mesh-observability/SKILL.md
plugins/cloud-infrastructure/skills/terraform-module-library/SKILL.md
plugins/conductor/skills/track-management/SKILL.md
plugins/conductor/skills/workflow-patterns/SKILL.md
plugins/data-engineering/skills/airflow-dag-patterns/SKILL.md
plugins/data-engineering/skills/data-quality-frameworks/SKILL.md
plugins/data-engineering/skills/dbt-transformation-patterns/SKILL.md
plugins/data-engineering/skills/spark-optimization/SKILL.md
plugins/database-design/skills/postgresql/SKILL.md
plugins/developer-essentials/skills/auth-implementation-patterns/SKILL.md
plugins/developer-essentials/skills/bazel-build-optimization/SKILL.md
plugins/developer-essentials/skills/code-review-excellence/SKILL.md
plugins/developer-essentials/skills/debugging-strategies/SKILL.md
plugins/developer-essentials/skills/e2e-testing-patterns/SKILL.md
plugins/developer-essentials/skills/error-handling-patterns/SKILL.md
plugins/developer-essentials/skills/git-advanced-workflows/SKILL.md
plugins/developer-essentials/skills/monorepo-management/SKILL.md

Metadata

Files
0
Version
367cb6a
Hash
0b2d3cf9
Indexed
2026-08-20 06:50

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-21 21:34
浙ICP备14020137号-1 $mapa de visitantes$