Skip to content

Commit a0adad5

Browse files
pmalek-sumopmalek
authored andcommitted
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
1 parent 9f8bdb4 commit a0adad5

File tree

4 files changed

+86
-0
lines changed

4 files changed

+86
-0
lines changed

Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,16 @@ clean:
157157
rm -f telegraf.exe
158158
rm -rf build
159159

160+
# In order to specify which tag to build provide GIT_TAG environment variables with desired revision
161+
.PHONY: build-release-binaries-in-docker
162+
build-release-binaries-in-docker:
163+
@./scripts/build-release-binaries-in-docker.sh
164+
165+
# In order to specify which tag to build provide GIT_TAG environment variables with desired revision
166+
.PHONY: build-release-binaries-locally
167+
build-release-binaries-locally:
168+
@./scripts/build-release-binaries.sh
169+
160170
.PHONY: docker-image
161171
docker-image:
162172
docker build -f scripts/stretch.docker -t "telegraf:$(commit)" .
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
apt-get update && apt-get install --yes zip
6+
GIT_TAG="${GIT_TAG}" ./scripts/build-release-binaries.sh
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/bash
2+
3+
docker run \
4+
--rm \
5+
--volume "$(pwd)":/app \
6+
--workdir /app \
7+
--env GIT_TAG \
8+
--entrypoint /app/scripts/build-release-binaries-docker-entrypoint.sh \
9+
golang:1.15

scripts/build-release-binaries.sh

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
if [[ -z "${GIT_TAG}" ]]; then
6+
echo "Please provide GIT_TAG environment variable to point which version to build"
7+
exit 1
8+
fi
9+
10+
DIR="$(pwd)"
11+
TMP_PATH="$(mktemp -d)/telegraf"
12+
REPO_URL="https://github.com/SumoLogic/telegraf.git"
13+
14+
FLAGS="--quiet"
15+
if [[ -n "${CI}" ]] ; then
16+
FLAGS=""
17+
fi
18+
19+
mkdir "${TMP_PATH}"
20+
21+
function cleanup() {
22+
rm -rf "${TMP_PATH}"
23+
}
24+
trap cleanup EXIT
25+
26+
echo "Cloning ${REPO_URL} to ${TMP_PATH}..."
27+
git clone ${FLAGS} --depth 1 ${REPO_URL} "${TMP_PATH}" && cd "${TMP_PATH}"
28+
git fetch ${FLAGS} --tags
29+
git checkout ${FLAGS} "${GIT_TAG}"
30+
echo "Checked out telegraf at ${GIT_TAG}"
31+
32+
go mod download
33+
for OS in windows darwin linux; do
34+
echo "Building telegraf for ${OS}..."
35+
BINARY_PATH="telegraf-${GIT_TAG}_${OS}_amd64"
36+
if [[ "${OS}" == "windows" ]] ; then
37+
BINARY_PATH="${BINARY_PATH}.exe"
38+
fi
39+
40+
GOOS=${OS} GOARCH=amd64 go build -o "${BINARY_PATH}" ./cmd/telegraf
41+
42+
if [[ "${OS}" == "windows" ]] ; then
43+
ARCHIVE_PATH="$(basename "${BINARY_PATH}.zip")"
44+
zip -q "${ARCHIVE_PATH}" "${BINARY_PATH}"
45+
else
46+
ARCHIVE_PATH="$(basename "${BINARY_PATH}.tar.gz")"
47+
tar -czvf "${ARCHIVE_PATH}" "$(basename "${BINARY_PATH}")"
48+
fi
49+
50+
if [[ -f "${DIR}/${ARCHIVE_PATH}" ]]; then
51+
rm "${DIR}/${ARCHIVE_PATH}"
52+
fi
53+
cp "${ARCHIVE_PATH}" "${DIR}"
54+
55+
if [[ -f "${DIR}/${BINARY_PATH}" ]];then
56+
rm "${DIR}/${BINARY_PATH}"
57+
fi
58+
cp "${BINARY_PATH}" "${DIR}"
59+
60+
echo "Successfully built ${BINARY_PATH} (compressed into ${ARCHIVE_PATH})"
61+
done

0 commit comments

Comments
 (0)