Skip to content

Commit

Permalink
Add targets to build amd64 release binaries for windows, darwin and l…
Browse files Browse the repository at this point in the history
…inux (#28)

* Add targets to build amd64 release binaries for windows, darwin and linux

* Allow specifying which tag to build
  • Loading branch information
pmalek-sumo authored and pmalek committed Sep 28, 2020
1 parent 9f8bdb4 commit a0adad5
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 0 deletions.
10 changes: 10 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)" .
Expand Down
6 changes: 6 additions & 0 deletions scripts/build-release-binaries-docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -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
9 changes: 9 additions & 0 deletions scripts/build-release-binaries-in-docker.sh
Original file line number Diff line number Diff line change
@@ -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
61 changes: 61 additions & 0 deletions scripts/build-release-binaries.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit a0adad5

Please sign in to comment.