mirror of
https://github.com/caddyserver/caddy.git
synced 2025-01-01 00:23:48 +03:00
dist: Delete old build automation program
We now use the release program to assist in deploying Caddy (it is much more integrated and automated): https://github.com/caddyserver/releaser This older automation code can still be found in this gist: https://gist.github.com/mholt/cb7285f4950cb93f23be0aa6050fb043
This commit is contained in:
parent
e38921f4a5
commit
90efff68e5
2 changed files with 0 additions and 176 deletions
161
dist/automate.go
vendored
161
dist/automate.go
vendored
|
@ -1,161 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"sync"
|
||||
|
||||
"github.com/mholt/archiver"
|
||||
)
|
||||
|
||||
var buildScript, repoDir, mainDir, distDir, buildDir, releaseDir string
|
||||
|
||||
func init() {
|
||||
repoDir = filepath.Join(os.Getenv("GOPATH"), "src", "github.com", "mholt", "caddy")
|
||||
mainDir = filepath.Join(repoDir, "caddy")
|
||||
buildScript = filepath.Join(mainDir, "build.bash")
|
||||
distDir = filepath.Join(repoDir, "dist")
|
||||
buildDir = filepath.Join(distDir, "builds")
|
||||
releaseDir = filepath.Join(distDir, "release")
|
||||
}
|
||||
|
||||
func main() {
|
||||
// First, clean up
|
||||
err := os.RemoveAll(buildDir)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
err = os.RemoveAll(releaseDir)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// Then set up
|
||||
err = os.MkdirAll(buildDir, 0755)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
err = os.MkdirAll(releaseDir, 0755)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// Perform builds and make archives in parallel; only as many
|
||||
// goroutines as we have processors.
|
||||
var wg sync.WaitGroup
|
||||
var throttle = make(chan struct{}, numProcs())
|
||||
for _, p := range platforms {
|
||||
wg.Add(1)
|
||||
throttle <- struct{}{}
|
||||
|
||||
if p.os == "" || p.arch == "" || p.archive == "" {
|
||||
log.Fatalf("Platform OS, architecture, and archive format is required: %+v", p)
|
||||
}
|
||||
|
||||
go func(p platform) {
|
||||
defer wg.Done()
|
||||
defer func() { <-throttle }()
|
||||
|
||||
fmt.Printf("== Building %s\n", p)
|
||||
|
||||
var baseFilename, binFilename string
|
||||
baseFilename = fmt.Sprintf("caddy_%s_%s", p.os, p.arch)
|
||||
if p.arch == "arm" {
|
||||
baseFilename += p.arm
|
||||
}
|
||||
binFilename = baseFilename + p.binExt
|
||||
|
||||
binPath := filepath.Join(buildDir, binFilename)
|
||||
archive := filepath.Join(releaseDir, fmt.Sprintf("%s.%s", baseFilename, p.archive))
|
||||
archiveContents := append(distContents, binPath)
|
||||
|
||||
err := build(p, binPath)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Printf("== Compressing %s\n", baseFilename)
|
||||
|
||||
if p.archive == "zip" {
|
||||
err := archiver.Zip.Make(archive, archiveContents)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
} else if p.archive == "tar.gz" {
|
||||
err := archiver.TarGz.Make(archive, archiveContents)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}(p)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func build(p platform, out string) error {
|
||||
cmd := exec.Command(buildScript, out)
|
||||
cmd.Dir = mainDir
|
||||
cmd.Env = os.Environ()
|
||||
cmd.Env = append(cmd.Env, "CGO_ENABLED=0")
|
||||
cmd.Env = append(cmd.Env, "GOOS="+p.os)
|
||||
cmd.Env = append(cmd.Env, "GOARCH="+p.arch)
|
||||
cmd.Env = append(cmd.Env, "GOARM="+p.arm)
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
}
|
||||
|
||||
type platform struct {
|
||||
os, arch, arm, binExt, archive string
|
||||
}
|
||||
|
||||
func (p platform) String() string {
|
||||
outStr := fmt.Sprintf("%s/%s", p.os, p.arch)
|
||||
if p.arch == "arm" {
|
||||
outStr += fmt.Sprintf(" (ARM v%s)", p.arm)
|
||||
}
|
||||
return outStr
|
||||
}
|
||||
|
||||
func numProcs() int {
|
||||
n := runtime.GOMAXPROCS(0)
|
||||
if n == runtime.NumCPU() && n > 1 {
|
||||
n--
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
// See: https://golang.org/doc/install/source#environment
|
||||
// Not all supported platforms are listed since some are
|
||||
// problematic and we only build the most common ones.
|
||||
// These are just the pre-made, readily-available static
|
||||
// builds, and we can try to add more upon request if there
|
||||
// is enough demand.
|
||||
var platforms = []platform{
|
||||
{os: "darwin", arch: "amd64", archive: "zip"},
|
||||
{os: "freebsd", arch: "386", archive: "tar.gz"},
|
||||
{os: "freebsd", arch: "amd64", archive: "tar.gz"},
|
||||
{os: "freebsd", arch: "arm", arm: "7", archive: "tar.gz"},
|
||||
{os: "linux", arch: "386", archive: "tar.gz"},
|
||||
{os: "linux", arch: "amd64", archive: "tar.gz"},
|
||||
{os: "linux", arch: "arm", arm: "7", archive: "tar.gz"},
|
||||
{os: "linux", arch: "arm64", archive: "tar.gz"},
|
||||
{os: "netbsd", arch: "386", archive: "tar.gz"},
|
||||
{os: "netbsd", arch: "amd64", archive: "tar.gz"},
|
||||
{os: "openbsd", arch: "386", archive: "tar.gz"},
|
||||
{os: "openbsd", arch: "amd64", archive: "tar.gz"},
|
||||
{os: "solaris", arch: "amd64", archive: "tar.gz"},
|
||||
{os: "windows", arch: "386", binExt: ".exe", archive: "zip"},
|
||||
{os: "windows", arch: "amd64", binExt: ".exe", archive: "zip"},
|
||||
}
|
||||
|
||||
var distContents = []string{
|
||||
filepath.Join(distDir, "init"),
|
||||
filepath.Join(distDir, "CHANGES.txt"),
|
||||
filepath.Join(distDir, "LICENSES.txt"),
|
||||
filepath.Join(distDir, "README.txt"),
|
||||
}
|
15
dist/automate_test.go
vendored
15
dist/automate_test.go
vendored
|
@ -1,15 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNumProcs(t *testing.T) {
|
||||
num := runtime.NumCPU()
|
||||
n := numProcs()
|
||||
if n > num || n < 1 {
|
||||
t.Errorf("Expected numProcs() to return max(NumCPU-1, 1) or at least some "+
|
||||
"reasonable value (depending on CI environment), but got n=%d (NumCPU=%d)", n, num)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue