83 lines
1.3 KiB
Go
83 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.tek.govt.hu/dowerx/buildx-manager/buildx"
|
|
"git.tek.govt.hu/dowerx/buildx-manager/config"
|
|
"github.com/sanity-io/litter"
|
|
)
|
|
|
|
func main() {
|
|
cfg := config.GetConfig()
|
|
|
|
job, err := buildx.LoadJob(cfg.File)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
var buildCommands []buildx.Command
|
|
var tagCommands []buildx.Command
|
|
|
|
for _, repo := range job.Repositories {
|
|
buildCommands, tagCommands, err = buildx.RepoToCommands(&repo, job.Registries)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
if cfg.Verbose {
|
|
fmt.Println("config:")
|
|
litter.Dump(cfg)
|
|
|
|
fmt.Println("\njob loaded:")
|
|
litter.Dump(job)
|
|
|
|
fmt.Println("\nbuild commands:", len(buildCommands))
|
|
litter.Dump(buildCommands)
|
|
|
|
fmt.Println("\ntag commands:", len(tagCommands))
|
|
litter.Dump(tagCommands)
|
|
}
|
|
|
|
if cfg.Dryrun {
|
|
return
|
|
}
|
|
|
|
// build
|
|
if cfg.Parallel {
|
|
errors := make(chan error)
|
|
|
|
// start builds
|
|
for _, cmd := range buildCommands {
|
|
go func() {
|
|
errors <- cmd.Run()
|
|
}()
|
|
}
|
|
|
|
// wait for builds
|
|
for i := 0; i < len(buildCommands); i++ {
|
|
for err := range errors {
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
for _, cmd := range buildCommands {
|
|
err = cmd.Run()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
// tag
|
|
for _, cmd := range tagCommands {
|
|
err = cmd.Run()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|