@@ -8,28 +8,80 @@ include ../../../build/makelib/common.mk
8
8
9
9
include ../../../build/makelib/imagelight.mk
10
10
11
+ # ====================================================================================
12
+ # Setup k8s tools
13
+
14
+ -include ../../../build/makelib/k8s_tools.mk
15
+
16
+ # ====================================================================================
17
+ # Setup xpkg
18
+
19
+ -include ../../../build/makelib/xpkg.mk
20
+
11
21
# ====================================================================================
12
22
# Targets
13
23
14
24
img.build :
15
- @$(INFO ) docker build $(IMAGE )
16
- @$(MAKE ) BUILD_ARGS=" --load" img.build.shared
17
- @$(OK ) docker build $(IMAGE )
18
-
19
- img.publish :
20
- @$(INFO ) Skipping image publish for $(IMAGE )
21
- @echo Publish is deferred to xpkg machinery
22
- @$(OK ) Image publish skipped for $(IMAGE )
25
+ @$(INFO ) Family base image to build: $(IMAGE )
26
+ @$(INFO ) Building image $$ {IMAGE}; \
27
+ $(MAKE ) BUILD_ARGS=" --load ${BUILD_ARGS} " IMAGE=$$ {IMAGE} XPKG_REG_ORGS=$(XPKG_REG_ORGS ) img.build.shared; \
28
+ if [[ " $$ {LOAD_PACKAGES}" == " true" ]]; then \
29
+ $(MAKE ) batch-process SUBPACKAGES=" $( SUBPACKAGES) " XPKG_DIR=$(XPKG_DIR ) XPKG_IGNORE=$(XPKG_IGNORE ) BATCH_PLATFORMS=$(PLATFORM ) BUILD_ONLY=true STORE_PACKAGES=" $$ (tr ' ' ',' <<< " $(SUBPACKAGES ) " )" && \
30
+ for s in $( SUBPACKAGES) ; do \
31
+ export t=$$(docker load -qi "$(XPKG_OUTPUT_DIR ) /$(PLATFORM ) /$(PROJECT_NAME ) -$${s}-$(VERSION ) .xpkg" ) && \
32
+ docker tag $$ {t## *:} $(BUILD_REGISTRY)/$(PROJECT_NAME)-$${s}-$(ARCH); \
33
+ done ; \
34
+ fi || $(FAIL )
35
+ @$(OK ) docker build $$ {IMAGE}
23
36
24
37
img.build.shared :
25
38
@cp Dockerfile $(IMAGE_TEMP_DIR ) || $(FAIL )
26
39
@cp -r $(OUTPUT_DIR ) /bin/ $(IMAGE_TEMP_DIR ) /bin || $(FAIL )
27
40
@docker buildx build $(BUILD_ARGS ) \
28
41
--platform $(IMAGE_PLATFORMS ) \
42
+ --build-arg CROSSPLANE_PROVIDER_VERSION=$(VERSION ) \
29
43
-t $(IMAGE ) \
30
44
$(IMAGE_TEMP_DIR ) || $(FAIL )
31
45
46
+ img.publish : batch-process
47
+
32
48
img.promote :
33
49
@$(INFO ) Skipping image promotion from $(FROM_IMAGE ) to $(TO_IMAGE )
34
50
@echo Promote is deferred to xpkg machinery
35
51
@$(OK ) Image promotion skipped for $(FROM_IMAGE ) to $(TO_IMAGE )
52
+
53
+ CONCURRENCY ?= 30
54
+ DEP_CONSTRAINT := >= 0.0.0
55
+ ifeq (-,$(findstring -,$(VERSION ) ) )
56
+ DEP_CONSTRAINT = >= 0.0.0-0
57
+ endif
58
+ BUILD_ONLY ?= false
59
+ STORE_PACKAGES ?= ""
60
+ XPKG_CLEANUP_EXAMPLES_VERSION ?= v0.12.1
61
+ batch-process : $(UP )
62
+ @rm -rf $(WORK_DIR ) /xpkg-cleaned-examples
63
+ @GOOS=$(HOSTOS ) GOARCH=$(TARGETARCH ) go run github.com/upbound/uptest/cmd/cleanupexamples@$(XPKG_CLEANUP_EXAMPLES_VERSION ) $(ROOT_DIR ) /examples $(WORK_DIR ) /xpkg-cleaned-examples || $(FAIL )
64
+ @$(INFO ) Batch processing smaller provider packages for: " $( SUBPACKAGES) "
65
+ @mkdir -p " $( XPKG_OUTPUT_DIR) /$( PLATFORM) " && \
66
+ $(UP ) xpkg batch --smaller-providers " $$ (tr ' ' ',' <<< " $(SUBPACKAGES ) " )" \
67
+ --family-base-image $(BUILD_REGISTRY ) /$(PROJECT_NAME ) \
68
+ --platform $(BATCH_PLATFORMS ) \
69
+ --provider-name $(PROJECT_NAME ) \
70
+ --family-package-url-format $(XPKG_REG_ORGS ) /%s:$(VERSION ) \
71
+ --package-repo-override monolith=$(PROJECT_NAME ) --package-repo-override config=provider-family-$(PROVIDER_NAME ) \
72
+ --provider-bin-root $(OUTPUT_DIR ) /bin \
73
+ --output-dir $(XPKG_OUTPUT_DIR ) \
74
+ --store-packages " $( STORE_PACKAGES) " \
75
+ --build-only=$(BUILD_ONLY ) \
76
+ --examples-root $(WORK_DIR ) /xpkg-cleaned-examples \
77
+ --examples-group-override monolith=* --examples-group-override config=providerconfig \
78
+ --auth-ext $(XPKG_DIR ) /auth.yaml \
79
+ --crd-root $(XPKG_DIR ) /crds \
80
+ --ignore $(XPKG_IGNORE ) \
81
+ --crd-group-override monolith=* --crd-group-override config=$(CONFIG_CRD_GROUP ) \
82
+ --package-metadata-template $(XPKG_DIR ) /crossplane.yaml.tmpl \
83
+ --template-var XpkgRegOrg=$(XPKG_REG_ORGS ) --template-var DepConstraint=" $( DEP_CONSTRAINT) " --template-var ProviderName=$(PROVIDER_NAME ) --template-var ProviderAuthGroup=$(PROVIDER_AUTH_GROUP ) \
84
+ --concurrency $(CONCURRENCY ) \
85
+ --push-retry 10 || $(FAIL )
86
+ @$(OK ) Done processing smaller provider packages for: " $( SUBPACKAGES) "
87
+ @rm -rf $(WORK_DIR ) /xpkg-cleaned-examples
0 commit comments