forked from bosun-monitor/bosun
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.go
69 lines (63 loc) · 1.82 KB
/
build.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// Simple script to build bosun and scollector. This is not required, but it will properly insert version date and commit
// metadata into the resulting binaries, which `go build` will not do by default.
package main
import (
"flag"
"fmt"
"log"
"os"
"os/exec"
"path/filepath"
"strings"
"time"
)
var (
shaFlag = flag.String("sha", "", "SHA to embed.")
buildBosun = flag.Bool("bosun", false, "Only build Bosun.")
buildTsdb = flag.Bool("tsdbrelay", false, "Only build tsdbrelay")
buildScollector = flag.Bool("scollector", false, "Only build scollector.")
output = flag.String("output", "", "Output directory; defaults to $GOPATH/bin.")
allProgs = []string{"bosun", "scollector", "tsdbrelay"}
)
func main() {
flag.Parse()
// Get current commit SHA
sha := *shaFlag
if sha == "" {
cmd := exec.Command("git", "rev-parse", "HEAD")
cmd.Stderr = os.Stderr
output, err := cmd.Output()
if err != nil {
log.Fatal(err)
}
sha = strings.TrimSpace(string(output))
}
timeStr := time.Now().UTC().Format("20060102150405")
ldFlags := fmt.Sprintf("-X bosun.org/_version.VersionSHA=%s -X bosun.org/_version.VersionDate=%s", sha, timeStr)
progs := allProgs
if *buildBosun {
progs = []string{"bosun"}
} else if *buildScollector {
progs = []string{"scollector"}
} else if *buildTsdb {
progs = []string{"tsdbrelay"}
}
for _, app := range progs {
fmt.Println("building", app)
var args []string
if *output != "" {
args = append(args, "build", "-o", filepath.Join(*output, app))
} else {
args = append(args, "install")
}
args = append(args, "-ldflags", ldFlags, fmt.Sprintf("bosun.org/cmd/%s", app))
fmt.Println("go", strings.Join(args, " "))
cmd := exec.Command("go", args...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
}
}