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: 0name: 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: 0Marcas 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.