ci: reproducible builds with SOURCE_DATE_EPOCH

Abierto
#716 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 4 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
68/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
git, python

Línea de trabajo

Empieza leyendo scripts/apache_release.py para seguir la ruta de compilación de la versión e inspecciona scripts/README.md para consultar la documentación de compilación existente. Añade cobertura para una recompilación de un commit etiquetado y verifica que los artefactos generados repetidamente tengan sumas de comprobación coincidentes; se considera terminado cuando SOURCE_DATE_EPOCH se establece a partir de la etiqueta antes de la compilación y la reproducibilidad queda documentada.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area/ci kind/improvement priority/high

Part of #715

Problem

Our build artifacts are not reproducible. Building the same source twice may produce different checksums due to timestamps embedded in the tarball/wheel metadata. This makes voter verification harder and prevents bit-for-bit comparison of locally rebuilt packages against the RC artifacts.

Solution

Set SOURCE_DATE_EPOCH to the timestamp of the tagged commit before building. This ensures all file timestamps inside the archive are deterministic.

Airflow does this in their release tooling and it allows voters to rebuild from source and binary-compare against the SVN artifacts.

Implementation
  • In scripts/apache_release.py, before calling hatch build or python -m build:
    import subprocess
    epoch = subprocess.check_output(["git", "log", "-1", "--format=%ct", tag]).strip()
    os.environ["SOURCE_DATE_EPOCH"] = epoch.decode()
    
  • Document in scripts/README.md that builds are reproducible
  • Add a test that rebuilds from a tagged commit and compares checksums
References
Lenguaje dominante
Python
Estrellas
2.6k
Forks
212
Merge medio
5 d 14 h
PR fusionados (30 d)
39

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/burr

Todos los issues de apache/burr

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.