When only leaf packages change but the platform chart remains unchanged, the Flux ArtifactGenerator produces an ExternalArtifact with the same content digest. This prevents the platform HelmRelease from reconciling, so lookup() in repository.yaml never runs and cozystack-packages OCIRepository does not pick up the new OCI digest. Write a content-based hash of the working tree state to core/platform/.build-revision before pushing the OCI artifact, ensuring the platform chart content always changes on every build. Assisted-By: Claude AI Signed-off-by: Kirill Ilin <stitch14@yandex.ru>
52 lines
2 KiB
Makefile
52 lines
2 KiB
Makefile
NAME=installer
|
|
NAMESPACE=cozy-system
|
|
|
|
include ../../../hack/common-envs.mk
|
|
|
|
pre-checks:
|
|
../../../hack/pre-checks.sh
|
|
|
|
show:
|
|
cozyhr show --namespace $(NAMESPACE) $(NAME) --plain
|
|
|
|
apply:
|
|
cozyhr show --namespace $(NAMESPACE) $(NAME) --plain | kubectl apply -f -
|
|
|
|
diff:
|
|
cozyhr show --namespace $(NAMESPACE) $(NAME) --plain | kubectl diff -f -
|
|
|
|
image: pre-checks image-operator image-packages chart
|
|
|
|
image-operator:
|
|
docker buildx build -f images/cozystack-operator/Dockerfile ../../.. \
|
|
--tag $(REGISTRY)/cozystack-operator:$(call settag,$(TAG)) \
|
|
--build-arg VERSION=$(call settag,$(TAG)) \
|
|
--cache-from type=registry,ref=$(REGISTRY)/cozystack-operator:latest \
|
|
--cache-to type=inline \
|
|
--metadata-file images/cozystack-operator.json \
|
|
$(BUILDX_ARGS)
|
|
IMAGE="$(REGISTRY)/cozystack-operator:$(call settag,$(TAG))@$$(yq -e '.["containerimage.digest"]' images/cozystack-operator.json -o json -r)" \
|
|
yq -i '.cozystackOperator.image = strenv(IMAGE)' values.yaml
|
|
rm -f images/cozystack-operator.json
|
|
|
|
image-packages:
|
|
mkdir -p ../../../_out/assets images
|
|
echo $$(git rev-parse HEAD; git diff HEAD; git ls-files --others --exclude-standard) | shasum -a 256 > ../platform/.build-revision
|
|
flux push artifact \
|
|
oci://$(REGISTRY)/cozystack-packages:$(call settag,$(TAG)) \
|
|
--path=../../../packages \
|
|
--source=https://github.com/cozystack/cozystack \
|
|
--revision="$$(git describe --tags):$$(git rev-parse HEAD)" \
|
|
2>&1 | tee images/cozystack-packages.log
|
|
export REPO="oci://$(REGISTRY)/cozystack-packages" \
|
|
export DIGEST=$$(awk -F @ '/artifact successfully pushed/ {print $$2}' images/cozystack-packages.log) && \
|
|
rm -f images/cozystack-packages.log && \
|
|
test -n "$$DIGEST" && \
|
|
yq -i '.cozystackOperator.platformSourceUrl = strenv(REPO)' values.yaml && \
|
|
yq -i '.cozystackOperator.platformSourceRef = "digest=" + strenv(DIGEST)' values.yaml
|
|
|
|
chart:
|
|
set -e; \
|
|
PKG=$$(helm package . --version $(COZYSTACK_VERSION) | awk '{print $$NF}'); \
|
|
trap 'rm -f "$$PKG"' EXIT; \
|
|
if [ "$(PUSH)" = "1" ]; then helm push "$$PKG" oci://$(REGISTRY); fi
|