# Utilizar tareas en un flujo de trabajo

Utilizar flujos de trabajo para ejecutar varias tareas.

## Requisitos previos

Para implementar trabajos en los flujos de trabajo, debes comprender qué son los trabajos. Consulta [Descripción de Acciones de GitHub](/es/enterprise-server@3.22/actions/get-started/understand-github-actions#jobs).

## Configurar un ID para un trabajo

Usa `jobs.<job_id>` para asignar un identificador único al trabajo. La clave `job_id` es una cadena y su valor es un mapa de los datos de configuración del trabajo. Debes reemplazar `<job_id>` por una cadena que sea única para el objeto `jobs`. `<job_id>` debe empezar con una letra o `_`, y solo puede contener caracteres alfanuméricos, `-` o `_`.

### Ejemplo: Crear jobs

En este ejemplo, se han creado dos trabajos y sus valores `job_id` son `my_first_job` y `my_second_job`.

```yaml
jobs:
  my_first_job:
    name: My first job
  my_second_job:
    name: My second job
```

## Establecer el nombre de una tarea

Usa `jobs.<job_id>.name` a fin de establecer un nombre para el trabajo, que se muestra en la UI de GitHub.

## Definir tareas de prerrequisito

Use `jobs.<job_id>.needs` para identificar los trabajos que se deben completar correctamente antes de que se ejecute este trabajo. Puede ser una cadena o matriz de cadenas. Si un trabajo falla o se omite, se omiten todos los trabajos que dependen de él, a menos que esos trabajos usen una expresión condicional que haga que el trabajo continúe. Si una ejecución contiene una serie de trabajos que dependen unos de otros, un fallo o una omisión afecta a todos los trabajos de la cadena de dependencias a partir del punto en que se produce dicho fallo o dicha omisión. Si deseas que un trabajo se ejecute incluso si el trabajo del que depende no se realizó correctamente, usa la expresión condicional `always()` en `jobs.<job_id>.if`.

### Ejemplo: Exigir que los trabajos dependientes se completen correctamente

```yaml
jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]
```

En este ejemplo, `job1` se debe completar correctamente antes de que comience `job2` y `job3` espera a que se completen `job1` y `job2`.

En este ejemplo, los trabajos se ejecutan de manera secuencial:

1. `job1`
2. `job2`
3. `job3`

### Ejemplo: No requerir jobs dependientes exitosos

```yaml
jobs:
  job1:
  job2:
    needs: job1
  job3:
    if: ${{ always() }}
    needs: [job1, job2]
```

En este ejemplo, `job3` usa la expresión condicional `always()` para que siempre se ejecute después de que se hayan completado `job1` y `job2`, independientemente de si se han realizado correctamente. Para más información, consulta [Evaluación de expresiones en flujos de trabajo y acciones](/es/enterprise-server@3.22/actions/reference/workflows-and-actions/expressions#status-check-functions).

## Uso de una matriz para ejecutar trabajos con variables diferentes

Para ejecutar automáticamente un trabajo con diferentes combinaciones de variables, como sistemas operativos o versiones de lenguaje, define una estrategia de `matrix` en el flujo de trabajo.

Para más información, consulta [Ejecución de variaciones de trabajos en un flujo de trabajo](/es/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations).