mirror of
https://gitlab.archlinux.org/archlinux/archlinux-docker.git
synced 2026-05-12 09:16:14 +02:00
Expand the repro documentation with missing bits: - The Dockerfile needs to be regenerated with the correct group for title annotation to ensure reproducibility. - The CI_COMMIT_SHA of the original pipeline needs to be honored in the Dockerfile. Also, set the timezome to UTC in Makefile and scripts to ensure consistency in the generated dates / timestamps (e.g. ARCHIVE_SNAPSHOT / SOURCE_DATE_EPOCH), regardless of the timezone of the environment. Otherwise, someone rebuilding the image locally can unexpectedly end up with a different value for those if the system uses a different timezome.
27 lines
914 B
Makefile
27 lines
914 B
Makefile
# Fixed TZ to ensure consistency
|
|
export TZ := UTC
|
|
|
|
OCITOOL=podman # or docker
|
|
BUILDDIR=$(shell pwd)/build
|
|
OUTPUTDIR=$(shell pwd)/output
|
|
ARCHIVE_SNAPSHOT=$(shell date -u -d "-1 day" +"%Y/%m/%d")
|
|
SOURCE_DATE_EPOCH=$(shell date -u -d "00:00:00" +"%s")
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
rm -rf $(BUILDDIR) $(OUTPUTDIR)
|
|
|
|
.PRECIOUS: $(OUTPUTDIR)/%.tar.zst
|
|
$(OUTPUTDIR)/%.tar.zst:
|
|
scripts/make-rootfs.sh $(*) $(BUILDDIR) $(OUTPUTDIR) $(ARCHIVE_SNAPSHOT) $(SOURCE_DATE_EPOCH)
|
|
|
|
.PRECIOUS: $(OUTPUTDIR)/Dockerfile.%
|
|
$(OUTPUTDIR)/Dockerfile.%: $(OUTPUTDIR)/%.tar.zst
|
|
scripts/make-dockerfile.sh "$(*).tar.zst" $(*) $(OUTPUTDIR) "true" "Dev" $(SOURCE_DATE_EPOCH)
|
|
|
|
# The following is for local builds only, it is not used by the CI/CD pipeline
|
|
|
|
all: image-base image-base-devel image-multilib-devel image-repro
|
|
image-%: $(OUTPUTDIR)/Dockerfile.%
|
|
${OCITOOL} build -f $(OUTPUTDIR)/Dockerfile.$(*) -t archlinux/archlinux:$(*) $(OUTPUTDIR)
|