ci: add debugging to release build script
Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
This commit is contained in:
4 files changed
+35
-29
No files matched your search
+24
-24
@@ -79,9 +79,9 @@ MANIFEST_TOOL := $(TOOLS_HOST_DIR)/manifest-tool-$(MANIFEST_TOOL_VERSION)
|
||||
|
||||
$(MANIFEST_TOOL):
|
||||
@echo === installing manifest-tool
|
||||
@mkdir -p $(TOOLS_HOST_DIR)
|
||||
@curl -sL https://github.com/estesp/manifest-tool/releases/download/$(MANIFEST_TOOL_VERSION)/manifest-tool-$(GOHOSTOS)-$(GOHOSTARCH) > $@
|
||||
@chmod +x $@
|
||||
mkdir -p $(TOOLS_HOST_DIR)
|
||||
curl -sL https://github.com/estesp/manifest-tool/releases/download/$(MANIFEST_TOOL_VERSION)/manifest-tool-$(GOHOSTOS)-$(GOHOSTARCH) > $@
|
||||
chmod +x $@
|
||||
|
||||
# ====================================================================================
|
||||
# Targets
|
||||
@@ -108,9 +108,9 @@ ifneq ($(VERSION_VALID),1)
|
||||
$(error invalid version $(VERSION), must be a semantic version with v[Major].[Minor].[Patch] and an optional suffix such as -alpha.0, -beta.1, or -rc.2)
|
||||
endif
|
||||
@echo === tagging commit hash $(COMMIT_HASH) with $(VERSION) and parsed v$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH)
|
||||
@git tag -f -m "release $(VERSION)" $(VERSION) $(COMMIT_HASH)
|
||||
@git push $(REMOTE_NAME) $(VERSION)
|
||||
@set -e; if ! git ls-remote --heads $(REMOTE_NAME) | grep -q refs/heads/release-$(VERSION_MAJOR).$(VERSION_MINOR); then \
|
||||
git tag -f -m "release $(VERSION)" $(VERSION) $(COMMIT_HASH)
|
||||
git push $(REMOTE_NAME) $(VERSION)
|
||||
set -e; if ! git ls-remote --heads $(REMOTE_NAME) | grep -q refs/heads/release-$(VERSION_MAJOR).$(VERSION_MINOR); then \
|
||||
echo === creating new release branch release-$(VERSION_MAJOR).$(VERSION_MINOR) ;\
|
||||
git branch -f release-$(VERSION_MAJOR).$(VERSION_MINOR) $(COMMIT_HASH) ;\
|
||||
git push $(REMOTE_NAME) release-$(VERSION_MAJOR).$(VERSION_MINOR) ;\
|
||||
@@ -138,20 +138,20 @@ HELM_URL := $(HELM_BASE_URL)/$(CHANNEL)
|
||||
|
||||
promote.helm: $(HELM)
|
||||
# copy existing charts to a temp dir, then combine with new charts, reindex, and upload
|
||||
@$(S3_SYNC) s3://$(HELM_S3_BUCKET)/$(CHANNEL) $(HELM_TEMP)
|
||||
@$(S3_SYNC) s3://$(S3_BUCKET)/build/$(BRANCH_NAME)/$(VERSION)/charts $(HELM_TEMP)
|
||||
@$(HELM) repo index --url $(HELM_URL) $(HELM_TEMP)
|
||||
@$(S3_SYNC_DEL) $(HELM_TEMP) s3://$(HELM_S3_BUCKET)/$(CHANNEL)
|
||||
@rm -fr $(HELM_TEMP)
|
||||
$(S3_SYNC) s3://$(HELM_S3_BUCKET)/$(CHANNEL) $(HELM_TEMP)
|
||||
$(S3_SYNC) s3://$(S3_BUCKET)/build/$(BRANCH_NAME)/$(VERSION)/charts $(HELM_TEMP)
|
||||
$(HELM) repo index --url $(HELM_URL) $(HELM_TEMP)
|
||||
$(S3_SYNC_DEL) $(HELM_TEMP) s3://$(HELM_S3_BUCKET)/$(CHANNEL)
|
||||
rm -fr $(HELM_TEMP)
|
||||
|
||||
# ====================================================================================
|
||||
# output
|
||||
|
||||
publish.output:
|
||||
@$(S3_SYNC_DEL) $(OUTPUT_DIR) s3://$(S3_BUCKET)/build/$(BRANCH_NAME)/$(VERSION)
|
||||
$(S3_SYNC_DEL) $(OUTPUT_DIR) s3://$(S3_BUCKET)/build/$(BRANCH_NAME)/$(VERSION)
|
||||
promote.output:
|
||||
@$(S3_SYNC_DEL) s3://$(S3_BUCKET)/build/$(BRANCH_NAME)/$(VERSION) s3://$(S3_BUCKET)/$(CHANNEL)/$(VERSION)
|
||||
@$(S3_SYNC_DEL) s3://$(S3_BUCKET)/build/$(BRANCH_NAME)/$(VERSION) s3://$(S3_BUCKET)/$(CHANNEL)/current
|
||||
$(S3_SYNC_DEL) s3://$(S3_BUCKET)/build/$(BRANCH_NAME)/$(VERSION) s3://$(S3_BUCKET)/$(CHANNEL)/$(VERSION)
|
||||
$(S3_SYNC_DEL) s3://$(S3_BUCKET)/build/$(BRANCH_NAME)/$(VERSION) s3://$(S3_BUCKET)/$(CHANNEL)/current
|
||||
|
||||
# ====================================================================================
|
||||
# images
|
||||
@@ -159,32 +159,32 @@ promote.output:
|
||||
# 1: registry 2: image, 3: arch
|
||||
define repo.targets
|
||||
build.image.$(1).$(2).$(3):
|
||||
@docker tag $(BUILD_REGISTRY)/$(2)-$(3) $(1)/$(2)-$(3):$(VERSION)
|
||||
docker tag $(BUILD_REGISTRY)/$(2)-$(3) $(1)/$(2)-$(3):$(VERSION)
|
||||
@# Save image as _output/images/linux_<arch>/<image>.tar.gz (no builds for darwin or windows)
|
||||
@mkdir -p $(OUTPUT_DIR)/images/linux_$(3)
|
||||
@docker save $(BUILD_REGISTRY)/$(2)-$(3) | gzip -c > $(OUTPUT_DIR)/images/linux_$(3)/$(2).tar.gz
|
||||
mkdir -p $(OUTPUT_DIR)/images/linux_$(3)
|
||||
docker save $(BUILD_REGISTRY)/$(2)-$(3) | gzip -c > $(OUTPUT_DIR)/images/linux_$(3)/$(2).tar.gz
|
||||
build.all.images: build.image.$(1).$(2).$(3)
|
||||
publish.image.$(1).$(2).$(3): ; @docker push $(1)/$(2)-$(3):$(VERSION)
|
||||
publish.all.images: publish.image.$(1).$(2).$(3)
|
||||
# tag the master image, but do not tag the release image with a generic channel tag
|
||||
promote.image.$(1).$(2).$(3):
|
||||
@docker pull $(1)/$(2)-$(3):$(VERSION)
|
||||
@docker tag $(1)/$(2)-$(3):$(VERSION) $(1)/$(2)-$(3):$(CHANNEL)
|
||||
@[ "$(CHANNEL)" = "release" ] || docker push $(1)/$(2)-$(3):$(CHANNEL)
|
||||
docker pull $(1)/$(2)-$(3):$(VERSION)
|
||||
docker tag $(1)/$(2)-$(3):$(VERSION) $(1)/$(2)-$(3):$(CHANNEL)
|
||||
[ "$(CHANNEL)" = "release" ] || docker push $(1)/$(2)-$(3):$(CHANNEL)
|
||||
promote.all.images: promote.image.$(1).$(2).$(3)
|
||||
clean.image.$(1).$(2).$(3):
|
||||
@[ -z "$$$$(docker images -q $(1)/$(2)-$(3):$(VERSION))" ] || docker rmi $(1)/$(2)-$(3):$(VERSION)
|
||||
@[ -z "$$$$(docker images -q $(1)/$(2)-$(3):$(CHANNEL))" ] || docker rmi $(1)/$(2)-$(3):$(CHANNEL)
|
||||
[ -z "$$$$(docker images -q $(1)/$(2)-$(3):$(VERSION))" ] || docker rmi $(1)/$(2)-$(3):$(VERSION)
|
||||
[ -z "$$$$(docker images -q $(1)/$(2)-$(3):$(CHANNEL))" ] || docker rmi $(1)/$(2)-$(3):$(CHANNEL)
|
||||
clean.all.images: clean.image.$(1).$(2).$(3)
|
||||
endef
|
||||
$(foreach r,$(REGISTRIES), $(foreach i,$(IMAGES), $(foreach a,$(IMAGE_ARCHS),$(eval $(call repo.targets,$(r),$(i),$(a))))))
|
||||
|
||||
publish.manifest.image.%: publish.all.images $(MANIFEST_TOOL)
|
||||
@$(MANIFEST_TOOL) push from-args --platforms $(IMAGE_PLATFORMS) --template $(DOCKER_REGISTRY)/$*-ARCH:$(VERSION) --target $(DOCKER_REGISTRY)/$*:$(VERSION)
|
||||
$(MANIFEST_TOOL) push from-args --platforms $(IMAGE_PLATFORMS) --template $(DOCKER_REGISTRY)/$*-ARCH:$(VERSION) --target $(DOCKER_REGISTRY)/$*:$(VERSION)
|
||||
|
||||
# add the "master" tag to the master image, but do not add the "release" tag for the release channel
|
||||
promote.manifest.image.%: promote.all.images $(MANIFEST_TOOL)
|
||||
@[ "$(CHANNEL)" = "release" ] || $(MANIFEST_TOOL) push from-args --platforms $(IMAGE_PLATFORMS) --template $(DOCKER_REGISTRY)/$*-ARCH:$(VERSION) --target $(DOCKER_REGISTRY)/$*:$(CHANNEL)
|
||||
[ "$(CHANNEL)" = "release" ] || $(MANIFEST_TOOL) push from-args --platforms $(IMAGE_PLATFORMS) --template $(DOCKER_REGISTRY)/$*-ARCH:$(VERSION) --target $(DOCKER_REGISTRY)/$*:$(CHANNEL)
|
||||
|
||||
build.images: build.all.images
|
||||
publish.images: $(addprefix publish.manifest.image.,$(IMAGES))
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/bash -e
|
||||
set -e
|
||||
set -x
|
||||
|
||||
# Copyright 2016 The Rook Authors. All rights reserved.
|
||||
#
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/bash -e
|
||||
set -e
|
||||
set -x
|
||||
|
||||
# Copyright 2016 The Rook Authors. All rights reserved.
|
||||
#
|
||||
|
||||
@@ -5,24 +5,26 @@ set -ex
|
||||
# FUNCTIONS #
|
||||
#############
|
||||
|
||||
MAKE='build/run make --debug=v --output-sync'
|
||||
|
||||
function build() {
|
||||
build/run make build.all
|
||||
$MAKE build.all
|
||||
# quick check that go modules are tidied
|
||||
build/run make mod.check
|
||||
$MAKE mod.check
|
||||
}
|
||||
|
||||
function publish() {
|
||||
build
|
||||
build/run make -C build/release build BRANCH_NAME=${BRANCH_NAME} TAG_WITH_SUFFIX=${TAG_WITH_SUFFIX} GIT_API_TOKEN=${GIT_API_TOKEN}
|
||||
$MAKE -C build/release build BRANCH_NAME=${BRANCH_NAME} TAG_WITH_SUFFIX=${TAG_WITH_SUFFIX} GIT_API_TOKEN=${GIT_API_TOKEN}
|
||||
git status &
|
||||
git diff &
|
||||
build/run make -C build/release publish BRANCH_NAME=${BRANCH_NAME} TAG_WITH_SUFFIX=${TAG_WITH_SUFFIX} AWS_ACCESS_KEY_ID=${AWS_USR} AWS_SECRET_ACCESS_KEY=${AWS_PSW} GIT_API_TOKEN=${GIT_API_TOKEN}
|
||||
$MAKE -C build/release publish BRANCH_NAME=${BRANCH_NAME} TAG_WITH_SUFFIX=${TAG_WITH_SUFFIX} AWS_ACCESS_KEY_ID=${AWS_USR} AWS_SECRET_ACCESS_KEY=${AWS_PSW} GIT_API_TOKEN=${GIT_API_TOKEN}
|
||||
}
|
||||
|
||||
function promote() {
|
||||
# automatically promote the master builds
|
||||
echo "Promoting from branch ${BRANCH_NAME}"
|
||||
build/run make -C build/release promote BRANCH_NAME=${BRANCH_NAME} TAG_WITH_SUFFIX=${TAG_WITH_SUFFIX} CHANNEL=${CHANNEL} AWS_ACCESS_KEY_ID=${AWS_USR} AWS_SECRET_ACCESS_KEY=${AWS_PSW}
|
||||
$MAKE -C build/release promote BRANCH_NAME=${BRANCH_NAME} TAG_WITH_SUFFIX=${TAG_WITH_SUFFIX} CHANNEL=${CHANNEL} AWS_ACCESS_KEY_ID=${AWS_USR} AWS_SECRET_ACCESS_KEY=${AWS_PSW}
|
||||
}
|
||||
|
||||
#############
|
||||
|
||||
Reference in new issue
Block a user