Skip to content

Commit 4787a86

Browse files
committed
fix: skip pushing image if tag exists
1 parent cfcffa4 commit 4787a86

File tree

1 file changed

+142
-94
lines changed

1 file changed

+142
-94
lines changed

Makefile

Lines changed: 142 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -157,118 +157,166 @@ build-all-in-one-nightly:
157157

158158
.PHONY: release-otel-collector
159159
release-otel-collector:
160-
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/otel-collector \
161-
-t ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} \
162-
-t ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} \
163-
-t ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_LATEST_TAG} \
164-
--target prod \
165-
--push \
166-
--cache-from=type=gha \
167-
--cache-to=type=gha,mode=max
160+
@TAG_EXISTS=$$(docker manifest inspect ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} > /dev/null 2>&1 && echo "true" || echo "false"); \
161+
if [ "$$TAG_EXISTS" = "true" ]; then \
162+
echo "Tag ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} already exists. Skipping push."; \
163+
else \
164+
echo "Tag ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} does not exist. Building and pushing..."; \
165+
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/otel-collector \
166+
-t ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} \
167+
-t ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} \
168+
-t ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_LATEST_TAG} \
169+
--target prod \
170+
--push \
171+
--cache-from=type=gha \
172+
--cache-to=type=gha,mode=max; \
173+
fi
168174

169175
.PHONY: release-local
170176
release-local:
171-
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
172-
--build-context clickhouse=./docker/clickhouse \
173-
--build-context otel-collector=./docker/otel-collector \
174-
--build-context hyperdx=./docker/hyperdx \
175-
--build-context api=./packages/api \
176-
--build-context app=./packages/app \
177-
--build-arg CODE_VERSION=${CODE_VERSION} \
178-
--platform ${BUILD_PLATFORMS} \
179-
-t ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} \
180-
-t ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} \
181-
-t ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_LATEST_TAG} \
182-
--target all-in-one-noauth \
183-
--push \
184-
--cache-from=type=gha \
185-
--cache-to=type=gha,mode=max
177+
@TAG_EXISTS=$$(docker manifest inspect ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} > /dev/null 2>&1 && echo "true" || echo "false"); \
178+
if [ "$$TAG_EXISTS" = "true" ]; then \
179+
echo "Tag ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} already exists. Skipping push."; \
180+
else \
181+
echo "Tag ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} does not exist. Building and pushing..."; \
182+
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
183+
--build-context clickhouse=./docker/clickhouse \
184+
--build-context otel-collector=./docker/otel-collector \
185+
--build-context hyperdx=./docker/hyperdx \
186+
--build-context api=./packages/api \
187+
--build-context app=./packages/app \
188+
--build-arg CODE_VERSION=${CODE_VERSION} \
189+
--platform ${BUILD_PLATFORMS} \
190+
-t ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} \
191+
-t ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} \
192+
-t ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_LATEST_TAG} \
193+
--target all-in-one-noauth \
194+
--push \
195+
--cache-from=type=gha \
196+
--cache-to=type=gha,mode=max; \
197+
fi
186198

187199
.PHONY: release-all-in-one
188200
release-all-in-one:
189-
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
190-
--build-context clickhouse=./docker/clickhouse \
191-
--build-context otel-collector=./docker/otel-collector \
192-
--build-context hyperdx=./docker/hyperdx \
193-
--build-context api=./packages/api \
194-
--build-context app=./packages/app \
195-
--build-arg CODE_VERSION=${CODE_VERSION} \
196-
--platform ${BUILD_PLATFORMS} \
197-
-t ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} \
198-
-t ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} \
199-
-t ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_LATEST_TAG} \
200-
--target all-in-one-auth \
201-
--push \
202-
--cache-from=type=gha \
203-
--cache-to=type=gha,mode=max
201+
@TAG_EXISTS=$$(docker manifest inspect ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} > /dev/null 2>&1 && echo "true" || echo "false"); \
202+
if [ "$$TAG_EXISTS" = "true" ]; then \
203+
echo "Tag ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} already exists. Skipping push."; \
204+
else \
205+
echo "Tag ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} does not exist. Building and pushing..."; \
206+
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
207+
--build-context clickhouse=./docker/clickhouse \
208+
--build-context otel-collector=./docker/otel-collector \
209+
--build-context hyperdx=./docker/hyperdx \
210+
--build-context api=./packages/api \
211+
--build-context app=./packages/app \
212+
--build-arg CODE_VERSION=${CODE_VERSION} \
213+
--platform ${BUILD_PLATFORMS} \
214+
-t ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} \
215+
-t ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} \
216+
-t ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_LATEST_TAG} \
217+
--target all-in-one-auth \
218+
--push \
219+
--cache-from=type=gha \
220+
--cache-to=type=gha,mode=max; \
221+
fi
204222

