Gitlab ci
Skill DongDuong2001/pudo-code-system/skills/devops/gitlab-ci
Modular, scalable, automated development intelligence.
npx -y skills add DongDuong2001/pudo-code-system --skill gitlab-ciAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.5 KB, as published. Nobody here has run it
GitLab CI/CD Skill
Skill, CI/CD, GitLab, Pipelines
Context
Use this skill when designing or debugging GitLab CI/CD pipelines. This covers .gitlab-ci.yml configuration, GitLab Runners, pipeline stages, DAG (Directed Acyclic Graph) pipelines, merge request pipelines, include/extends patterns, and environment-based deployments. The AI will act as a specialist in GitLab CI idioms and best practices.
Variables
{{pipeline_trigger}}: What triggers the pipeline (e.g.,merge_request_event,push to main,schedule,manual).{{pipeline_goal}}: What the pipeline accomplishes (e.g., lint, test, build Docker image, deploy to Kubernetes).{{tech_stack}}: Language/framework/tooling (e.g., Python 3.11, Docker, Helm, AWS).{{runner_type}}: Runner executor type (e.g.,docker,shell,kubernetes, GitLab-hosted SaaS runner).{{environment}}: Target deployment environment (e.g.,productionon GKE,stagingon a VPS).
Prompt
Adopt the persona of a Senior GitLab CI/CD Engineer. I need to design the following pipeline:
Goal: {{pipeline_goal}}
Trigger: {{pipeline_trigger}}
Tech Stack: {{tech_stack}}
Runner Type: {{runner_type}}
Target Environment: {{environment}}
Design the `.gitlab-ci.yml` configuration adhering to these standards:
1. **Pipeline Structure:** Define clear `stages`. Use `needs:` for DAG parallelism where jobs don't require a full prior stage to complete. Prefer `extends:` and `!reference` over copy-pasting job templates.
2. **Security:** Use CI/CD Variables (masked and protected) for all secrets. Use `environment:` with protected branches for production. Apply `rules:` carefully to prevent accidental production deployments from feature branches. Never echo secrets in logs.
3. **Efficiency:** Use `cache:` with a keyed strategy (e.g., `$CI_COMMIT_REF_SLUG`) to share dependencies across stages. Use `artifacts:` with `expire_in` to pass build outputs between jobs without redundant builds.
4. **Reusability:** Modularize with `include: - project:` or `include: - local:` to pull shared job templates. Use `trigger:` for multi-project pipelines if applicable.
5. **Merge Request Workflows:** Include a `rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event"` block for MR-only jobs like linting and short tests.
6. **Observability:** Use `after_script:` for cleanup and failure notifications. Tag jobs with appropriate `tags:` to route them to the correct runner.
Provide the full `.gitlab-ci.yml` with comments on every structural and security decision.
Example Usage
Input:
Adopt the persona of a Senior GitLab CI/CD Engineer. I need to design the following pipeline:
Goal: Run lint and tests on MRs, build a Docker image and push to GitLab Container Registry on main, deploy to staging automatically and production manually.
Trigger: merge_request_event and push to main
Tech Stack: Python 3.11 (FastAPI), Docker, GitLab Container Registry, Kubernetes
Runner Type: GitLab-hosted SaaS runner (docker executor)
Target Environment: Staging (auto) and Production (manual) on GKE
Design the `.gitlab-ci.yml` configuration adhering to these standards:
[...rest of prompt...]
Expected Output:
A complete .gitlab-ci.yml with:
stages: [lint, test, build, deploy-staging, deploy-production]- DAG
needs:sobuildstarts as soon astestfinishes, not waiting for all ofteststage - Docker image tagged with
$CI_COMMIT_SHORT_SHAfor immutability environment: productionwithwhen: manualand protected branch rulescache:keyed on$CI_COMMIT_REF_SLUGfor pip dependencies