# Utilisation de tâches dans un flux de travail

Utilisez des workflows pour exécuter plusieurs travaux.

## Prérequis

Pour implémenter des travaux dans vos flux de travail, vous devez comprendre ce que sont les travaux. Consultez [Présentation des GitHub Actions](/fr/enterprise-server@3.22/actions/get-started/understand-github-actions#jobs).

## Définition d’un ID pour une tâche

Utilisez `jobs.<job_id>` pour attribuer un identificateur unique à votre travail. La clé `job_id` est une chaîne et sa valeur est une carte des données de configuration du travail. Vous devez remplacer `<job_id>` par une chaîne propre à l’objet `jobs`. `<job_id>` doit commencer par une lettre ou par `_`, et contenir uniquement des caractères alphanumériques, des `-` ou des `_`.

### Exemple : Création de travaux

Dans cet exemple, deux travaux ont été créés, et leurs valeurs `job_id` sont `my_first_job` et `my_second_job`.

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

## Définir un nom pour une tâche

Utilisez `jobs.<job_id>.name` pour définir un nom pour le travail, qui s’affiche sur l’interface utilisateur GitHub.

## Définition des travaux prérequis

Utilisez `jobs.<job_id>.needs` pour identifier les travaux à accomplir avant l’exécution de ce travail. Il peut s’agir d’une chaîne ou d’un tableau de chaînes. Si une tâche échoue ou est ignorée, toutes les tâches qui en dépendent sont ignorées, à moins que ces tâches n’utilisent une expression conditionnelle qui permet à la tâche de se poursuivre. Si une exécution contient une série de tâches qui dépendent les unes des autres, un échec ou le fait qu’une tâche soit ignorée affecte toutes les tâches de la chaîne de dépendance à partir du point d’échec ou d’omission. Si vous souhaitez qu’un travail s’exécute même si un travail dont il dépend n’a pas réussi, utilisez l’expression conditionnelle `always()` dans `jobs.<job_id>.if`.

### Exemple : Exigence de réussite de travaux dépendants

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

Dans cet exemple, `job1` doit être correctement accompli avant que `job2` commence, et `job3` attend que `job1` et `job2` soient accomplis.

Les travaux dans cet exemple s’exécutent séquentiellement :

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

### Exemple : Non-exigence de réussite de travaux dépendants

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

Dans cet exemple, `job3` utilise l’expression conditionnelle `always()` afin de toujours s’exécuter après que `job1` et `job2` ont été effectués avec ou sans succès. Pour plus d’informations, consultez « [Évaluer des expressions dans les workflows et les actions.](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/expressions#status-check-functions) ».

## Utilisation d’une matrice pour exécuter des travaux avec différentes variables

Pour exécuter automatiquement un travail avec différentes combinaisons de variables, telles que des systèmes d’exploitation ou des versions de langage, définissez une stratégie de `matrix` dans votre flux de travail.

Pour plus d’informations, consultez « [Exécution de variantes de tâches dans un workflow](/fr/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations) ».