Compartir comentarios
Las respuestas se generan en base a la documentación.

Compilaciones reproducibles con GitHub Actions

SOURCE_DATE_EPOCH es una variable de entorno estandarizada para indicar a las herramientas de compilación que produzcan una salida reproducible. Definir esta variable de entorno para una compilación hace que las marcas de tiempo en el índice de la imagen, la configuración y los metadatos de los archivos reflejen el tiempo Unix especificado.

Para definir la variable de entorno en GitHub Actions, utiliza la propiedad integrada env en el paso de compilación.

Marcas de tiempo de la época Unix

El siguiente ejemplo establece la variable SOURCE_DATE_EPOCH a 0, la época Unix.

name: ci

on:
  push:

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Configurar Docker Buildx
        uses: docker/setup-buildx-action@v4

      - name: Compilar
        uses: docker/build-push-action@v7
        with:
          tags: user/app:latest
        env:
          SOURCE_DATE_EPOCH: 0
name: ci

on:
  push:

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Configurar Docker Buildx
        uses: docker/setup-buildx-action@v4

      - name: Compilar
        uses: docker/bake-action@v7
        env:
          SOURCE_DATE_EPOCH: 0

Marcas de tiempo de confirmaciones de Git

El siguiente ejemplo establece SOURCE_DATE_EPOCH a la marca de tiempo de la confirmación (commit) de Git.

name: ci

on:
  push:

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Configurar Docker Buildx
        uses: docker/setup-buildx-action@v4

      - name: Obtener marcas de tiempo de confirmaciones de Git
        run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV

      - name: Compilar
        uses: docker/build-push-action@v7
        with:
          tags: user/app:latest
        env:
          SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }}
name: ci

on:
  push:

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Configurar Docker Buildx
        uses: docker/setup-buildx-action@v4

      - name: Obtener marcas de tiempo de confirmaciones de Git
        run: echo "TIMESTAMP=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV

      - name: Compilar
        uses: docker/bake-action@v7
        env:
          SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }}

Información adicional

Para obtener más información sobre el soporte de SOURCE_DATE_EPOCH en BuildKit, consulta la documentación de BuildKit.