diff --git a/.circleci/real_config.yml b/.circleci/real_config.yml index 43a958c75fe..5ee2cfbea07 100644 --- a/.circleci/real_config.yml +++ b/.circleci/real_config.yml @@ -1803,10 +1803,12 @@ jobs: password: ${NGC_API_KEY} - pre-package-and-push-system - make-component: + dryrun: <> component: master target: release no_output_timeout: "30m" - make-component: + dryrun: <> component: agent target: release no_output_timeout: "30m" @@ -1815,6 +1817,10 @@ jobs: path: /tmp/pkgs package-and-push-system-release-ee: + parameters: + dryrun: + type: boolean + default: false docker: - image: <> environment: @@ -1832,12 +1838,16 @@ jobs: username: ${DOCKER_USER} password: ${DOCKER_PASS} - pre-package-and-push-system - - run: - no_output_timeout: 30m - command: make -C master release-ee - - run: - no_output_timeout: 30m - command: make -C agent release-ee + - make-component: + dryrun: <> + component: master + target: release-ee + no_output_timeout: "30m" + - make-component: + dryrun: <> + component: agent + target: release-ee + no_output_timeout: "30m" - run: mkdir /tmp/pkgs && cp -v */dist/*.{rpm,deb,tar.gz} /tmp/pkgs publish-helm-gh-rc: @@ -5017,6 +5027,65 @@ workflows: context: determined-production filters: *release-filters + release-ee-dryrun: + jobs: + - build-helm: + filters: *release-dryrun + + - build-proto: + filters: *release-dryrun + + - build-react: + context: determined-production + matrix: + parameters: + ee: [true] + filters: *release-dryrun + + - build-docs: + matrix: + parameters: + ee: [true] + context: determined-production + filters: *release-dryrun + requires: + - build-helm + - build-proto + + - upload-docs-search-index: + requires: + - build-docs + context: determined-production + filters: *release-dryrun + + - package-and-push-system-release-ee: + dryrun: true + requires: + - build-react + - build-docs + context: determined-production + filters: *release-dryrun + + - publish-docs: + matrix: + parameters: + ee: [true] + dryrun: [true] + requires: + - build-docs + context: determined-production + filters: *release-dryrun + + - publish-helm-gh: + matrix: + parameters: + ee: [true] + dryrun: [true] + requires: + - build-helm + context: determined-production + filters: *release-dryrun + release-ee: jobs: - build-helm: diff --git a/Makefile b/Makefile index 65c3276f48c..db359915a56 100644 --- a/Makefile +++ b/Makefile @@ -34,6 +34,7 @@ go-version-check: .PHONY: package package: + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes $(MAKE) -C agent $@ $(MAKE) -C master $@ @@ -44,6 +45,7 @@ package-dryrun: .PHONY: package-ee package-ee: + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes $(MAKE) -C agent $@ $(MAKE) -C master $@ diff --git a/agent/.goreleaser.yml b/agent/.goreleaser.yml index 374d30ffcc5..b147d77b44a 100644 --- a/agent/.goreleaser.yml +++ b/agent/.goreleaser.yml @@ -132,7 +132,7 @@ docker_manifests: image_templates: - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" - - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION}}" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION_DOCKER}}" image_templates: - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" diff --git a/agent/.goreleaser_ee.yml b/agent/.goreleaser_ee.yml index 138633f2ae6..308d3bcea3b 100644 --- a/agent/.goreleaser_ee.yml +++ b/agent/.goreleaser_ee.yml @@ -91,13 +91,13 @@ nfpms: release: github: owner: determined-ai - name: determined-ee + name: determined # be sure to keep this in sync between agent/master/helm # the "include" functionality is only in the pro version header: | ## Release Notes - [{{ .Tag }}](https://github.com/determined-ai/determined-ee/blob/{{ .Tag }}/docs/release-notes.rst) + [{{ .Tag }}](https://github.com/determined-ai/determined/blob/{{ .Tag }}/docs/release-notes.rst) dockers: # amd64 @@ -134,7 +134,7 @@ docker_manifests: image_templates: - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" - - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION}}" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION_DOCKER}}" image_templates: - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" diff --git a/agent/.goreleaser_ee_dryrun.yml b/agent/.goreleaser_ee_dryrun.yml new file mode 100644 index 00000000000..62ddb77bdcf --- /dev/null +++ b/agent/.goreleaser_ee_dryrun.yml @@ -0,0 +1,109 @@ +project_name: hpe-mlde-agent-dryrun + +snapshot: + name_template: "{{ .Env.VERSION }}" + +builds: + - main: ./cmd/determined-agent + id: determined-agent + binary: determined-agent + goos: + - linux + - darwin + goarch: + - amd64 + - arm64 + +archives: + - wrap_in_directory: "true" + rlcp: true + files: + - src: "packaging/agent.yaml" + dst: "etc/determined/" + strip_parent: true + - src: "packaging/LICENSE" + strip_parent: true + +nfpms: + - maintainer: "Determined AI " + formats: + - deb + - rpm + contents: + - src: "packaging/agent.yaml" + dst: "/etc/determined/agent.yaml" + type: config|noreplace + file_info: + mode: 0644 + - src: "packaging/determined-agent.service" + dst: "/lib/systemd/system/determined-agent.service" + + - src: "packaging/LICENSE" + dst: "/usr/share/licenses/determined-agent/LICENSE" + packager: rpm + + - src: "packaging/LICENSE" + dst: "/usr/share/doc/determined-agent/copyright" + packager: deb + + overrides: + deb: + scripts: + postinstall: packaging/debian/agent.postinst + preremove: packaging/debian/agent.prerm + postremove: packaging/debian/agent.postrm + +release: + github: + owner: determined-ai + name: determined-dryrun + + # be sure to keep this in sync between agent/master/helm + # the "include" functionality is only in the pro version + header: | + ## Release Notes + [{{ .Tag }}](https://github.com/determined-ai/determined-dryrun/blob/{{ .Tag }}/docs/release-notes.rst) + +dockers: + # amd64 + - goos: linux + goarch: amd64 + use: buildx + build_flag_templates: + - --platform=linux/amd64 + - --builder=buildx-build + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + extra_files: + - packaging/entrypoint.sh + - packaging/LICENSE + # arm64 + - goos: linux + goarch: arm64 + use: buildx + build_flag_templates: + - --platform=linux/arm64 + - --builder=buildx-build + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" + extra_files: + - packaging/entrypoint.sh + - packaging/LICENSE + +docker_manifests: + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}" + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.ShortCommit}}" + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION_DOCKER}}" + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:latest" + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" diff --git a/agent/Makefile b/agent/Makefile index 267a40d7bfb..cc2d48b96a9 100644 --- a/agent/Makefile +++ b/agent/Makefile @@ -142,10 +142,17 @@ release-dryrun: packaging/LICENSE buildx .PHONY: release-ee release-ee: export GORELEASER_CURRENT_TAG := $(VERSION_TAG)-ee -release-ee: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(VERSION_TAG)-ee" -A1 | sed -n '2 p') +release-ee: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(GORELEASER_CURRENT_TAG)" -A1 | sed -n '2 p') release-ee: packaging/LICENSE buildx goreleaser --rm-dist -f ./.goreleaser_ee.yml +.PHONY: release-ee-dryrun +# VERSION_TAG v0.38.0+dryrun becomes v0.38.0-ee+dryrun +release-ee-dryrun: export GORELEASER_CURRENT_TAG := $(shell echo $(VERSION_TAG) | sed "s/+dryrun/-ee&/g") +release-ee-dryrun: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(GORELEASER_CURRENT_TAG)" -A1 | sed -n '2 p') +release-ee-dryrun: packaging/LICENSE buildx + goreleaser --rm-dist -f ./.goreleaser_ee_dryrun.yml + define manifest_publish for image in $(2); do \ docker push $$image; \ diff --git a/harness/Makefile b/harness/Makefile index d761b5fef8f..ce4e00b8d22 100644 --- a/harness/Makefile +++ b/harness/Makefile @@ -20,6 +20,7 @@ publish-ee: ; publish-dryrun: twine upload --verbose --non-interactive --repository testpypi dist/* +.PHONY: publish-ee-dryrun publish-ee-dryrun: ; .PHONY: fmt diff --git a/helm/.goreleaser.yml b/helm/.goreleaser.yml index 8c13dc20ab0..69da9636cc2 100644 --- a/helm/.goreleaser.yml +++ b/helm/.goreleaser.yml @@ -10,7 +10,7 @@ release: mode: keep-existing extra_files: - glob: build/determined-latest.tgz - name_template: "determined-helm-chart_{{ .Env.VERSION }}.tgz" + name_template: "determined-helm-chart_{{ .VERSION }}.tgz" prerelease: auto # be sure to keep this in sync between agent/master/helm diff --git a/helm/.goreleaser_dryrun.yml b/helm/.goreleaser_dryrun.yml index f992c1c9d65..35c939cd58b 100644 --- a/helm/.goreleaser_dryrun.yml +++ b/helm/.goreleaser_dryrun.yml @@ -1,4 +1,4 @@ -project_name: determined-helm +project_name: determined-helm-dryrun build: skip: true @@ -10,7 +10,7 @@ release: mode: keep-existing extra_files: - glob: build/determined-latest.tgz - name_template: "determined-helm-chart_{{ .Env.VERSION }}.tgz" + name_template: "determined-helm-chart_{{ .VERSION }}.tgz" # be sure to keep this in sync between agent/master/helm # the "include" functionality is only in the pro version diff --git a/helm/.goreleaser_ee.yml b/helm/.goreleaser_ee.yml index 091b6033464..64c7d004e74 100644 --- a/helm/.goreleaser_ee.yml +++ b/helm/.goreleaser_ee.yml @@ -1,4 +1,4 @@ -project_name: determined-helm +project_name: hpe-mlde-helm build: skip: true @@ -6,15 +6,14 @@ build: release: github: owner: determined-ai - name: determined-ee + name: determined mode: keep-existing extra_files: - glob: build/determined-latest.tgz - name_template: "determined-helm-chart_{{ .Env.VERSION }}.tgz" - prerelease: auto + name_template: "hpe-mlde-helm-chart_{{ .VERSION }}.tgz" # be sure to keep this in sync between agent/master/helm # the "include" functionality is only in the pro version header: | ## Release Notes - [{{ .Tag }}](https://github.com/determined-ai/determined-ee/blob/{{ .Tag }}/docs/release-notes.rst) + [{{ .Tag }}](https://github.com/determined-ai/determined/blob/{{ .Tag }}/docs/release-notes.rst) diff --git a/helm/.goreleaser_ee_dryrun.yml b/helm/.goreleaser_ee_dryrun.yml new file mode 100644 index 00000000000..2417a2c6d05 --- /dev/null +++ b/helm/.goreleaser_ee_dryrun.yml @@ -0,0 +1,19 @@ +project_name: hpe-mlde-helm-dryrun + +build: + skip: true + +release: + github: + owner: determined-ai + name: determined-dryrun + mode: keep-existing + extra_files: + - glob: build/determined-latest.tgz + name_template: "hpe-mlde-helm-chart_{{ .VERSION }}.tgz" + + # be sure to keep this in sync between agent/master/helm + # the "include" functionality is only in the pro version + header: | + ## Release Notes + [{{ .Tag }}](https://github.com/determined-ai/determined-dryrun/blob/{{ .Tag }}/docs/release-notes.rst) diff --git a/helm/Makefile b/helm/Makefile index c1d5e8fff02..af9e0f292bb 100644 --- a/helm/Makefile +++ b/helm/Makefile @@ -49,10 +49,17 @@ release-gh-dryrun: .PHONY: release-gh-ee release-gh-ee: export GORELEASER_CURRENT_TAG := $(VERSION_TAG)-ee -release-gh-ee: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(VERSION_TAG)-ee" -A1 | sed -n '2 p') +release-gh-ee: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(GORELEASER_CURRENT_TAG)" -A1 | sed -n '2 p') release-gh-ee: go install github.com/goreleaser/goreleaser@v1.14.1 git clean -df - goreleaser --rm-dist + goreleaser --rm-dist -f ./.goreleaser_ee.yml -release-gh-ee-dryrun: ; +.PHONY: release-gh-ee-dryrun +# VERSION_TAG v0.38.0+dryrun becomes v0.38.0-ee+dryrun +release-gh-ee-dryrun: export GORELEASER_CURRENT_TAG := $(shell echo $(VERSION_TAG) | sed "s/+dryrun/-ee&/g") +release-gh-ee-dryrun: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(GORELEASER_CURRENT_TAG)" -A1 | sed -n '2 p') +release-gh-ee-dryrun: + go install github.com/goreleaser/goreleaser@v1.14.1 + git clean -df + goreleaser --rm-dist -f ./.goreleaser_ee_dryrun.yml diff --git a/master/.goreleaser.yml b/master/.goreleaser.yml index 9efa4bd3b93..ce281e9d4a4 100644 --- a/master/.goreleaser.yml +++ b/master/.goreleaser.yml @@ -189,7 +189,7 @@ docker_manifests: image_templates: - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" - - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION}}" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION_DOCKER}}" image_templates: - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" diff --git a/master/.goreleaser_ee.yml b/master/.goreleaser_ee.yml index 0f445b799d4..60f22d2b020 100644 --- a/master/.goreleaser_ee.yml +++ b/master/.goreleaser_ee.yml @@ -142,13 +142,13 @@ nfpms: release: github: owner: determined-ai - name: determined-ee + name: determined # be sure to keep this in sync between agent/master/helm # the "include" functionality is only in the pro version header: | ## Release Notes - [{{ .Tag }}](https://github.com/determined-ai/determined-ee/blob/{{ .Tag }}/docs/release-notes.rst) + [{{ .Tag }}](https://github.com/determined-ai/determined/blob/{{ .Tag }}/docs/release-notes.rst) dockers: # amd64 @@ -195,7 +195,7 @@ docker_manifests: image_templates: - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" - - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION}}" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION_DOCKER}}" image_templates: - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" diff --git a/master/.goreleaser_ee_dryrun.yml b/master/.goreleaser_ee_dryrun.yml new file mode 100644 index 00000000000..3e91ab20e00 --- /dev/null +++ b/master/.goreleaser_ee_dryrun.yml @@ -0,0 +1,157 @@ +project_name: hpe-mlde-master-dryrun + +before: + hooks: + - make pre-package + +snapshot: + name_template: "{{ .Tag }}" + +builds: + - main: ./cmd/determined-master + id: determined-ee-master + binary: determined-master + ldflags: + - -X github.com/determined-ai/determined/master/version.Version={{.Env.VERSION}} + - -X github.com/determined-ai/determined/master/internal/config.DefaultSegmentMasterKey={{.Env.DET_SEGMENT_MASTER_KEY}} + - -X github.com/determined-ai/determined/master/internal/config.DefaultSegmentWebUIKey={{.Env.DET_SEGMENT_WEBUI_KEY}} + - -X github.com/determined-ai/determined/master/internal/license.licenseKey={{ .Env.DET_EE_LICENSE_KEY }} + - -X github.com/determined-ai/determined/master/internal/license.publicKey={{.Env.DET_EE_PUBLIC_KEY}} + goos: + - linux + - darwin + goarch: + - amd64 + - arm64 + - main: ./cmd/determined-gotmpl + id: determined-gotmpl + binary: determined-gotmpl + goos: + - linux + - darwin + goarch: + - amd64 + - arm64 + +archives: + - wrap_in_directory: "true" + rlcp: true + files: + - src: "packaging/master.yaml" + dst: "etc/determined/" + strip_parent: true + + - src: "packaging/determined-master.service" + dst: "lib/systemd/system/" + strip_parent: true + - src: "packaging/determined-master.socket" + dst: "lib/systemd/system/" + strip_parent: true + - src: "packaging/LICENSE" + strip_parent: true + - src: "static/**/*" + dst: "share/static" + - src: "build/**/*" + dst: "share" + +nfpms: + - maintainer: "Determined AI " + formats: + - deb + - rpm + contents: + - src: "packaging/master.yaml" + dst: "/etc/determined/master.yaml" + type: config|noreplace + file_info: + mode: 0600 + - src: "build/**/*" + dst: "/usr/share/determined/master" + - src: "static/**/*" + dst: "/usr/share/determined/master/static" + - src: "packaging/determined-master.service" + dst: "/lib/systemd/system/determined-master.service" + - src: "packaging/determined-master.socket" + dst: "/lib/systemd/system/determined-master.socket" + + - src: "packaging/LICENSE" + dst: "/usr/share/doc/determined-master/copyright" + packager: deb + + - src: "packaging/LICENSE" + dst: "/usr/share/licenses/determined-master/LICENSE" + packager: rpm + + overrides: + deb: + scripts: + postinstall: packaging/debian/master.postinst + preremove: packaging/debian/master.prerm + postremove: packaging/debian/master.postrm + dependencies: + - xmlsec1 + +release: + github: + owner: determined-ai + name: determined-dryrun + + # be sure to keep this in sync between agent/master/helm + # the "include" functionality is only in the pro version + header: | + ## Release Notes + [{{ .Tag }}](https://github.com/determined-ai/determined-dryrun/blob/{{ .Tag }}/docs/release-notes.rst) + +dockers: + # amd64 + - goos: linux + goarch: amd64 + use: buildx + build_flag_templates: + - --platform=linux/amd64 + - --builder=buildx-build + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + extra_files: + - "packaging/master.yaml" + - "packaging/LICENSE" + - "build" + - "static" + ids: + - determined-ee-master + - determined-gotmpl + # arm64 + - goos: linux + goarch: arm64 + use: buildx + build_flag_templates: + - --platform=linux/arm64 + - --builder=buildx-build + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" + extra_files: + - "packaging/master.yaml" + - "packaging/LICENSE" + - "build" + - "static" + ids: + - determined-ee-master + - determined-gotmpl + +docker_manifests: + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}" + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.ShortCommit}}" + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.Env.VERSION_DOCKER}}" + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" + - name_template: "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:latest" + image_templates: + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-amd64" + - "{{.Env.DOCKER_REPO}}/{{.ProjectName}}:{{.FullCommit}}-arm64" diff --git a/master/Makefile b/master/Makefile index 096575b7f73..a974fd7c491 100644 --- a/master/Makefile +++ b/master/Makefile @@ -9,7 +9,7 @@ MOCK_INPUTS = Makefile ./internal/sproto/task.go ./internal/db/database.go ./int GORELEASER = goreleaser export VERSION := $(shell ../version.sh) -export VERSION_TAG:=$(shell ../version.sh -t) +export VERSION_TAG :=$(shell ../version.sh -t) export VERSION_DOCKER := $(shell ../version.sh -d) export GO111MODULE := on @@ -272,6 +272,7 @@ release: export DET_SEGMENT_WEBUI_KEY ?= release: export GORELEASER_CURRENT_TAG := $(VERSION_TAG) release: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+$$' | grep "$(VERSION_TAG)" -A1 | sed -n '2 p') release: gen buildx + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes $(GORELEASER) --rm-dist make publish-nvcr @@ -282,6 +283,7 @@ release-dryrun: export GORELEASER_CURRENT_TAG := $(VERSION_TAG) release-dryrun: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+$$' | grep "$(VERSION_TAG)" -A1 | sed -n '2 p') # We intentionally do not invoke `make publish-nvcr(-dryrun)` here. release-dryrun: gen buildx + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes $(GORELEASER) --rm-dist -f ./.goreleaser_dryrun.yml .PHONY: release-ee @@ -289,11 +291,24 @@ release-ee: export DET_SEGMENT_MASTER_KEY ?= release-ee: export DET_SEGMENT_WEBUI_KEY ?= release-ee: export DET_EE_LICENSE_KEY = $(shell cat ../license.txt) release-ee: export DET_EE_PUBLIC_KEY = $(shell cat ../public.txt) -release-ee: export GORELEASER_CURRENT_TAG := $(VERSION)-ee -release-ee: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(VERSION_TAG)-ee" -A1 | sed -n '2 p') +release-ee: export GORELEASER_CURRENT_TAG := $(VERSION_TAG)-ee +release-ee: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(GORELEASER_CURRENT_TAG)" -A1 | sed -n '2 p') release-ee: gen buildx + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes $(GORELEASER) --rm-dist -f ./.goreleaser_ee.yml +.PHONY: release-ee-dryrun +release-ee-dryrun: export DET_SEGMENT_MASTER_KEY ?= +release-ee-dryrun: export DET_SEGMENT_WEBUI_KEY ?= +release-ee-dryrun: export DET_EE_LICENSE_KEY = $(shell cat ../license.txt) +release-ee-dryrun: export DET_EE_PUBLIC_KEY = $(shell cat ../public.txt) +# VERSION_TAG v0.38.0+dryrun becomes v0.38.0-ee+dryrun +release-ee-dryrun: export GORELEASER_CURRENT_TAG := $(shell echo $(VERSION_TAG) | sed "s/+dryrun/-ee&/g") +release-ee-dryrun: export GORELEASER_PREVIOUS_TAG := $(shell git tag --sort=-creatordate | grep -E '^v?[0-9.]+-ee$$' | grep "$(GORELEASER_CURRENT_TAG)" -A1 | sed -n '2 p') +release-ee-dryrun: gen buildx + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + $(GORELEASER) --rm-dist -f ./.goreleaser_ee_dryrun.yml + define manifest_publish for image in $(2); do \ docker push $$image; \ diff --git a/version.sh b/version.sh index 8de3496d7eb..e3b1e78fcd5 100755 --- a/version.sh +++ b/version.sh @@ -41,6 +41,8 @@ OPTSTRING=":td" # Options parsing # -t outputs the full git tag, necessary for some build steps. # -d outputs a Docker-friendly image tag, necessary for pushing to Docker Hub. +# For example, 0.38.0+dryrun becomes 0.38.0-dryrun, as '+' is invalid in a +# docker tag. # The default case simply strips the leading 'v'. while getopts ${OPTSTRING} opt; do case ${opt} in