205223
.PHONY: release-app
206224
release-app:
207-
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
208-
--build-context hyperdx=./docker/hyperdx \
209-
--build-context api=./packages/api \
210-
--build-context app=./packages/app \
211-
--build-arg CODE_VERSION=${CODE_VERSION} \
212-
--platform ${BUILD_PLATFORMS} \
213-
-t ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} \
214-
-t ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} \
215-
-t ${IMAGE_NAME_DOCKERHUB}:${IMAGE_LATEST_TAG} \
216-
--target prod \
217-
--push \
218-
--cache-from=type=gha \
219-
--cache-to=type=gha,mode=max
225+
@TAG_EXISTS=$$(docker manifest inspect ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} > /dev/null 2>&1 && echo "true" || echo "false"); \
226+
if [ "$$TAG_EXISTS" = "true" ]; then \
227+
echo "Tag ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} already exists. Skipping push."; \
228+
else \
229+
echo "Tag ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} does not exist. Building and pushing..."; \
230+
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
231+
--build-context hyperdx=./docker/hyperdx \
232+
--build-context api=./packages/api \
233+
--build-context app=./packages/app \
234+
--build-arg CODE_VERSION=${CODE_VERSION} \
235+
--platform ${BUILD_PLATFORMS} \
236+
-t ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}${IMAGE_VERSION_SUB_TAG} \
237+
-t ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} \
238+
-t ${IMAGE_NAME_DOCKERHUB}:${IMAGE_LATEST_TAG} \
239+
--target prod \
240+
--push \
241+
--cache-from=type=gha \
242+
--cache-to=type=gha,mode=max; \
243+
fi
220244

221245
.PHONY: release-otel-collector-nightly
222246
release-otel-collector-nightly:
223-
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/otel-collector \
224-
-t ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} \
225-
--target prod \
226-
--push \
227-
--cache-from=type=gha \
228-
--cache-to=type=gha,mode=max
247+
@TAG_EXISTS=$$(docker manifest inspect ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} > /dev/null 2>&1 && echo "true" || echo "false"); \
248+
if [ "$$TAG_EXISTS" = "true" ]; then \
249+
echo "Tag ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} already exists. Skipping push."; \
250+
else \
251+
echo "Tag ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} does not exist. Building and pushing..."; \
252+
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/otel-collector \
253+
-t ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} \
254+
--target prod \
255+
--push \
256+
--cache-from=type=gha \
257+
--cache-to=type=gha,mode=max; \
258+
fi
229259

230260
.PHONY: release-app-nightly
231261
release-app-nightly:
232-
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
233-
--build-context hyperdx=./docker/hyperdx \
234-
--build-context api=./packages/api \
235-
--build-context app=./packages/app \
236-
--build-arg CODE_VERSION=${IMAGE_NIGHTLY_TAG} \
237-
--platform ${BUILD_PLATFORMS} \
238-
-t ${IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} \
239-
--target prod \
240-
--push \
241-
--cache-from=type=gha \
242-
--cache-to=type=gha,mode=max
262+
@TAG_EXISTS=$$(docker manifest inspect ${IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} > /dev/null 2>&1 && echo "true" || echo "false"); \
263+
if [ "$$TAG_EXISTS" = "true" ]; then \
264+
echo "Tag ${IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} already exists. Skipping push."; \
265+
else \
266+
echo "Tag ${IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} does not exist. Building and pushing..."; \
267+
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
268+
--build-context hyperdx=./docker/hyperdx \
269+
--build-context api=./packages/api \
270+
--build-context app=./packages/app \
271+
--build-arg CODE_VERSION=${IMAGE_NIGHTLY_TAG} \
272+
--platform ${BUILD_PLATFORMS} \
273+
-t ${IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} \
274+
--target prod \
275+
--push \
276+
--cache-from=type=gha \
277+
--cache-to=type=gha,mode=max; \
278+
fi
243279

