mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-09 14:02:56 +09:00
`--cache-to type=inline` only exports the final stage. 25 of 38 Dockerfiles are multistage, so the expensive `builder` stages (Go/Node compiles) were never cached even with a warm tag. Switch every image to a shared mode=max registry cache. - New `cache-args` macro (hack/common-envs.mk) emits `--cache-from` always and `--cache-to … mode=max` only when WRITE_CACHE=1, so PR builds stay read-only and concurrent PRs never race on the cache ref (the 409 class #2711 fixed for tags). oci-mediatypes/image-manifest keep the cache manifest portable across registries. - Cache ref is CACHE_REGISTRY/<img>:buildcache, co-located with the build registry (CACHE_REGISTRY now defaults to $(REGISTRY)). - New build-main.yaml warms :buildcache on every push to main (WRITE_CACHE=1), serialized via concurrency. All 31 package image recipes converted from the inline cache-from/cache-to pair to `$(call cache-args,…)`; ubuntu-container-disk keeps a per-k8s-version cache tag. Verified with `make -n image` across all packages in both PR (read-only) and main (mode=max write) contexts. Part of #2937. Assisted-By: Claude <noreply@anthropic.com> Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
59 lines
2.2 KiB
Makefile
59 lines
2.2 KiB
Makefile
NAME=talos
|
|
NAMESPACE=cozy-system
|
|
|
|
TALOS_VERSION=$(shell awk '/^version:/ {print $$2}' images/talos/profiles/installer.yaml)
|
|
|
|
include ../../../hack/common-envs.mk
|
|
|
|
update:
|
|
hack/gen-profiles.sh
|
|
|
|
image: image-matchbox image-talos
|
|
|
|
image-talos:
|
|
test -f ../../../_out/assets/installer-amd64.tar || make talos-installer
|
|
set -e; \
|
|
SRC=docker-archive:../../../_out/assets/installer-amd64.tar; \
|
|
skopeo copy "$$SRC" docker://$(REGISTRY)/talos:$(IMAGE_TAG); \
|
|
if [ "$(PUBLISH_VERSIONED)" = "1" ]; then skopeo copy "$$SRC" docker://$(REGISTRY)/talos:$(TALOS_VERSION); fi; \
|
|
if [ "$(PUBLISH_FLOATING)" = "1" ]; then skopeo copy "$$SRC" docker://$(REGISTRY)/talos:latest; fi
|
|
|
|
image-matchbox:
|
|
test -f ../../../_out/assets/kernel-amd64 || make talos-kernel
|
|
test -f ../../../_out/assets/initramfs-metal-amd64.xz || make talos-initramfs
|
|
docker buildx build -f images/matchbox/Dockerfile ../../.. \
|
|
$(call image-tags,matchbox,$(TALOS_VERSION)) \
|
|
$(call cache-args,matchbox) \
|
|
--metadata-file images/matchbox.json \
|
|
$(BUILDX_ARGS)
|
|
echo "$(REGISTRY)/matchbox:$(IMAGE_TAG)@$$(yq e '."containerimage.digest"' images/matchbox.json -o json -r)" \
|
|
> ../../extra/bootbox/images/matchbox.tag
|
|
rm -f images/matchbox.json
|
|
|
|
assets: talos-iso talos-nocloud talos-metal talos-kernel talos-initramfs
|
|
|
|
talos-initramfs:
|
|
test -f ../../../_out/assets/initramfs-metal-amd64.xz || $(MAKE) build-talos-initramfs
|
|
|
|
talos-kernel:
|
|
test -f ../../../_out/assets/kernel-amd64 || $(MAKE) build-talos-kernel
|
|
|
|
talos-installer:
|
|
test -f ../../../_out/assets/installer-amd64.tar || $(MAKE) build-talos-installer
|
|
|
|
talos-iso:
|
|
test -f ../../../_out/assets/metal-amd64.iso || $(MAKE) build-talos-iso
|
|
|
|
talos-nocloud:
|
|
test -f ../../../_out/assets/nocloud-amd64.raw.xz || $(MAKE) build-talos-nocloud
|
|
|
|
talos-metal:
|
|
test -f ../../../_out/assets/metal-amd64.raw.xz || $(MAKE) build-talos-metal
|
|
|
|
build-talos-initramfs build-talos-kernel build-talos-installer build-talos-iso build-talos-nocloud build-talos-metal:
|
|
mkdir -p ../../../_out/assets
|
|
cat images/talos/profiles/$(subst build-talos-,,$@).yaml | \
|
|
docker run --rm -i -v /dev:/dev --privileged "ghcr.io/siderolabs/imager:$(TALOS_VERSION)" --tar-to-stdout - | \
|
|
tar -C ../../../_out/assets -xzf-
|
|
|