# Makefile.packaging adds release-packaging-specific targets. PARENT_MAKEFILE := $(firstword $(MAKEFILE_LIST)) .PHONY: dist clean-dist dist: dist-agent-binaries dist-agent-flow-binaries dist-agentctl-binaries dist-agent-packages dist-agent-flow-packages dist-agent-installer dist-agent-flow-installer clean-dist: rm -rf dist dist.temp # Used for passing through environment variables to sub-makes. # # NOTE(rfratto): This *must* use `=` instead of `:=` so it's expanded at # reference time. Earlier iterations of this file had each target explicitly # list these, but it's too easy to forget to set on so this is used to ensure # everything needed is always passed through. PACKAGING_VARS = RELEASE_BUILD=1 GO_TAGS="$(GO_TAGS)" GOOS=$(GOOS) GOARCH=$(GOARCH) GOARM=$(GOARM) # # agent release binaries # dist-agent-binaries: dist/grafana-agent-linux-amd64 \ dist/grafana-agent-linux-arm64 \ dist/grafana-agent-linux-ppc64le \ dist/grafana-agent-linux-s390x \ dist/grafana-agent-darwin-amd64 \ dist/grafana-agent-darwin-arm64 \ dist/grafana-agent-windows-amd64.exe \ dist/grafana-agent-freebsd-amd64 dist/grafana-agent-linux-amd64: GO_TAGS += builtinassets promtail_journal_enabled dist/grafana-agent-linux-amd64: GOOS := linux dist/grafana-agent-linux-amd64: GOARCH := amd64 dist/grafana-agent-linux-amd64: generate-ui $(PACKAGING_VARS) AGENT_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent dist/grafana-agent-linux-arm64: GO_TAGS += builtinassets promtail_journal_enabled dist/grafana-agent-linux-arm64: GOOS := linux dist/grafana-agent-linux-arm64: GOARCH := arm64 dist/grafana-agent-linux-arm64: generate-ui $(PACKAGING_VARS) AGENT_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent dist/grafana-agent-linux-ppc64le: GO_TAGS += builtinassets promtail_journal_enabled dist/grafana-agent-linux-ppc64le: GOOS := linux dist/grafana-agent-linux-ppc64le: GOARCH := ppc64le dist/grafana-agent-linux-ppc64le: generate-ui $(PACKAGING_VARS) AGENT_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent dist/grafana-agent-linux-s390x: GO_TAGS += builtinassets promtail_journal_enabled dist/grafana-agent-linux-s390x: GOOS := linux dist/grafana-agent-linux-s390x: GOARCH := ppc64le dist/grafana-agent-linux-s390x: generate-ui $(PACKAGING_VARS) AGENT_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent dist/grafana-agent-darwin-amd64: GO_TAGS += builtinassets dist/grafana-agent-darwin-amd64: GOOS := darwin dist/grafana-agent-darwin-amd64: GOARCH := amd64 dist/grafana-agent-darwin-amd64: generate-ui $(PACKAGING_VARS) AGENT_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent dist/grafana-agent-darwin-arm64: GO_TAGS += builtinassets dist/grafana-agent-darwin-arm64: GOOS := darwin dist/grafana-agent-darwin-arm64: GOARCH := arm64 dist/grafana-agent-darwin-arm64: generate-ui $(PACKAGING_VARS) AGENT_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent dist/grafana-agent-windows-amd64.exe: GO_TAGS += builtinassets dist/grafana-agent-windows-amd64.exe: GOOS := windows dist/grafana-agent-windows-amd64.exe: GOARCH := amd64 dist/grafana-agent-windows-amd64.exe: generate-ui $(PACKAGING_VARS) AGENT_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent dist/grafana-agent-freebsd-amd64: GO_TAGS += builtinassets dist/grafana-agent-freebsd-amd64: GOOS := freebsd dist/grafana-agent-freebsd-amd64: GOARCH := amd64 dist/grafana-agent-freebsd-amd64: generate-ui $(PACKAGING_VARS) AGEAGENT_BINARYNT_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent # # agentctl release binaries. # dist-agentctl-binaries: dist/grafana-agentctl-linux-amd64 \ dist/grafana-agentctl-linux-arm64 \ dist/grafana-agentctl-linux-ppc64le \ dist/grafana-agentctl-linux-s390x \ dist/grafana-agentctl-darwin-amd64 \ dist/grafana-agentctl-darwin-arm64 \ dist/grafana-agentctl-windows-amd64.exe \ dist/grafana-agentctl-freebsd-amd64 dist/grafana-agentctl-linux-amd64: GOOS := linux dist/grafana-agentctl-linux-amd64: GOARCH := amd64 dist/grafana-agentctl-linux-amd64: $(PACKAGING_VARS) AGENTCTL_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agentctl dist/grafana-agentctl-linux-arm64: GOOS := linux dist/grafana-agentctl-linux-arm64: GOARCH := arm64 dist/grafana-agentctl-linux-arm64: $(PACKAGING_VARS) AGENTCTL_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agentctl dist/grafana-agentctl-linux-ppc64le: GOOS := linux dist/grafana-agentctl-linux-ppc64le: GOARCH := ppc64le dist/grafana-agentctl-linux-ppc64le: $(PACKAGING_VARS) AGENTCTL_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agentctl dist/grafana-agentctl-linux-s390x: GOOS := linux dist/grafana-agentctl-linux-s390x: GOARCH := s390x dist/grafana-agentctl-linux-s390x: $(PACKAGING_VARS) AGENTCTL_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agentctl dist/grafana-agentctl-darwin-amd64: GOOS := darwin dist/grafana-agentctl-darwin-amd64: GOARCH := amd64 dist/grafana-agentctl-darwin-amd64: $(PACKAGING_VARS) AGENTCTL_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agentctl dist/grafana-agentctl-darwin-arm64: GOOS := darwin dist/grafana-agentctl-darwin-arm64: GOARCH := arm64 dist/grafana-agentctl-darwin-arm64: $(PACKAGING_VARS) AGENTCTL_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agentctl dist/grafana-agentctl-windows-amd64.exe: GOOS := windows dist/grafana-agentctl-windows-amd64.exe: GOARCH := amd64 dist/grafana-agentctl-windows-amd64.exe: $(PACKAGING_VARS) AGENTCTL_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agentctl dist/grafana-agentctl-freebsd-amd64: GOOS := freebsd dist/grafana-agentctl-freebsd-amd64: GOARCH := amd64 dist/grafana-agentctl-freebsd-amd64: $(PACKAGING_VARS) AGENTCTL_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agentctl # # agent-flow release binaries # # agent-flow release binaries are intermediate build assets used for producing # Flow-specific system packages. As such, they are built in a dist.temp # directory instead of the normal dist directory. # # Only targets needed for system packages are used here. # dist-agent-flow-binaries: dist.temp/grafana-agent-flow-linux-amd64 \ dist.temp/grafana-agent-flow-linux-arm64 \ dist.temp/grafana-agent-flow-linux-ppc64le \ dist.temp/grafana-agent-flow-linux-s390x \ dist.temp/grafana-agent-flow-windows-amd64.exe dist.temp/grafana-agent-flow-linux-amd64: GO_TAGS += builtinassets promtail_journal_enabled dist.temp/grafana-agent-flow-linux-amd64: GOOS := linux dist.temp/grafana-agent-flow-linux-amd64: GOARCH := amd64 dist.temp/grafana-agent-flow-linux-amd64: generate-ui $(PACKAGING_VARS) FLOW_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent-flow dist.temp/grafana-agent-flow-linux-arm64: GO_TAGS += builtinassets promtail_journal_enabled dist.temp/grafana-agent-flow-linux-arm64: GOOS := linux dist.temp/grafana-agent-flow-linux-arm64: GOARCH := arm64 dist.temp/grafana-agent-flow-linux-arm64: generate-ui $(PACKAGING_VARS) FLOW_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent-flow dist.temp/grafana-agent-flow-linux-ppc64le: GO_TAGS += builtinassets promtail_journal_enabled dist.temp/grafana-agent-flow-linux-ppc64le: GOOS := linux dist.temp/grafana-agent-flow-linux-ppc64le: GOARCH := ppc64le dist.temp/grafana-agent-flow-linux-ppc64le: generate-ui $(PACKAGING_VARS) FLOW_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent-flow dist.temp/grafana-agent-flow-linux-s390x: GO_TAGS += builtinassets promtail_journal_enabled dist.temp/grafana-agent-flow-linux-s390x: GOOS := linux dist.temp/grafana-agent-flow-linux-s390x: GOARCH := ppc64le dist.temp/grafana-agent-flow-linux-s390x: generate-ui $(PACKAGING_VARS) FLOW_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent-flow dist.temp/grafana-agent-flow-windows-amd64.exe: GO_TAGS += builtinassets dist.temp/grafana-agent-flow-windows-amd64.exe: GOOS := windows dist.temp/grafana-agent-flow-windows-amd64.exe: GOARCH := amd64 dist.temp/grafana-agent-flow-windows-amd64.exe: generate-ui $(PACKAGING_VARS) FLOW_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent-flow # # agent-service release binaries. # # agent-service release binaries are intermediate build assets used for # producing Flow-specific system packages. As such, they are built in a # dist.temp directory instead of the normal dist directory. # # Only targets needed for system packages are used here. # dist-agent-service-binaries: dist.temp/grafana-agent-service-windows-amd64.exe dist.temp/grafana-agent-service-windows-amd64.exe: GO_TAGS += builtinassets dist.temp/grafana-agent-service-windows-amd64.exe: GOOS := windows dist.temp/grafana-agent-service-windows-amd64.exe: GOARCH := amd64 dist.temp/grafana-agent-service-windows-amd64.exe: generate-ui $(PACKAGING_VARS) SERVICE_BINARY=$@ $(MAKE) -f $(PARENT_MAKEFILE) agent-service # # DEB and RPM grafana-agent packages. # AGENT_ENVIRONMENT_FILE_rpm := /etc/sysconfig/grafana-agent AGENT_ENVIRONMENT_FILE_deb := /etc/default/grafana-agent # generate_agent_fpm(deb|rpm, package arch, agent arch, output file) define generate_agent_fpm = fpm -s dir -v $(AGENT_PACKAGE_VERSION) -a $(2) \ -n grafana-agent --iteration $(AGENT_PACKAGE_RELEASE) -f \ --log error \ --license "Apache 2.0" \ --vendor "Grafana Labs" \ --url "https://github.com/grafana/agent" \ -t $(1) \ --after-install packaging/grafana-agent/$(1)/control/postinst \ --before-remove packaging/grafana-agent/$(1)/control/prerm \ --config-files /etc/grafana-agent.yaml \ --config-files $(AGENT_ENVIRONMENT_FILE_$(1)) \ --rpm-rpmbuild-define "_build_id_links none" \ --package $(4) \ dist/grafana-agent-linux-$(3)=/usr/bin/grafana-agent \ dist/grafana-agentctl-linux-$(3)=/usr/bin/grafana-agentctl \ packaging/grafana-agent/grafana-agent.yaml=/etc/grafana-agent.yaml \ packaging/grafana-agent/environment-file=$(AGENT_ENVIRONMENT_FILE_$(1)) \ packaging/grafana-agent/$(1)/grafana-agent.service=/usr/lib/systemd/system/grafana-agent.service endef AGENT_PACKAGE_VERSION := $(patsubst v%,%,$(VERSION)) AGENT_PACKAGE_RELEASE := 1 AGENT_PACKAGE_PREFIX := dist/grafana-agent-$(AGENT_PACKAGE_VERSION)-$(AGENT_PACKAGE_RELEASE) .PHONY: dist-agent-packages dist-agent-packages: dist-agent-packages-amd64 \ dist-agent-packages-arm64 \ dist-agent-packages-ppc64le \ dist-agent-packages-s390x .PHONY: dist-agent-packages-amd64 dist-agent-packages-amd64: dist/grafana-agent-linux-amd64 dist/grafana-agentctl-linux-amd64 ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else $(call generate_agent_fpm,deb,amd64,amd64,$(AGENT_PACKAGE_PREFIX).amd64.deb) $(call generate_agent_fpm,rpm,x86_64,amd64,$(AGENT_PACKAGE_PREFIX).amd64.rpm) endif .PHONY: dist-agent-packages-arm64 dist-agent-packages-arm64: dist/grafana-agent-linux-arm64 dist/grafana-agentctl-linux-arm64 ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else $(call generate_agent_fpm,deb,arm64,arm64,$(AGENT_PACKAGE_PREFIX).arm64.deb) $(call generate_agent_fpm,rpm,aarch64,arm64,$(AGENT_PACKAGE_PREFIX).arm64.rpm) endif .PHONY: dist-agent-packages-ppc64le dist-agent-packages-ppc64le: dist/grafana-agent-linux-ppc64le dist/grafana-agentctl-linux-ppc64le ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else $(call generate_agent_fpm,deb,ppc64el,ppc64le,$(AGENT_PACKAGE_PREFIX).ppc64el.deb) $(call generate_agent_fpm,rpm,ppc64le,ppc64le,$(AGENT_PACKAGE_PREFIX).ppc64le.rpm) endif .PHONY: dist-agent-packages-s390x dist-agent-packages-s390x: dist/grafana-agent-linux-s390x dist/grafana-agentctl-linux-s390x ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else $(call generate_agent_fpm,deb,s390x,s390x,$(AGENT_PACKAGE_PREFIX).s390x.deb) $(call generate_agent_fpm,rpm,s390x,s390x,$(AGENT_PACKAGE_PREFIX).s390x.rpm) endif # # DEB and RPM grafana-agent-flow packages. # FLOW_ENVIRONMENT_FILE_rpm := /etc/sysconfig/grafana-agent-flow FLOW_ENVIRONMENT_FILE_deb := /etc/default/grafana-agent-flow # generate_flow_fpm(deb|rpm, package arch, agent arch, output file) define generate_flow_fpm = fpm -s dir -v $(FLOW_PACKAGE_VERSION) -a $(2) \ -n grafana-agent-flow --iteration $(FLOW_PACKAGE_RELEASE) -f \ --log error \ --license "Apache 2.0" \ --vendor "Grafana Labs" \ --url "https://github.com/grafana/agent" \ -t $(1) \ --after-install packaging/grafana-agent-flow/$(1)/control/postinst \ --before-remove packaging/grafana-agent-flow/$(1)/control/prerm \ --config-files /etc/grafana-agent-flow.river \ --config-files $(FLOW_ENVIRONMENT_FILE_$(1)) \ --rpm-rpmbuild-define "_build_id_links none" \ --package $(4) \ dist.temp/grafana-agent-flow-linux-$(3)=/usr/bin/grafana-agent-flow \ packaging/grafana-agent-flow/grafana-agent-flow.river=/etc/grafana-agent-flow.river \ packaging/grafana-agent-flow/environment-file=$(FLOW_ENVIRONMENT_FILE_$(1)) \ packaging/grafana-agent-flow/$(1)/grafana-agent-flow.service=/usr/lib/systemd/system/grafana-agent-flow.service endef FLOW_PACKAGE_VERSION := $(patsubst v%,%,$(VERSION)) FLOW_PACKAGE_RELEASE := 1 FLOW_PACKAGE_PREFIX := dist/grafana-agent-flow-$(AGENT_PACKAGE_VERSION)-$(AGENT_PACKAGE_RELEASE) .PHONY: dist-agent-flow-packages dist-agent-flow-packages: dist-agent-flow-packages-amd64 \ dist-agent-flow-packages-arm64 \ dist-agent-flow-packages-ppc64le \ dist-agent-flow-packages-s390x .PHONY: dist-agent-flow-packages-amd64 dist-agent-flow-packages-amd64: dist.temp/grafana-agent-flow-linux-amd64 ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else $(call generate_flow_fpm,deb,amd64,amd64,$(FLOW_PACKAGE_PREFIX).amd64.deb) $(call generate_flow_fpm,rpm,x86_64,amd64,$(FLOW_PACKAGE_PREFIX).amd64.rpm) endif .PHONY: dist-agent-flow-packages-arm64 dist-agent-flow-packages-arm64: dist.temp/grafana-agent-flow-linux-arm64 ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else $(call generate_flow_fpm,deb,arm64,arm64,$(FLOW_PACKAGE_PREFIX).arm64.deb) $(call generate_flow_fpm,rpm,aarch64,arm64,$(FLOW_PACKAGE_PREFIX).arm64.rpm) endif .PHONY: dist-agent-flow-packages-ppc64le dist-agent-flow-packages-ppc64le: dist.temp/grafana-agent-flow-linux-ppc64le ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else $(call generate_flow_fpm,deb,ppc64el,ppc64le,$(FLOW_PACKAGE_PREFIX).ppc64el.deb) $(call generate_flow_fpm,rpm,ppc64le,ppc64le,$(FLOW_PACKAGE_PREFIX).ppc64le.rpm) endif .PHONY: dist-agent-flow-packages-s390x dist-agent-flow-packages-s390x: dist.temp/grafana-agent-flow-linux-s390x ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else $(call generate_flow_fpm,deb,s390x,s390x,$(FLOW_PACKAGE_PREFIX).s390x.deb) $(call generate_flow_fpm,rpm,s390x,s390x,$(FLOW_PACKAGE_PREFIX).s390x.rpm) endif # # Windows installer # # TODO(rfratto): update the install_script.nsis so we don't need to copy assets # over into the packaging/windows folder. .PHONY: dist-agent-installer dist-agent-installer: dist/grafana-agent-windows-amd64.exe ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else cp ./dist/grafana-agent-windows-amd64.exe ./packaging/grafana-agent/windows cp LICENSE ./packaging/grafana-agent/windows makensis -V4 -DVERSION=$(VERSION) -DOUT="../../../dist/grafana-agent-installer.exe" ./packaging/grafana-agent/windows/install_script.nsis endif .PHONY: dist-agent-flow-installer dist-agent-flow-installer: dist.temp/grafana-agent-flow-windows-amd64.exe dist.temp/grafana-agent-service-windows-amd64.exe ifeq ($(USE_CONTAINER),1) $(RERUN_IN_CONTAINER) else makensis -V4 -DVERSION=$(VERSION) -DOUT="../../../dist/grafana-agent-flow-installer.exe" ./packaging/grafana-agent-flow/windows/install_script.nsis endif