Descripción de los flujos de trabajo

Completado

Los flujos de trabajo son procesos automatizados que se definen para compilar, probar, empaquetar, liberar o implementar el proyecto. Constan de uno o varios trabajos que se ejecutan en respuesta a eventos específicos del repositorio.

Estructura de flujo de trabajo

Cada flujo de trabajo incluye estos componentes clave:

Desencadenadores (eventos)

Defina cuándo debe ejecutarse el flujo de trabajo: al insertar, solicitar incorporación de cambios, programar o desencadenar manualmente.

Jobs

Conjunto de pasos que se ejecutan en el mismo entorno de ejecución. Los trabajos se ejecutan en paralelo de forma predeterminada, pero se pueden configurar para ejecutarse secuencialmente.

Steps

Tareas individuales dentro de un trabajo que pueden ejecutar comandos, configurar tareas o usar acciones.

Ejecutores

El entorno de computación donde se ejecutan sus trabajos - ya sea hospedado en GitHub o autohospedado.

Ubicación y nomenclatura del flujo de trabajo

Los flujos de trabajo se almacenan como archivos YAML en el .github/workflows directorio del repositorio. El nombre de archivo se convierte en el identificador de flujo de trabajo en la interfaz de usuario de GitHub.

Ejemplo de flujo de trabajo moderno

Este es un ejemplo completo con los procedimientos recomendados actuales:

# .github/workflows/ci.yml
name: CI Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]
  schedule:
    - cron: "0 2 * * 0" # Weekly dependency check

env:
  NODE_VERSION: "20"

jobs:
  test:
    name: Test and Lint
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Run linting
        run: npm run lint

      - name: Run tests with coverage
        run: npm run test:coverage

      - name: Upload coverage reports
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  build:
    name: Build Application
    runs-on: ubuntu-latest
    needs: test

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Build application
        run: npm run build

      - name: Upload build artifacts
        uses: actions/upload-artifact@v4
        with:
          name: build-files
          path: dist/

Mejoras clave en flujos de trabajo modernos

En este ejemplo se muestran los procedimientos recomendados actuales:

  • Versiones de acción más recientes: Uso @v4 de versiones de acciones populares
  • Almacenamiento en caché de dependencias: acelera la ejecución del flujo de trabajo
  • Variables de entorno: administración centralizada de la configuración
  • Dependencias de trabajos: build el trabajo solo se ejecuta después de test que se complete con éxito.
  • Control de artefactos: almacenamiento adecuado y uso compartido de salidas de compilación
  • Seguridad: Uso de secretos para datos confidenciales como tokens

Recursos adicionales

Explore estos recursos para mejorar el conocimiento del flujo de trabajo: