From a0adad56e2ea14192a10dd0f6586ed7917e2ad72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Ma=C5=82ek?= <69143962+pmalek-sumo@users.noreply.github.com> Date: Mon, 28 Sep 2020 15:15:45 +0200 Subject: [PATCH] Add targets to build amd64 release binaries for windows, darwin and linux (#28) * Add targets to build amd64 release binaries for windows, darwin and linux * Allow specifying which tag to build --- Makefile | 10 +++ ...uild-release-binaries-docker-entrypoint.sh | 6 ++ scripts/build-release-binaries-in-docker.sh | 9 +++ scripts/build-release-binaries.sh | 61 +++++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100755 scripts/build-release-binaries-docker-entrypoint.sh create mode 100755 scripts/build-release-binaries-in-docker.sh create mode 100755 scripts/build-release-binaries.sh diff --git a/Makefile b/Makefile index f07afed9e21dd..f8531bae57209 100644 --- a/Makefile +++ b/Makefile @@ -157,6 +157,16 @@ clean: rm -f telegraf.exe rm -rf build +# In order to specify which tag to build provide GIT_TAG environment variables with desired revision +.PHONY: build-release-binaries-in-docker +build-release-binaries-in-docker: + @./scripts/build-release-binaries-in-docker.sh + +# In order to specify which tag to build provide GIT_TAG environment variables with desired revision +.PHONY: build-release-binaries-locally +build-release-binaries-locally: + @./scripts/build-release-binaries.sh + .PHONY: docker-image docker-image: docker build -f scripts/stretch.docker -t "telegraf:$(commit)" . diff --git a/scripts/build-release-binaries-docker-entrypoint.sh b/scripts/build-release-binaries-docker-entrypoint.sh new file mode 100755 index 0000000000000..4e82f5dad61ab --- /dev/null +++ b/scripts/build-release-binaries-docker-entrypoint.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e + +apt-get update && apt-get install --yes zip +GIT_TAG="${GIT_TAG}" ./scripts/build-release-binaries.sh diff --git a/scripts/build-release-binaries-in-docker.sh b/scripts/build-release-binaries-in-docker.sh new file mode 100755 index 0000000000000..41765be0f0b6a --- /dev/null +++ b/scripts/build-release-binaries-in-docker.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +docker run \ + --rm \ + --volume "$(pwd)":/app \ + --workdir /app \ + --env GIT_TAG \ + --entrypoint /app/scripts/build-release-binaries-docker-entrypoint.sh \ + golang:1.15 diff --git a/scripts/build-release-binaries.sh b/scripts/build-release-binaries.sh new file mode 100755 index 0000000000000..03c58683a666e --- /dev/null +++ b/scripts/build-release-binaries.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +set -e + +if [[ -z "${GIT_TAG}" ]]; then + echo "Please provide GIT_TAG environment variable to point which version to build" + exit 1 +fi + +DIR="$(pwd)" +TMP_PATH="$(mktemp -d)/telegraf" +REPO_URL="https://github.com/SumoLogic/telegraf.git" + +FLAGS="--quiet" +if [[ -n "${CI}" ]] ; then + FLAGS="" +fi + +mkdir "${TMP_PATH}" + +function cleanup() { + rm -rf "${TMP_PATH}" +} +trap cleanup EXIT + +echo "Cloning ${REPO_URL} to ${TMP_PATH}..." +git clone ${FLAGS} --depth 1 ${REPO_URL} "${TMP_PATH}" && cd "${TMP_PATH}" +git fetch ${FLAGS} --tags +git checkout ${FLAGS} "${GIT_TAG}" +echo "Checked out telegraf at ${GIT_TAG}" + +go mod download +for OS in windows darwin linux; do + echo "Building telegraf for ${OS}..." + BINARY_PATH="telegraf-${GIT_TAG}_${OS}_amd64" + if [[ "${OS}" == "windows" ]] ; then + BINARY_PATH="${BINARY_PATH}.exe" + fi + + GOOS=${OS} GOARCH=amd64 go build -o "${BINARY_PATH}" ./cmd/telegraf + + if [[ "${OS}" == "windows" ]] ; then + ARCHIVE_PATH="$(basename "${BINARY_PATH}.zip")" + zip -q "${ARCHIVE_PATH}" "${BINARY_PATH}" + else + ARCHIVE_PATH="$(basename "${BINARY_PATH}.tar.gz")" + tar -czvf "${ARCHIVE_PATH}" "$(basename "${BINARY_PATH}")" + fi + + if [[ -f "${DIR}/${ARCHIVE_PATH}" ]]; then + rm "${DIR}/${ARCHIVE_PATH}" + fi + cp "${ARCHIVE_PATH}" "${DIR}" + + if [[ -f "${DIR}/${BINARY_PATH}" ]];then + rm "${DIR}/${BINARY_PATH}" + fi + cp "${BINARY_PATH}" "${DIR}" + + echo "Successfully built ${BINARY_PATH} (compressed into ${ARCHIVE_PATH})" +done