Skip to content

Commit

Permalink
add hotfix build support (#4240)
Browse files Browse the repository at this point in the history
  • Loading branch information
harshavardhana authored Sep 9, 2022
1 parent ea96e2b commit 6f414de
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 5 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ stage/
mc
.run*
.idea/
mc.RELEASE*
17 changes: 17 additions & 0 deletions Dockerfile.hotfix
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6

ARG RELEASE

LABEL maintainer="MinIO Inc <dev@min.io>"

COPY CREDITS /licenses/CREDITS
COPY LICENSE /licenses/LICENSE

RUN \
microdnf update --nodocs && \
microdnf install curl ca-certificates shadow-utils --nodocs && \
microdnf clean all && \
curl -s -q https://dl.min.io/client/mc/hotfixes/linux-amd64/archive/mc.${RELEASE} -o /usr/bin/mc && \
chmod +x /usr/bin/mc

ENTRYPOINT ["mc"]
27 changes: 24 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ LDFLAGS := $(shell go run buildscripts/gen-ldflags.go)
GOARCH := $(shell go env GOARCH)
GOOS := $(shell go env GOOS)

BUILD_LDFLAGS := '$(LDFLAGS)'

VERSION ?= $(shell git describe --tags)
TAG ?= "minio/mc:$(VERSION)"

Expand Down Expand Up @@ -59,7 +57,30 @@ verify:
# Builds mc locally.
build: checks
@echo "Building mc binary to './mc'"
@GO111MODULE=on CGO_ENABLED=0 go build -trimpath -tags kqueue --ldflags $(BUILD_LDFLAGS) -o $(PWD)/mc
@GO111MODULE=on CGO_ENABLED=0 go build -trimpath -tags kqueue --ldflags "$(LDFLAGS)" -o $(PWD)/mc

hotfix-vars:
$(eval LDFLAGS := $(shell MC_RELEASE="RELEASE" MC_HOTFIX="hotfix.$(shell git rev-parse --short HEAD)" go run buildscripts/gen-ldflags.go $(shell git describe --tags --abbrev=0 | \
sed 's#RELEASE\.\([0-9]\+\)-\([0-9]\+\)-\([0-9]\+\)T\([0-9]\+\)-\([0-9]\+\)-\([0-9]\+\)Z#\1-\2-\3T\4:\5:\6Z#')))
$(eval VERSION := $(shell git describe --tags --abbrev=0).hotfix.$(shell git rev-parse --short HEAD))
$(eval TAG := "minio/mc:$(VERSION)")

hotfix: hotfix-vars install ## builds mc binary with hotfix tags
@mv -f ./mc ./mc.$(VERSION)
@minisign -qQSm ./mc.$(VERSION) -s "${CRED_DIR}/minisign.key" < "${CRED_DIR}/minisign-passphrase"
@sha256sum < ./mc.$(VERSION) | sed 's, -,mc.$(VERSION),g' > mc.$(VERSION).sha256sum

hotfix-push: hotfix
@scp -q -r mc.$(VERSION)* minio@dl-0.min.io:~/releases/client/mc/hotfixes/linux-amd64/archive/
@scp -q -r mc.$(VERSION)* minio@dl-1.min.io:~/releases/client/mc/hotfixes/linux-amd64/archive/
@echo "Published new hotfix binaries at https://dl.min.io/client/mc/hotfixes/linux-amd64/archive/mc.$(VERSION)"

docker-hotfix-push: docker-hotfix
@docker push -q $(TAG) && echo "Published new container $(TAG)"

docker-hotfix: hotfix-push checks ## builds mc docker container with hotfix tags
@echo "Building mc docker image '$(TAG)'"
@docker build -q --no-cache -t $(TAG) --build-arg RELEASE=$(VERSION) . -f Dockerfile.hotfix

# Builds MinIO and installs it to $GOPATH/bin.
install: build
Expand Down
14 changes: 12 additions & 2 deletions buildscripts/gen-ldflags.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,25 @@ func releaseTag(version string) (string, time.Time) {
relPrefix = prefix
}

relSuffix := ""
if hotfix := os.Getenv("MC_HOTFIX"); hotfix != "" {
relSuffix = hotfix
}

relTag := strings.ReplaceAll(version, " ", "-")
relTag = strings.ReplaceAll(relTag, ":", "-")
relTag = strings.ReplaceAll(relTag, ",", "")
t, err := time.Parse("2006-01-02T15-04-05Z", relTag)
if err != nil {
panic(err)
}

return relPrefix + "." + relTag, t
relTag = strings.ReplaceAll(relTag, ",", "")
relTag = relPrefix + "." + relTag
if relSuffix != "" {
relTag += "." + relSuffix
}

return relTag, t
}

// commitID returns the abbreviated commit-id hash of the last commit.
Expand Down

0 comments on commit 6f414de

Please sign in to comment.