Skip to content

Commit 1729e97

Browse files
authored
Merge branch 'main' into fix-registry-targets
2 parents d4afb65 + 907604d commit 1729e97

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

makelib/local.xpkg.mk

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,31 @@ local.xpkg.init: $(KUBECTL)
2525
fi
2626
@$(OK) patching Crossplane with dev sidecar
2727

28+
LOCAL_XPKG_DIGEST ?= sha256:0000000000000000000000000000000000000000000000000000000000000000
29+
2830
local.xpkg.sync: local.xpkg.init $(CROSSPLANE_CLI)
2931
@$(INFO) copying local xpkg cache to Crossplane pod
3032
@mkdir -p $(XPKG_OUTPUT_DIR)/cache/xpkg.crossplane.internal/dev
31-
@# given "project-name-v0.17.0-3.gb4eee9f.dirty.xpkg" regex returns "project-name:v0.17.0-3.gb4eee9f.dirty.gz"
33+
@# Extract each .xpkg and place it under two cache keys so that both
34+
@# Crossplane <=2.1 and >=2.2 find the package with pullPolicy: Never.
35+
@# - <source>@<digest>.gz — Crossplane <=2.1 uses GetSource() as cache key
36+
@# - <friendlyid>.gz — Crossplane >=2.2 uses FriendlyID() as cache key
37+
@# FriendlyID is ToDNSLabel(truncate(source,50) + "-" + truncate(digest,12)),
38+
@# where ToDNSLabel maps non-alphanumeric chars to "-" and caps at 63 chars.
39+
@# See https://github.com/crossplane/crossplane/blob/v2.2.0-rc.1/internal/xpkg/name.go
3240
@for pkg in $(XPKG_OUTPUT_DIR)/linux_*/*; do \
33-
extractedname=$$(basename $$pkg | sed 's/-v\(\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\).*\)\.xpkg/:v\1.gz/'); \
34-
$(CROSSPLANE_CLI) xpkg extract --from-xpkg $$pkg -o $(XPKG_OUTPUT_DIR)/cache/xpkg.crossplane.internal/dev/$$extractedname; \
41+
pkgname=$$(basename $$pkg | sed 's/-v\([0-9]*\.[0-9]*\.[0-9]*.*\)\.xpkg//'); \
42+
$(CROSSPLANE_CLI) xpkg extract --from-xpkg $$pkg -o "$(XPKG_OUTPUT_DIR)/cache/xpkg.crossplane.internal/dev/$$pkgname@$(LOCAL_XPKG_DIGEST).gz"; \
43+
friendlyid=$$(printf '%.50s-%.12s' "xpkg.crossplane.internal/dev/$$pkgname" "$(LOCAL_XPKG_DIGEST)" | sed 's/[^a-z0-9]/-/g' | cut -c1-63 | sed 's/-*$$//'); \
44+
cp "$(XPKG_OUTPUT_DIR)/cache/xpkg.crossplane.internal/dev/$$pkgname@$(LOCAL_XPKG_DIGEST).gz" $(XPKG_OUTPUT_DIR)/cache/$$friendlyid.gz; \
3545
done
3646
@XPPOD=$$($(KUBECTL) -n $(CROSSPLANE_NAMESPACE) get pod -l app=crossplane,patched=true -o jsonpath="{.items[0].metadata.name}"); \
3747
$(KUBECTL) -n $(CROSSPLANE_NAMESPACE) cp $(XPKG_OUTPUT_DIR)/cache -c dev $$XPPOD:/tmp
3848
@$(OK) copying local xpkg cache to Crossplane pod
3949

4050
local.xpkg.deploy.configuration.%: local.xpkg.sync
4151
@$(INFO) deploying configuration package $* $(VERSION)
42-
@echo '{"apiVersion":"pkg.crossplane.io/v1","kind":"Configuration","metadata":{"name":"$*"},"spec":{"package":"xpkg.crossplane.internal/dev/$*:$(VERSION).gz","packagePullPolicy":"Never"}}' | $(KUBECTL) apply -f -
52+
@echo '{"apiVersion":"pkg.crossplane.io/v1","kind":"Configuration","metadata":{"name":"$*"},"spec":{"package":"xpkg.crossplane.internal/dev/$*@$(LOCAL_XPKG_DIGEST)","packagePullPolicy":"Never"}}' | $(KUBECTL) apply -f -
4353
@$(OK) deploying configuration package $* $(VERSION)
4454

4555
local.xpkg.deploy.provider.%: $(KIND) local.xpkg.sync
@@ -53,5 +63,5 @@ local.xpkg.deploy.provider.%: $(KIND) local.xpkg.sync
5363
else \
5464
echo '{"apiVersion":"pkg.crossplane.io/v1beta1","kind":"DeploymentRuntimeConfig","metadata":{"name":"runtimeconfig-$*"},"spec":{"deploymentTemplate":{"spec":{"selector":{},"strategy":{},"template":{"spec":{"containers":[{"args":["--debug"],"image":"$(BUILD_REGISTRY)/$*-$(ARCH)","name":"package-runtime"}]}}}}}}' | $(KUBECTL) apply -f -; \
5565
fi
56-
@echo '{"apiVersion":"pkg.crossplane.io/v1","kind":"Provider","metadata":{"name":"$*"},"spec":{"package":"xpkg.crossplane.internal/dev/$*:$(VERSION).gz","skipDependencyResolution": $(XPKG_SKIP_DEP_RESOLUTION), "packagePullPolicy":"Never","runtimeConfigRef":{"name":"runtimeconfig-$*"}}}' | $(KUBECTL) apply -f -
66+
@echo '{"apiVersion":"pkg.crossplane.io/v1","kind":"Provider","metadata":{"name":"$*"},"spec":{"package":"xpkg.crossplane.internal/dev/$*@$(LOCAL_XPKG_DIGEST)","skipDependencyResolution": $(XPKG_SKIP_DEP_RESOLUTION), "packagePullPolicy":"Never","runtimeConfigRef":{"name":"runtimeconfig-$*"}}}' | $(KUBECTL) apply -f -
5767
@$(OK) deploying provider package $* $(VERSION)

0 commit comments

Comments
 (0)