# Fichiers de verrouillage des dépendances du workflow

Un fichier de verrouillage fige chaque action dont vos flux de travail dépendent sur un commit vérifié, de sorte que le code que vous avez examiné est le code qui s’exécute.

> \[!NOTE] Les fichiers de verrouillage des dépendances du workflow sont dans préversion publique et peuvent être modifiés.

## Pourquoi verrouiller les dépendances de workflow ?

Lorsqu’un flux de travail fait référence à une action par une balise ou une branche, par exemple `uses: octo-org/deploy-action@v3` ou `uses: octo-org/deploy-action@main`, GitHub Actions résout cette référence vers la validation vers laquelle pointe la balise ou la branche au moment de l’exécution.

Les balises et les branches peuvent être déplacées, de sorte que le code qui s’exécute n’est pas garanti comme étant le code que l’auteur du flux de travail a examiné à l’origine. Si le compte d’un mainteneur amont est compromis et qu’un tag est repointé, vos dépôts pourraient exécuter du code malveillant.

Un fichier de verrouillage des dépendances de workflow associe un SHA de commit à chaque action (y compris les dépendances transitives) et au workflow réutilisable dont dépendent vos workflows. Cela vous donne les points suivants :

* Compilations reproductibles
* Modifications des dépendances révisables et Dependabot mises à jour de version
* Inventaire auditable des dépendances de vos systèmes CI/CD

## Comment fonctionne le fichier lockfile ?

Le fichier de verrouillage est défini dans un référentiel à l’adresse `.github/workflows/actions.lock`. Elle est générée par `gh actions-lock`, une GitHub CLI extension et ne doit jamais être modifiée manuellement.

Vous pouvez migrer les flux de travail d’un référentiel vers le lockfile un à la fois ou tous à la fois. Une fois qu’un workflow est mis en service :

* Chaque dépendance d’action utilisée par le flux de travail doit être présente dans le fichier de verrouillage.
* Le commit verrouillé est ce qui s’exécute lorsque le flux de travail s’exécute et ce que les stratégies d’actions autorisées vérifient. Ce commit doit exister dans une branche du référentiel source.

Un fichier lock couvre les flux de travail dans son propre dépôt. Il s’étend aux dépendances transitives (actions que *vos dépendances d’action* utilisent), **à l’exception** des dépendances des appels de flux de travail réutilisables. Un workflow réutilisable est couvert par le fichier de verrouillage du référentiel où il est défini.

## Que contient le fichier de verrouillage ?

Le fichier de verrouillage comporte deux sections.
`workflows` enregistre les dépendances que chaque flux de travail intégré utilise, et `dependencies` enregistre vers quel commit chacune de ces références se résout.

```yaml
# This file is machine-generated by `gh actions-lock`.
# Do not edit by hand; run `gh actions-lock` to update.
version: 'v0.0.2'
workflows:
    '.github/workflows/ci.yml':
        - 'octo-org/deploy-action@v3.1.0'
dependencies:
    'octo-org/deploy-action@v3.1.0':
        ref: 'v3.1.0'
        commit: 'sha1-...'
        owner_id: 44036562
        repo_id: 197814629
```

Chaque dépendance enregistre :

* **`ref`** : la référence utilisée par le flux de travail, telle qu’une balise ou une branche.
* **`commit`** : Le commit exact auquel la référence a été résolue. Il s’agit du code qui s’exécutera.
* **`owner_id` et `repo_id`**: Identité numérique du dépôt source. GitHub Actions utilise ces éléments pour confirmer au moment de l’exécution que le dépôt associé au nom est toujours celui que vous avez verrouillé.

## Comment les fichiers de verrouillage se comparent-ils à l’épinglage SHA ?

GitHub a historiquement recommandé d’épingler des actions tierces à un SHA de commit complet dans vos fichiers de flux de travail. Pour les dépôts qui adoptent un fichier de verrou, l’épinglage SHA dans les fichiers de workflow **n’est plus nécessaire**. Le fichier de verrouillage est la meilleure option, car il prend en charge les dépendances transitives, facilite la lecture des fichiers de flux de travail et enregistre l’identité du référentiel source.

## Étapes suivantes

Pour créer un fichier de verrouillage pour un référentiel, consultez [Verrouillage des dépendances d’action dans les flux de travail d’un dépôt](/fr/actions/how-tos/secure-your-work/lock-workflow-dependencies).