⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Reproducible builds with GitHub Actions

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.