master
sh 109 lines 2.33 KB
Raw
1 #!/usr/bin/env bash
2
3 # SPDX-License-Identifier: GPL-3.0-or-later
4
5 set -e
6
7 PLATFORMS=(
8 darwin/amd64
9 darwin/arm64
10 freebsd/386
11 freebsd/amd64
12 freebsd/arm
13 freebsd/arm64
14 linux/386
15 linux/amd64
16 linux/arm
17 linux/arm64
18 linux/ppc64
19 linux/ppc64le
20 linux/mips
21 linux/mipsle
22 linux/mips64
23 linux/mips64le
24 )
25
26 getos() {
27 local IFS=/ && read -ra array <<<"$1" && echo "${array[0]}"
28 }
29
30 getarch() {
31 local IFS=/ && read -ra array <<<"$1" && echo "${array[1]}"
32 }
33
34 WHICH="$1"
35
36 VERSION="${TRAVIS_TAG:-$(git describe --tags --always --dirty)}"
37
38 GOLDFLAGS=${GLDFLAGS:-}
39 GOLDFLAGS="$GOLDFLAGS -w -s -X github.com/netdata/netdata/go/plugins/pkg/buildinfo.Version=$VERSION"
40
41 build() {
42 echo "Building ${GOOS}/${GOARCH}"
43 CGO_ENABLED=0 GOOS="$1" GOARCH="$2" go build -ldflags "${GOLDFLAGS}" -o "$3" "github.com/netdata/netdata/go/plugins/cmd/godplugin"
44 }
45
46 create_config_archives() {
47 mkdir -p bin
48 tar -zcvf "bin/config.tar.gz" -C config .
49 tar -zcvf "bin/go.d.plugin-config-${VERSION}.tar.gz" -C config .
50 }
51
52 create_vendor_archives() {
53 mkdir -p bin
54 go mod vendor
55 tar -zc --transform "s:^:go.d.plugin-${VERSION#v}/:" -f "bin/vendor.tar.gz" vendor
56 tar -zc --transform "s:^:go.d.plugin-${VERSION#v}/:" -f "bin/go.d.plugin-vendor-${VERSION}.tar.gz" vendor
57 }
58
59 build_all_platforms() {
60 for PLATFORM in "${PLATFORMS[@]}"; do
61 GOOS=$(getos "$PLATFORM")
62 GOARCH=$(getarch "$PLATFORM")
63 FILE="bin/go.d.plugin-${VERSION}.${GOOS}-${GOARCH}"
64
65 build "$GOOS" "$GOARCH" "$FILE"
66
67 ARCHIVE="${FILE}.tar.gz"
68 tar -C bin -cvzf "${ARCHIVE}" "${FILE/bin\//}"
69 rm "${FILE}"
70 done
71 }
72
73 build_specific_platform() {
74 GOOS=$(getos "$1")
75 GOARCH=$(getarch "$1")
76 : "${GOARCH:=amd64}"
77
78 build "$GOOS" "$GOARCH" bin/godplugin
79 }
80
81 build_current_platform() {
82 eval "$(go env | grep -e "GOHOSTOS" -e "GOHOSTARCH")"
83 GOOS=${GOOS:-$GOHOSTOS}
84 GOARCH=${GOARCH:-$GOHOSTARCH}
85
86 build "$GOOS" "$GOARCH" bin/godplugin
87 }
88
89 if [[ "$WHICH" == "configs" ]]; then
90 echo "Creating config archives for version: $VERSION"
91 create_config_archives
92 exit 0
93 fi
94
95 if [[ "$WHICH" == "vendor" ]]; then
96 echo "Creating vendor archives for version: $VERSION"
97 create_vendor_archives
98 exit 0
99 fi
100
101 echo "Building binaries for version: $VERSION"
102
103 if [[ "$WHICH" == "all" ]]; then
104 build_all_platforms
105 elif [[ -n "$WHICH" ]]; then
106 build_specific_platform "$WHICH"
107 else
108 build_current_platform
109 fi