-
Notifications
You must be signed in to change notification settings - Fork 40
/
Makefile.release
83 lines (71 loc) · 2.94 KB
/
Makefile.release
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
####################################################################################################
# CORE COMMANDS
.PHONY: __tag-release-candidate
__tag-release-candidate:
@echo "+++ Tagging release candidate"
@./scripts/fail-if-dirty-repo.sh # Fail if the repo is dirty
@echo "+++ Tagging commit $(shell git rev-parse HEAD) with CS_VERSION=$(CS_VERSION)"
CS_VERSION="$(CS_VERSION)" ./scripts/tag-release-candidate.sh
.PHONY: __build-release-candidate
__build-release-candidate:
@echo "+++ Building release candidate"
@$(eval GCR_PREFIX := "config-management-release")
@test -n "$(RC_TAG)" || (echo "RC_TAG unset" ; exit 1)
$(MAKE) config-sync-manifest \
VERSION=$(RC_TAG) \
GCR_PREFIX=$(GCR_PREFIX) \
IMAGE_TAG=$(RC_TAG)
$(MAKE) build-cli VERSION=$(RC_TAG)
$(eval RELEASE_PATH = "gs://config-management-release/config-sync/tag/$(RC_TAG)")
$(MAKE) __upload-manifest RELEASE_PATH=$(RELEASE_PATH)
$(MAKE) __upload-cli RELEASE_PATH=$(RELEASE_PATH)
.PHONY: __promote-rc-tag
__promote-rc-tag:
@echo "+++ Promoting release candidate tag"
RC_TAG="$(RC_TAG)" ./scripts/tag-promotion.sh
.PHONY: __promote-rc-artifacts
__promote-rc-artifacts:
@echo "+++ Promoting release candidate artifacts"
@$(eval GCR_PREFIX := "config-management-release")
@test -n "$(CS_VERSION)" || (echo "CS_VERSION unset" ; exit 1)
$(eval RC_TAG != git tag --points-at "$(CS_VERSION)^{}" --list "$(CS_VERSION)-rc.*" | sort -V | tail -n 1)
@test -n "$(RC_TAG)" || (echo "RC_TAG unset" ; exit 1)
$(MAKE) config-sync-manifest-promote \
VERSION=$(CS_VERSION) \
GCR_PREFIX=$(GCR_PREFIX) \
IMAGE_TAG=$(CS_VERSION) \
RC_TAG=$(RC_TAG)
$(MAKE) build-cli VERSION=$(CS_VERSION)
$(eval RELEASE_PATH = "gs://config-management-release/config-sync/tag/$(CS_VERSION)")
$(MAKE) __upload-manifest RELEASE_PATH=$(RELEASE_PATH)
$(MAKE) __upload-cli RELEASE_PATH=$(RELEASE_PATH)
####################################################################################################
# SUPPORTING COMMANDS
PHONY: __upload-manifest
__upload-manifest:
@test -n "$(RELEASE_PATH)" || (echo "RELEASE_PATH unset" ; exit 1)
@$(eval MANIFEST_DESTINATION = "$(RELEASE_PATH)/config-sync-manifest.yaml")
@echo "+++ Uploading config-sync-manifest.yaml to $(MANIFEST_DESTINATION)"
@echo "${NOMOS_MANIFEST_STAGING_DIR}"
gsutil cp \
"${NOMOS_MANIFEST_STAGING_DIR}/config-sync-manifest.yaml" \
$(MANIFEST_DESTINATION)
.PHONY: __upload-cli
__upload-cli:
@test -n "$(RELEASE_PATH)" || (echo "RELEASE_PATH unset" ; exit 1)
@echo "+++ Uploading CLI Binaries to $(RELEASE_PATH)"
gsutil cp \
"$(BIN_DIR)/linux_amd64/nomos" \
"$(RELEASE_PATH)/linux_amd64/nomos"
gsutil cp \
"$(BIN_DIR)/linux_arm64/nomos" \
"$(RELEASE_PATH)/linux_arm64/nomos"
gsutil cp \
"$(BIN_DIR)/darwin_amd64/nomos" \
"$(RELEASE_PATH)/darwin_amd64/nomos"
gsutil cp \
"$(BIN_DIR)/darwin_arm64/nomos" \
"$(RELEASE_PATH)/darwin_arm64/nomos"
gsutil cp \
"$(BIN_DIR)/windows_amd64/nomos.exe" \
"$(RELEASE_PATH)/windows_amd64/nomos.exe"