advanced⏱60 minLección 2 de 5
Patrones de Integración CI/CD
Integra OpenCode en tus pipelines CI/CD. Aprende revisión automática de código, flujos de trabajo de pruebas, automatización de despliegue y compuertas de calidad para integración continua.
Patrones de Integración CI/CD
¿Por Qué Integrar OpenCode con CI/CD?
| Beneficio | Descripción |
|---|---|
| Revisión Automatizada | La IA detecta problemas antes de la revisión humana |
| Calidad Consistente | Los mismos estándares en cada commit |
| Retroalimentación Más Rápida | Los desarrolladores reciben retroalimentación instantánea |
| Reducción de Costos | Menos ciclos de revisión humana |
Integración con GitHub Actions
Flujo de Trabajo Básico
Crear .github/workflows/opencode-review.yml:
yaml
name: OpenCode Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install OpenCode
run: npm install -g opencode
- name: Run Code Review
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
opencode run "Review this pull request for security vulnerabilities and code quality issues" \
--output review.md
- name: Comment on PR
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const review = fs.readFileSync('review.md', 'utf8');
github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: review
});Integración con GitLab CI
Crear .gitlab-ci.yml:
yaml
stages:
- review
- test
- deploy
opencode-review:
stage: review
image: node:18
script:
- npm install -g opencode
- opencode run "Review changed files for issues" > review.txt
artifacts:
paths:
- review.txt
only:
- merge_requestsCompuertas de Quality Gates
Hook Pre-commit
Crear .husky/pre-commit:
bash
#!/bin/bash
opencode run "Check if staged files follow coding standards" || exit 1Validación de PR
yaml
- name: Validate PR
run: |
opencode run "Validate:
1. All tests pass
2. No security vulnerabilities
3. Code follows style guide
4. Documentation is updated" \
--output validation-report.mdPruebas Automatizadas
Generación de Pruebas
yaml
- name: Generate Tests
run: |
opencode run "Generate unit tests for all functions in src/utils.ts" \
--output tests/utils.test.tsCobertura de Pruebas
yaml
- name: Check Coverage
run: |
npm test -- --coverage
opencode run "Analyze test coverage and suggest improvements" \
--output coverage-analysis.mdAutomatización de Despliegue
Generación de Changelog
yaml
- name: Generate Changelog
run: |
opencode run "Generate changelog from git commits since last release" \
--output CHANGELOG.mdNotas de Release
yaml
- name: Create Release Notes
if: starts_with(github.ref, 'refs/tags/')
run: |
opencode run "Create release notes for version ${{ github.ref_name }}" \
--output release-notes.mdIntegración de Seguridad
Escaneo de Vulnerabilidades
yaml
- name: Security Scan
run: |
opencode run "Scan codebase for:
1. SQL injection vulnerabilities
2. XSS vulnerabilities
3. Hardcoded secrets
4. Insecure dependencies" \
--output security-report.mdCumplimiento de Licencias
yaml
- name: License Check
run: |
opencode run "Check all dependencies have compatible licenses" \
--output license-report.mdMejores Prácticas
| Práctica | Razón |
|---|---|
| Cachear dependencias | Ejecución más rápida del pipeline |
| Establecer timeouts | Prevenir trabajos colgados |
| Usar secrets | Nunca commitear API keys |
| Trabajos paralelos | Retroalimentación más rápida |
| Almacenamiento de artefactos | Mantener reportes accesibles |
Practice Questions
Practice Question
¿Cuál es el beneficio principal de integrar OpenCode con CI/CD?
Practice Question
¿Dónde se deben almacenar las API keys en GitHub Actions?
Practice Question
¿Qué hace el comando opencode run en CI/CD?
Practice Question
¿Cómo capturas la salida de OpenCode en CI/CD?
Practice Question
¿Qué debes hacer para prevenir que los trabajos de CI/CD se cuelguen?
Success
Key Takeaways
- Integra OpenCode con GitHub Actions o GitLab CI para revisión automatizada
- Usa el flag --output para capturar resultados en archivos
- Almacena API keys en GitHub Secrets o Variables de GitLab CI
- Las comppuertas de quality gates detectan problemas antes de la revisión humana
- El escaneo de seguridad puede detectar vulnerabilidades automáticamente
- Cachear dependencias y establecer timeouts para pipelines más rápidos y confiables
- Los trabajos paralelos proporcionan retroalimentación más rápida a los desarrolladores
Progreso40%