244280
.PHONY: release-local-nightly
245281
release-local-nightly:
246-
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
247-
--build-context clickhouse=./docker/clickhouse \
248-
--build-context otel-collector=./docker/otel-collector \
249-
--build-context hyperdx=./docker/hyperdx \
250-
--build-context api=./packages/api \
251-
--build-context app=./packages/app \
252-
--build-arg CODE_VERSION=${IMAGE_NIGHTLY_TAG} \
253-
--platform ${BUILD_PLATFORMS} \
254-
-t ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} \
255-
--target all-in-one-noauth \
256-
--push \
257-
--cache-from=type=gha \
258-
--cache-to=type=gha,mode=max
282+
@TAG_EXISTS=$$(docker manifest inspect ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} > /dev/null 2>&1 && echo "true" || echo "false"); \
283+
if [ "$$TAG_EXISTS" = "true" ]; then \
284+
echo "Tag ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} already exists. Skipping push."; \
285+
else \
286+
echo "Tag ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} does not exist. Building and pushing..."; \
287+
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
288+
--build-context clickhouse=./docker/clickhouse \
289+
--build-context otel-collector=./docker/otel-collector \
290+
--build-context hyperdx=./docker/hyperdx \
291+
--build-context api=./packages/api \
292+
--build-context app=./packages/app \
293+
--build-arg CODE_VERSION=${IMAGE_NIGHTLY_TAG} \
294+
--platform ${BUILD_PLATFORMS} \
295+
-t ${LOCAL_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} \
296+
--target all-in-one-noauth \
297+
--push \
298+
--cache-from=type=gha \
299+
--cache-to=type=gha,mode=max; \
300+
fi
259301

260302
.PHONY: release-all-in-one-nightly
261303
release-all-in-one-nightly:
262-
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
263-
--build-context clickhouse=./docker/clickhouse \
264-
--build-context otel-collector=./docker/otel-collector \
265-
--build-context hyperdx=./docker/hyperdx \
266-
--build-context api=./packages/api \
267-
--build-context app=./packages/app \
268-
--build-arg CODE_VERSION=${IMAGE_NIGHTLY_TAG} \
269-
--platform ${BUILD_PLATFORMS} \
270-
-t ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} \
271-
--target all-in-one-auth \
272-
--push \
273-
--cache-from=type=gha \
274-
--cache-to=type=gha,mode=max
304+
@TAG_EXISTS=$$(docker manifest inspect ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} > /dev/null 2>&1 && echo "true" || echo "false"); \
305+
if [ "$$TAG_EXISTS" = "true" ]; then \
306+
echo "Tag ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} already exists. Skipping push."; \
307+
else \
308+
echo "Tag ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} does not exist. Building and pushing..."; \
309+
docker buildx build --squash . -f ./docker/hyperdx/Dockerfile \
310+
--build-context clickhouse=./docker/clickhouse \
311+
--build-context otel-collector=./docker/otel-collector \
312+
--build-context hyperdx=./docker/hyperdx \
313+
--build-context api=./packages/api \
314+
--build-context app=./packages/app \
315+
--build-arg CODE_VERSION=${IMAGE_NIGHTLY_TAG} \
316+
--platform ${BUILD_PLATFORMS} \
317+
-t ${ALL_IN_ONE_IMAGE_NAME_DOCKERHUB}:${IMAGE_NIGHTLY_TAG} \
318+
--target all-in-one-auth \
319+
--push \
320+
--cache-from=type=gha \
321+
--cache-to=type=gha,mode=max; \
322+
fi

0 commit comments

Comments
 (0)