This repository has been archived by the owner on Jun 29, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathMakefile
131 lines (107 loc) · 6.43 KB
/
Makefile
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
NAME=cloudbreak-deployer
BINARYNAME=cbd
BINARY=cbd
ARTIFACTS=LICENSE.txt NOTICE.txt VERSION README
ARCH=$(shell uname -m)
VERSION_FILE=$(shell cat VERSION)
GIT_REV=$(shell git rev-parse --short HEAD)
GIT_BRANCH=$(shell git rev-parse --abbrev-ref HEAD)
S3_TARGET?=s3://public-repo-1.hortonworks.com/HDP/cloudbreak/
ifeq ($(VERSION),)
VERSION = $(shell echo \${GIT_BRANCH}-snapshot)
endif
FLAGS=" -X main.Version=$(VERSION)"
GO_IMAGE_VERSION=1.20.1
GO_IMAGE=docker-private.infra.cloudera.com/cloudera_thirdparty/golang
GO_MOD_FLAG_INTRODUCED=1.14.0
GO_VCS_FLAG_INTRODUCED=1.18.0
CURRENT_NORMALIZED_GO_VERSION=$(shell ./helper.sh version $(shell go version | cut -d" " -f3 | cut -c 3-))
MIN_NORMALIZED_MOD_VERSION=$(shell ./helper.sh version $(shell echo $(GO_MOD_FLAG_INTRODUCED)))
MIN_NORMALIZED_VCS_VERSION=$(shell ./helper.sh version $(shell echo $(GO_VCS_FLAG_INTRODUCED)))
update-container-versions:
sed -i "0,/DOCKER_TAG_THUNDERHEAD_MOCK/ s/DOCKER_TAG_THUNDERHEAD_MOCK .*/DOCKER_TAG_THUNDERHEAD_MOCK $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_MOCK_INFRASTRUCTURE/ s/DOCKER_TAG_MOCK_INFRASTRUCTURE .*/DOCKER_TAG_MOCK_INFRASTRUCTURE $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_PERISCOPE/ s/DOCKER_TAG_PERISCOPE .*/DOCKER_TAG_PERISCOPE $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_DATALAKE/ s/DOCKER_TAG_DATALAKE .*/DOCKER_TAG_DATALAKE $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_REDBEAMS/ s/DOCKER_TAG_REDBEAMS .*/DOCKER_TAG_REDBEAMS $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_ENVIRONMENT/ s/DOCKER_TAG_ENVIRONMENT .*/DOCKER_TAG_ENVIRONMENT $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_FREEIPA/ s/DOCKER_TAG_FREEIPA .*/DOCKER_TAG_FREEIPA $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_CLOUDBREAK/ s/DOCKER_TAG_CLOUDBREAK .*/DOCKER_TAG_CLOUDBREAK $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_CONSUMPTION/ s/DOCKER_TAG_CONSUMPTION .*/DOCKER_TAG_CONSUMPTION $(CB_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_ULUWATU/ s/DOCKER_TAG_ULUWATU .*/DOCKER_TAG_ULUWATU $(CB_VERSION)/" include/cloudbreak.bash
update-container-versions-cdpcp:
sed -i "0,/DOCKER_TAG_IDBMMS/ s/DOCKER_TAG_IDBMMS .*/DOCKER_TAG_IDBMMS $(CDPCP_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_WORKLOADIAM/ s/DOCKER_TAG_WORKLOADIAM .*/DOCKER_TAG_WORKLOADIAM $(CDPCP_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_ENVIRONMENTS2_API/ s/DOCKER_TAG_ENVIRONMENTS2_API .*/DOCKER_TAG_ENVIRONMENTS2_API $(CDPCP_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_DATALAKE_API/ s/DOCKER_TAG_DATALAKE_API .*/DOCKER_TAG_DATALAKE_API $(CDPCP_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_DISTROX_API/ s/DOCKER_TAG_DISTROX_API .*/DOCKER_TAG_DISTROX_API $(CDPCP_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_AUDIT/ s/DOCKER_TAG_AUDIT .*/DOCKER_TAG_AUDIT $(CDPCP_VERSION)/" include/cloudbreak.bash
sed -i "0,/DOCKER_TAG_DATALAKE_DR/ s/DOCKER_TAG_DATALAKE_DR .*/DOCKER_TAG_DATALAKE_DR $(CDPCP_VERSION)/" include/cloudbreak.bash
push-container-versions: update-container-versions
git add include/cloudbreak.bash
git commit -m "Updated container versions to $(CB_VERSION)"
git tag $(CB_VERSION)
git push origin HEAD:$(GIT_BRANCH) --tags
push-container-versions-cdpcp: update-container-versions-cdpcp
git add include/cloudbreak.bash
git commit -m "Updated CDPCP container versions to $(CDPCP_VERSION)"
git push origin HEAD:$(GIT_BRANCH)
_build:
mkdir -p build/Linux && GO111MODULE=on GOOS=linux go build $(VCSFLAG) -ldflags $(FLAGS) -o build/Linux/$(BINARYNAME)
mkdir -p build/Darwin && GO111MODULE=on GOOS=darwin go build $(VCSFLAG) -ldflags $(FLAGS) -o build/Darwin/$(BINARYNAME)
build: bindata
go test
if [ $(CURRENT_NORMALIZED_GO_VERSION) -ge $(MIN_NORMALIZED_VCS_VERSION) ]; then \
VCSFLAG="-buildvcs=false" make _build; \
else \
make _build; \
fi
deps-bindata:
ifeq ($(shell which go-bindata),)
go get -u github.com/go-bindata/go-bindata/...
if [ $(CURRENT_NORMALIZED_GO_VERSION) -ge $(MIN_NORMALIZED_MOD_VERSION) ]; then \
go install -mod=mod github.com/go-bindata/go-bindata/...; \
fi
endif
bindata: deps-bindata
go-bindata include templates .deps/bin
install: build ## Installs OS specific binary into: /usr/local/bin and ~/.local/bin
install build/$(shell uname -s)/$(BINARYNAME) /usr/local/bin || true
install build/$(shell uname -s)/$(BINARYNAME) ~/.local/bin || true
prepare-release:
rm -rf release && mkdir release
cp $(ARTIFACTS) build/Linux/
tar -zcf release/$(NAME)_$(VERSION)_Linux_$(ARCH).tgz -C build/Linux $(ARTIFACTS) $(BINARYNAME)
cp $(ARTIFACTS) build/Darwin/
tar -zcf release/$(NAME)_$(VERSION)_Darwin_$(ARCH).tgz -C build/Darwin $(ARTIFACTS) $(BINARYNAME)
release: build
rm -rf release
mkdir release
tar -zcvf release/$(NAME)_${VERSION}_Darwin_x86_64.tgz -C build/Darwin "${BINARY}"
tar -zcvf release/$(NAME)_${VERSION}_Linux_x86_64.tgz -C build/Linux "${BINARY}"
release-version: build
rm -rf release
mkdir release
tar -zcvf release/$(NAME)_${VERSION}_Darwin_x86_64.tgz -C build/Darwin "${BINARY}"
tar -zcvf release/$(NAME)_${VERSION}_Linux_x86_64.tgz -C build/Linux "${BINARY}"
release-docker:
@USER_NS='-u $(shell id -u $(whoami)):$(shell id -g $(whoami))'
docker run --rm ${USER_NS} -v "${PWD}":/go/src/github.com/hortonworks/cloudbreak-deployer -w /go/src/github.com/hortonworks/cloudbreak-deployer -e VERSION=${VERSION} -e GITHUB_ACCESS_TOKEN=${GITHUB_TOKEN} $(GO_IMAGE):$(GO_IMAGE_VERSION) bash -c "make release"
release-docker-version:
@USER_NS='-u $(shell id -u $(whoami)):$(shell id -g $(whoami))'
docker run --rm ${USER_NS} -v "${PWD}":/go/src/github.com/hortonworks/cloudbreak-deployer -w /go/src/github.com/hortonworks/cloudbreak-deployer -e VERSION=${VERSION} -e GITHUB_ACCESS_TOKEN=${GITHUB_TOKEN} $(GO_IMAGE):$(GO_IMAGE_VERSION) bash -c "make release-version"
upload_s3:
ls -1 release | xargs -I@ aws s3 cp release/@ s3://public-repo-1.hortonworks.com/HDP/cloudbreak/@ --acl public-read
mod-tidy:
@docker run --rm -v "${PWD}":/go/src/github.com/hortonworks/cloudbreak-deployer -w /go/src/github.com/hortonworks/cloudbreak-deployer -e GO111MODULE=on $(GO_IMAGE):$(GO_IMAGE_VERSION) make _mod-tidy
_mod-tidy:
go mod tidy -v
go mod vendor
circleci:
rm ~/.gitconfig
clean:
rm -rf build release
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.PHONY: build release generate-aws-json help
.DEFAULT_GOAL := help