mirror of https://github.com/icedream/icecon.git
Add Jenkinsfile.
parent
9e6e209eb4
commit
8d7e33545a
|
@ -0,0 +1,94 @@
|
|||
def binext(os) {
|
||||
switch(os) {
|
||||
case "windows":
|
||||
return ".exe"
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
def upx(file) {
|
||||
// Install upx
|
||||
tool "UPX v3.91"
|
||||
|
||||
switch("${env.GOOS}.${env.GOARCH}") {
|
||||
case ~/linux\.(amd64|386)/:
|
||||
case ~/darwin\.(amd64|arm)/:
|
||||
case ~/windows\..+/:
|
||||
case ~/.+bsd\.386/:
|
||||
if (env.GOOS == "linux") {
|
||||
sh "GOOS= GOARCH= go get -v github.com/pwaller/goupx"
|
||||
sh "goupx --no-upx \"$file\""
|
||||
}
|
||||
sh "upx --best --ultra-brute \"$file\""
|
||||
break
|
||||
default:
|
||||
echo "Skipping UPX compression as it is not supported for $goos/$goarch."
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
def withGoEnv(os, arch, f) {
|
||||
// Install go
|
||||
env.GOROOT = tool "Go 1.7"
|
||||
env.GOPATH = env.WORKSPACE
|
||||
|
||||
switch(arch) {
|
||||
case "x64":
|
||||
arch = "amd64"
|
||||
break
|
||||
case "x86":
|
||||
arch = "386"
|
||||
break
|
||||
case "armv5":
|
||||
case "armv6":
|
||||
case "armv7":
|
||||
arch = "arm"
|
||||
break
|
||||
case "armv8":
|
||||
arch = "arm64"
|
||||
break
|
||||
}
|
||||
|
||||
withEnv(["CGO_ENABLED=1", "GOOS=${os}", "GOARCH=${arch}"]) {
|
||||
switch(arch) {
|
||||
case "armv5":
|
||||
withEnv("GOARM=5", f)
|
||||
break
|
||||
case "armv6":
|
||||
withEnv("GOARM=6", f)
|
||||
break
|
||||
case "armv7":
|
||||
withEnv("GOARM=7", f)
|
||||
break
|
||||
default:
|
||||
f()
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def build(os, arch) {
|
||||
node("docker && linux && amd64") {
|
||||
checkout scm
|
||||
docker.image("dockcross/${os}-${arch}").inside {
|
||||
withGoEnv(os, arch) {
|
||||
def binfilename = "icecon_${env.GOOS}_${env.GOARCH}${binext os}"
|
||||
sh "GOOS= GOARCH= go get -v github.com/josephspurrier/goversioninfo/cmd/goversioninfo"
|
||||
sh "go generate -v ./..."
|
||||
sh "go get -v -d ./..."
|
||||
sh "go build -o ${binfilename}"
|
||||
upx binfilename
|
||||
archive "${binfilename}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parallel (
|
||||
windows_x64: { build("windows", "x64") },
|
||||
windows_x86: { build("windows", "x86") },
|
||||
linux_x64: { build("linux", "x64") },
|
||||
linux_x86: { build("linux", "x86") },
|
||||
linux_arm: { build("linux", "armv5") }
|
||||
)
|
Loading…
Reference in New Issue