153 lines
3.7 KiB
Go
153 lines
3.7 KiB
Go
package main
|
|
|
|
// This should build and upload the binary to mirrors
|
|
|
|
// upload binary to mirrors.wit.com/cloud/control-panel
|
|
|
|
import "log"
|
|
import "fmt"
|
|
import "time"
|
|
import "strings"
|
|
import "os/user"
|
|
import "os"
|
|
import "runtime"
|
|
|
|
import "github.com/davecgh/go-spew/spew"
|
|
|
|
import "git.wit.com/wit/shell"
|
|
|
|
// import "os/user"
|
|
// import "io/ioutil"
|
|
// github.com/bramvdbogaerde/go-scp
|
|
|
|
var BuildMap map[string]*bool
|
|
|
|
var filename string
|
|
var builddir string
|
|
|
|
func main() {
|
|
BuildMap = make(map[string]*bool)
|
|
|
|
setbuilddir()
|
|
|
|
// shell.Quiet(true)
|
|
shell.Quiet(false)
|
|
|
|
// shell.Run("git tag --list")
|
|
// os.Exit(-1)
|
|
|
|
for {
|
|
shell.Run("git checkout master")
|
|
shell.Run("git pull --tags")
|
|
shell.Run("go get -v -u -t")
|
|
|
|
findtags()
|
|
time.Sleep(time.Second * 60)
|
|
}
|
|
}
|
|
|
|
func findtags() {
|
|
tags := shell.Run("git tag --list")
|
|
// log.Println(tags)
|
|
for _, tag := range strings.Split(tags, "\n") {
|
|
tag = strings.Replace(tag, "v", "", -1) // remove all 'v' chars
|
|
if (BuildMap[tag] == nil) {
|
|
log.Println("TAG =", tag, "is nil")
|
|
log.Println("\tCHECK IF BUILD WAS ATTEMPTED =", tag)
|
|
BuildMap[tag] = build(tag)
|
|
} else {
|
|
if (*BuildMap[tag] == true) {
|
|
log.Println("TAG =", tag, "is true")
|
|
} else {
|
|
log.Println("TAG =", tag, "is false")
|
|
}
|
|
}
|
|
}
|
|
|
|
// os.Exit(0)
|
|
}
|
|
|
|
func build(tag string) *bool {
|
|
var b bool
|
|
url := "https://mirrors.wit.com/cloud/control-panel/linux/" + filename + "-v" + tag + ".md5sum"
|
|
log.Println("\tTRYING URL", url)
|
|
md5sum := shell.Chomp(shell.Wget(url))
|
|
if (md5sum != "") {
|
|
log.Println("\tBUILD ALREADY DONE TAG =", tag, "md5sum =", md5sum)
|
|
b = true
|
|
// for {}
|
|
return &b
|
|
}
|
|
// for {}
|
|
|
|
shell.Quiet(false)
|
|
shell.Run("git checkout v" + tag)
|
|
|
|
gitref := shell.Run("git rev-list -1 HEAD")
|
|
tagref := shell.Run("cat .git/refs/tags/v" + tag) // what is the right way?
|
|
|
|
if (gitref != tagref) {
|
|
log.Println("\tJESUS HOW TO DO THIS CORRECTLY?", gitref, "ne", tagref)
|
|
// os.Exit(-1)
|
|
// return nil
|
|
}
|
|
|
|
// setup the files that will end up in the binary
|
|
epoch := fmt.Sprintf("%d", time.Now().Unix())
|
|
shell.Write("./resources/BUILDDATE", epoch)
|
|
shell.Write("./resources/BUILDREF", gitref)
|
|
|
|
// rebuild the binary (always remove the old one
|
|
shell.Run("rm " + filename)
|
|
shell.Run("go build")
|
|
md5sum = shell.Run("md5sum " + filename)
|
|
log.Println("\tmd5sum =", md5sum)
|
|
|
|
if (md5sum == "") {
|
|
log.Println("\tBUILD FAILED")
|
|
b = false
|
|
return &b
|
|
}
|
|
shell.Write("/tmp/autobuild.md5sum", md5sum)
|
|
upload(tag)
|
|
|
|
// This version has been built yet
|
|
log.Println("\tTHIS VERSION HAS BEEN UPLOADED =", tag)
|
|
b = true
|
|
return &b
|
|
}
|
|
|
|
func setbuilddir() {
|
|
user, err := user.Current()
|
|
spew.Dump(user)
|
|
if err != nil {
|
|
os.Exit(-1)
|
|
}
|
|
|
|
if runtime.GOOS == "linux" {
|
|
log.Println("loadConfigFile() OS: Linux")
|
|
filename = "cloud-control-panel"
|
|
builddir = user.HomeDir + "/go/src/git.wit.com/wit/cloud-control-panel"
|
|
} else if runtime.GOOS == "windows" {
|
|
log.Println("loadConfigFile() OS: Windows")
|
|
builddir = user.HomeDir + "\\go\\src\\git.wit.com\\wit\\cloud-control-panel"
|
|
filename = "cloud-control-panel.exe"
|
|
} else {
|
|
log.Println("loadConfigFile() OS: " + runtime.GOOS)
|
|
filename = "cloud-control-panel"
|
|
builddir = user.HomeDir + "/go/src/git.wit.com/wit/cloud-control-panel"
|
|
}
|
|
}
|
|
|
|
// upload the files to mirrors
|
|
func upload(tag string) {
|
|
mirrors := "root@mirrors.wit.com:/data/mirrors/cloud/control-panel/linux/"
|
|
|
|
// don't update the master VERSION here
|
|
// shell.Run("scp resources/VERSION " + mirrors)
|
|
shell.Run("scp cloud-control-panel " + mirrors)
|
|
shell.Run("scp resources/BUILDDATE " + mirrors + filename + "-v" + tag + ".BUILDDATE")
|
|
shell.Run("scp cloud-control-panel " + mirrors + filename + "-v" + tag)
|
|
shell.Run("scp /tmp/autobuild.md5sum " + mirrors + filename + "-v" + tag + ".md5sum")
|
|
}
|