Reproducible builds with GitHub Actions
Table des matières
SOURCE_DATE_EPOCH
est une variable d'environnement standardisée
pour instruire les outils de construction à produire une sortie reproductible.
Définir la variable d'environnement pour une construction fait que les horodatages
dans l'index d'image, la configuration et les métadonnées de fichier reflètent
le temps Unix spécifié.
Pour définir la variable d'environnement dans GitHub Actions, utilisez la
propriété env
intégrée sur l'étape de construction.
Horodatages d'époque Unix
L'exemple suivant définit la variable SOURCE_DATE_EPOCH
à 0, époque Unix.
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build
uses: docker/build-push-action@v6
with:
tags: user/app:latest
env:
SOURCE_DATE_EPOCH: 0
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build
uses: docker/bake-action@v6
env:
SOURCE_DATE_EPOCH: 0
Horodatages de commit Git
L'exemple suivant définit SOURCE_DATE_EPOCH
à l'horodatage du commit Git.
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Get Git commit timestamps
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV
- name: Build
uses: docker/build-push-action@v6
with:
tags: user/app:latest
env:
SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }}
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Get Git commit timestamps
run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV
- name: Build
uses: docker/bake-action@v6
env:
SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }}
Informations supplémentaires
Pour plus d'informations sur le support SOURCE_DATE_EPOCH
dans BuildKit,
voir la documentation BuildKit.