$ name: CI/CD Pipeline on: push: branches: [ main ] jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: -weight: 500;">npm ci - run: -weight: 500;">npm test deploy: needs: build-and-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Deploy to production run: | # Comandos de despliegue
name: CI/CD Pipeline on: push: branches: [ main ] jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: -weight: 500;">npm ci - run: -weight: 500;">npm test deploy: needs: build-and-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Deploy to production run: | # Comandos de despliegue
name: CI/CD Pipeline on: push: branches: [ main ] jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: -weight: 500;">npm ci - run: -weight: 500;">npm test deploy: needs: build-and-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Deploy to production run: | # Comandos de despliegue
name: Node.js CI/CD on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: -weight: 500;">npm ci - run: -weight: 500;">npm test - run: -weight: 500;">npm run build deploy: needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Deploy to Heroku uses: akhileshns/heroku-deploy@v3.12.12 with: heroku_api_key: ${{secrets.HEROKU_API_KEY}} heroku_app_name: "my-node-app" heroku_email: "[email protected]"
name: Node.js CI/CD on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: -weight: 500;">npm ci - run: -weight: 500;">npm test - run: -weight: 500;">npm run build deploy: needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Deploy to Heroku uses: akhileshns/heroku-deploy@v3.12.12 with: heroku_api_key: ${{secrets.HEROKU_API_KEY}} heroku_app_name: "my-node-app" heroku_email: "[email protected]"
name: Node.js CI/CD on: push: branches: [ main ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v2 with: node-version: '14' - run: -weight: 500;">npm ci - run: -weight: 500;">npm test - run: -weight: 500;">npm run build deploy: needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Deploy to Heroku uses: akhileshns/heroku-deploy@v3.12.12 with: heroku_api_key: ${{secrets.HEROKU_API_KEY}} heroku_app_name: "my-node-app" heroku_email: "[email protected]" - Configuración basada en YAML
- Amplia biblioteca de acciones predefinidas
- Integración nativa con repositorios GitHub
- Soporte para múltiples lenguajes y plataformas
- Ejecución en contenedores o máquinas virtuales - Activación por push a una rama específica
- Construcción del código
- Ejecución de pruebas automatizadas
- Generación de artefactos
- Despliegue a entornos de staging o producción - Integración nativa: Al estar integrado directamente en GitHub, elimina la necesidad de herramientas externas.
- Facilidad de uso: La configuración basada en YAML es intuitiva y fácil de aprender.
- Flexibilidad: Soporta una amplia gama de lenguajes y plataformas.
- Escalabilidad: Puede manejar proyectos de cualquier tamaño, desde pequeños hasta empresariales.
- Comunidad activa: Acceso a una gran biblioteca de acciones predefinidas creadas por la comunidad. - Curva de aprendizaje: Aunque es relativamente fácil de usar, dominar todas sus características puede llevar tiempo.
- Limitaciones de tiempo de ejecución: Los workflows gratuitos tienen límites de tiempo de ejecución que pueden ser restrictivos para proyectos grandes.
- Dependencia de GitHub: Al estar tan integrado con GitHub, puede ser difícil migrar a otras plataformas. - Aplicaciones web: Automatización de pruebas y despliegue de aplicaciones frontend y backend.
- Desarrollo móvil: Compilación y distribución de aplicaciones iOS y Android.
- Microservicios: Implementación de CI/CD para aplicaciones Kubernetes.
- Análisis de código: Ejecución automática de linters y herramientas de análisis estático. - Mayor integración con servicios cloud
- Mejoras en seguridad y cumplimiento normativo
- Expansión de capacidades de automatización más allá del CI/CD tradicional
- Integración más profunda con herramientas de análisis y monitoreo