github.com/grafana/synthetic-monitoring-agent@v0.64.2/scripts/make/950_release.mk (about) 1 ##@ Packaging 2 GOPATH := $(shell go env GOPATH) 3 GORELEASER := $(GOPATH)/bin/goreleaser 4 # TODO: Upgrade goreleaser when Go version is upgraded past 1.17. Newer versions require Go 1.18 or 1.19 5 $(GORELEASER): 6 go install github.com/goreleaser/goreleaser@v1.21.2 7 8 .PHONY: release 9 release: $(GORELEASER) ## Build a release and publish it to Github. 10 $(S) echo "Building and publishing release files..." 11 $(GORELEASER) release --rm-dist $(GORELEASER_FLAGS) 12 13 .PHONY: release-snapshot 14 release-snapshot: $(GORELEASER) ## Build a snapshot release for testing (not published). 15 $(S) echo "Building release files..." 16 $(GORELEASER) release --snapshot --rm-dist $(GORELEASER_FLAGS) 17 18 define package_template 19 PACKAGE_TARGETS += package-$(1)-$(2) 20 21 $(DISTDIR)/$(1)-$(2)/nfpm-input.yaml: $(DISTDIR)/version 22 '$(ROOTDIR)/scripts/package/create-parameters-file' '$$@' '$(1)' '$(2)' '$(BUILD_VERSION)' '$(ROOTDIR)' '$(DISTDIR)' 23 24 $(DISTDIR)/$(1)-$(2)/nfpm.yaml : $(DISTDIR)/$(1)-$(2)/nfpm-input.yaml 25 $(DISTDIR)/$(1)-$(2)/nfpm.yaml : $(ROOTDIR)/scripts/package/nfpm.yaml.template 26 $(DISTDIR)/$(1)-$(2)/nfpm.yaml : 27 $(S) mkdir -p $(DISTDIR)/$(1)-$(2) 28 $(S) gomplate \ 29 --context '.=file://$(DISTDIR)/$(1)-$(2)/nfpm-input.yaml' \ 30 --file '$(ROOTDIR)/scripts/package/nfpm.yaml.template' \ 31 > '$$@' 32 33 package-deb-$(1)-$(2) : $(DISTDIR)/$(1)-$(2)/nfpm.yaml $(DISTDIR)/changelog.yaml 34 $(S) nfpm package \ 35 --config $(DISTDIR)/$(1)-$(2)/nfpm.yaml \ 36 --packager deb \ 37 --target $(DISTDIR)/$(1)-$(2)/ 38 39 package-rpm-$(1)-$(2) : $(DISTDIR)/$(1)-$(2)/nfpm.yaml $(DISTDIR)/changelog.yaml 40 $(S) nfpm package \ 41 --config $(DISTDIR)/$(1)-$(2)/nfpm.yaml \ 42 --packager rpm \ 43 --target $(DISTDIR)/$(1)-$(2)/ 44 45 package-tgz-$(1)-$(2) : $(DISTDIR)/$(1)-$(2)/k6-v1 $(DISTDIR)/$(1)-$(2)/k6-v2 $(DISTDIR)/$(1)-$(2)/synthetic-monitoring-agent $(ROOTDIR)/CHANGELOG.md $(ROOTDIR)/README.md $(ROOTDIR)/LICENSE 46 # Create a tarball including the binaries, changelog, and readme. --transform is used to place all files at the root 47 # of the tarball. The built-in make variable dollar-caret is escaped with two dollars so it survives package_template. 48 $(S) tar --transform 's|.*/||' -zcf $(DISTDIR)/$(1)-$(2)/synthetic-monitoring-agent-$(firstword $(subst -, ,$(BUILD_VERSION)))-$(1)-$(2).tar.gz $$^ 49 50 package-$(1)-$(2) : package-deb-$(1)-$(2) package-rpm-$(1)-$(2) package-tgz-$(1)-$(2) 51 @true 52 53 package : package-$(1)-$(2) 54 endef 55 56 $(foreach BUILD_PLATFORM,$(PLATFORMS), \ 57 $(eval $(call package_template,$(word 1,$(subst /, ,$(BUILD_PLATFORM))),$(word 2,$(subst /, ,$(BUILD_PLATFORM)))))) 58 59 $(DISTDIR)/changelog.yaml: $(DISTDIR)/version 60 $(S) chglog init \ 61 --conventional-commits \ 62 --exclude-merge-commits \ 63 --owner 'Grafana Labs <support@grafana.com>' \ 64 --config-file '$(ROOTDIR)/scripts/package/chglog.yaml' \ 65 --output '$@' 66 67 .PHONY: package 68 package: 69 @true 70 71 package-native : package-$(HOST_OS)-$(HOST_ARCH) 72 @true