@@ -80,11 +80,71 @@ IMAGES = $(PROJECT_NAME)
8080# ====================================================================================
8181# Setup XPKG
8282
83- XPKG_REG_ORGS ?= ghcr .io/onzack
84- XPKG_REG_ORGS_NO_PROMOTE ?= ghcr .io/onzack
83+ XPKG_REG_ORGS ?= xpkg.upbound .io/onzack
84+ XPKG_REG_ORGS_NO_PROMOTE ?= xpkg.upbound .io/onzack
8585XPKGS = $(PROJECT_NAME )
86+
87+ # Upbound authentication configuration
88+ # For robot accounts, set either:
89+ # - UP_ROBOT_USER and UP_ROBOT_PASSWORD for username/password auth
90+ # - UP_ROBOT_TOKEN for token-based auth
91+ UP_ROBOT_USER ?=
92+ UP_ROBOT_PASSWORD ?=
93+ UP_ROBOT_TOKEN ?=
94+
95+ # Map GitHub Actions secrets to UP credentials for compatibility
96+ ifdef UPBOUND_MARKETPLACE_PUSH_ROBOT_USER
97+ export UP_ROBOT_USER = $(UPBOUND_MARKETPLACE_PUSH_ROBOT_USER )
98+ endif
99+ ifdef UPBOUND_MARKETPLACE_PUSH_ROBOT_PWD
100+ export UP_ROBOT_PASSWORD = $(UPBOUND_MARKETPLACE_PUSH_ROBOT_PWD )
101+ endif
102+ ifdef UPBOUND_MARKETPLACE_PUSH_ROBOT_TOKEN
103+ export UP_ROBOT_TOKEN = $(UPBOUND_MARKETPLACE_PUSH_ROBOT_TOKEN )
104+ endif
105+
86106-include build/makelib/xpkg.mk
87107
108+ # ====================================================================================
109+ # Upbound Publishing Overrides
110+ # Override xpkg publishing to use 'up' CLI for Upbound registries (macOS compatibility)
111+
112+ # Upbound login target
113+ .PHONY : up.login
114+ up.login :
115+ @if [ -n " $( UP_ROBOT_TOKEN) " ]; then \
116+ $(INFO ) Logging in to Upbound with robot token; \
117+ echo " $( UP_ROBOT_TOKEN) " | up login --token - || $(FAIL ) ; \
118+ $(OK ) Logged in to Upbound with robot token; \
119+ elif [ -n " $( UP_ROBOT_USER) " ] && [ -n " $( UP_ROBOT_PASSWORD) " ]; then \
120+ $(INFO ) Logging in to Upbound as robot user $(UP_ROBOT_USER ) ; \
121+ echo " $( UP_ROBOT_PASSWORD) " | up login --username " $( UP_ROBOT_USER) " --password - || $(FAIL ) ; \
122+ $(OK ) Logged in to Upbound as robot user $(UP_ROBOT_USER ) ; \
123+ elif ! up profile current > /dev/null 2>&1 ; then \
124+ $(ERR ) Not logged in to Upbound. Please run ' up login' or set UP_ROBOT_TOKEN or UP_ROBOT_USER/UP_ROBOT_PASSWORD environment variables; \
125+ exit 1; \
126+ else \
127+ $(INFO ) Already logged in to Upbound; \
128+ fi
129+
130+ # Override xpkg publish for Upbound registries to use 'up' CLI
131+ define UP_XPKG_PUBLISH
132+ xpkg.release.publish.$(1 ) .$(2 ) : up.login
133+ @$$(INFO ) Pushing package $(1 ) /$(2 ) :$$(VERSION )
134+ @for platform in $$(XPKG_LINUX_PLATFORMS ) ; do \
135+ up xpkg push -f $$(XPKG_OUTPUT_DIR ) /$$$$platform/$(2 ) -$$(VERSION ) .xpkg $(1 ) /$(2 ) :$$(VERSION ) 2>&1 | tee /tmp/up-push.log; \
136+ if grep -q "repository does not exist" /tmp/up-push.log; then \
137+ up xpkg push --create -f $$(XPKG_OUTPUT_DIR ) /$$$$platform/$(2 ) -$$(VERSION ) .xpkg $(1 ) /$(2 ) :$$(VERSION ) || $$(FAIL ) ; \
138+ elif ! grep -q "xpkg pushed" /tmp/up-push.log; then \
139+ $$(FAIL ) ; \
140+ fi; \
141+ done
142+ @$$(OK ) Pushed package $(1 ) /$(2 ) :$$(VERSION )
143+ endef
144+
145+ # Apply the override for Upbound registries
146+ $(foreach r,$(filter xpkg.upbound.io%,$(XPKG_REG_ORGS)), $(foreach x,$(XPKGS),$(eval $(call UP_XPKG_PUBLISH,$(r),$(x)))))
147+
88148# ====================================================================================
89149# Fallthrough
90150
0 commit comments