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