diff --git a/Dockerfile b/Dockerfile index f410485..d3c69b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,10 @@ FROM quay.io/nordstrom/baseimage-ubuntu:16.04 +ARG CURRENT_TAG + COPY kubelogin /kubelogin -COPY download/windows/kubelogin-cli-windows.zip /download/windows/ -COPY download/linux/kubelogin-cli-linux.tar.gz /download/linux/ -COPY download/mac/kubelogin-cli-darwin.tar.gz /download/mac/ +COPY cli/windows/kubelogin-cli-windows-${CURRENT_TAG}.zip /download/windows/kubelogin-cli-windows.zip +COPY cli/linux/kubelogin-cli-linux-${CURRENT_TAG}.tar.gz /download/linux/kubelogin-cli-linux.tar.gz +COPY cli/mac/kubelogin-cli-darwin-${CURRENT_TAG}.tar.gz /download/mac/kubelogin-cli-darwin.tar.gz ENTRYPOINT /kubelogin diff --git a/Makefile b/Makefile index 5f30957..f44bb07 100644 --- a/Makefile +++ b/Makefile @@ -1,42 +1,105 @@ -image_tag := v0.0.2 -image_name := quay.io/nordstrom/kubelogin +GITHUB_REPO_OWNER := Nordstrom +GITHUB_REPO_NAME := kubelogin +GITHUB_RELEASE_PRERELASE_BOOLEAN := true +GITHUB_RELEASES_URL := https://api.github.com/repos/$(GITHUB_REPO_OWNER)/$(GITHUB_REPO_NAME)/releases +GITHUB_INDIVIDUAL_RELEASE_ASSET_URL := https://uploads.github.com/repos/$(GITHUB_REPO_OWNER)/$(GITHUB_REPO_NAME)/releases +GITHUB_REPO_HOST_AND_PATH := github.com/$(GITHUB_REPO_OWNER)/$(GITHUB_REPO_NAME) +IMAGE_NAME := quay.io/nordstrom/kubelogin +BUILD := build +CURRENT_TAG := v0.0.3-pre -build build/download/mac build/download/linux build/download/windows: - mkdir -p $@ +.PHONY: image/build image/push +.PHONY: release/tag/local release/tag/push +.PHONY: release/github/create release/github/update +.PHONY: clean + +image/push: image/build + docker push $(IMAGE_NAME):$(CURRENT_TAG) + +image/build: $(BUILD)/cli/mac/kubelogin-cli-darwin-$(CURRENT_TAG).tar.gz +image/build: $(BUILD)/cli/linux/kubelogin-cli-linux-$(CURRENT_TAG).tar.gz +image/build: $(BUILD)/cli/windows/kubelogin-cli-windows-$(CURRENT_TAG).zip +image/build: $(BUILD)/Dockerfile $(BUILD)/kubelogin + docker build --build-arg CURRENT_TAG=$(CURRENT_TAG) --tag $(IMAGE_NAME):$(CURRENT_TAG) $( "$@" + @if [ -z "$$(cat '$@')" ]; then \ + make "$(BUILD)/github-release-$(CURRENT_TAG)-response-body-new.json"; \ + mv "$(BUILD)/github-release-$(CURRENT_TAG)-response-body-new.json" "$@"; \ + fi + +$(BUILD)/github-release-$(CURRENT_TAG)-response-body-new.json: $(BUILD)/github-release-$(CURRENT_TAG)-request-body.json + @if [ -z "$(GITHUB_USERNAME)" ]; then echo "Please set GITHUB_USERNAME"; exit 1; fi + curl -u $(GITHUB_USERNAME) -XPOST -d@"$<" "$(GITHUB_RELEASES_URL)" > "$@" + +$(BUILD)/github-release-$(CURRENT_TAG)-id: $(BUILD)/github-release-$(CURRENT_TAG)-response-body.json + jq -r '.id' "$<" > "$@" + +$(BUILD)/github-release-$(CURRENT_TAG)-request-body.json: Makefile | $(BUILD) + jq -n '{ \ + tag_name: "$(CURRENT_TAG)", \ + target_commitish: "master", \ + name: "$(CURRENT_TAG)", \ + body: "kubelogin release $(CURRENT_TAG)", \ + draft: true, \ + prerelease: $(GITHUB_RELEASE_PRERELASE_BOOLEAN) \ + }' > "$@" + +$(BUILD)/cli/mac/kubelogin-cli-darwin-$(CURRENT_TAG).tar.gz: $(BUILD)/cli/mac/kubelogin +$(BUILD)/cli/linux/kubelogin-cli-linux-$(CURRENT_TAG).tar.gz: $(BUILD)/cli/linux/kubelogin +$(BUILD)/cli/mac/kubelogin-cli-darwin-$(CURRENT_TAG).tar.gz $(BUILD)/cli/linux/kubelogin-cli-linux-$(CURRENT_TAG).tar.gz: + tar -C "$(@D)" -czf $@ "$(