func main() { if os.Getenv("DEBUG") == "true" { pkglog.DefaultLogger.SetDebug(true) cookoolog.Level = cookoolog.LogDebug log.Printf("Running in debug mode") } app := cli.NewApp() app.Commands = []cli.Command{ { Name: "server", Aliases: []string{"srv"}, Usage: "Run the git server", Action: func(c *cli.Context) { cnf := new(sshd.Config) if err := conf.EnvConfig(serverConfAppName, cnf); err != nil { pkglog.Err("getting config for %s [%s]", serverConfAppName, err) os.Exit(1) } circ := sshd.NewCircuit() s3Client, err := storage.GetClient(cnf.HealthSrvTestStorageRegion) if err != nil { log.Printf("Error getting s3 client (%s)", err) os.Exit(1) } kubeClient, err := kcl.NewInCluster() if err != nil { log.Printf("Error getting kubernetes client [%s]", err) os.Exit(1) } log.Printf("Starting health check server on port %d", cnf.HealthSrvPort) healthSrvCh := make(chan error) go func() { if err := healthsrv.Start(cnf.HealthSrvPort, kubeClient.Namespaces(), s3Client, circ); err != nil { healthSrvCh <- err } }() log.Printf("Starting SSH server on %s:%d", cnf.SSHHostIP, cnf.SSHHostPort) sshCh := make(chan int) go func() { sshCh <- pkg.RunBuilder(cnf.SSHHostIP, cnf.SSHHostPort, circ) }() select { case err := <-healthSrvCh: log.Printf("Error running health server (%s)", err) os.Exit(1) case i := <-sshCh: log.Printf("Unexpected SSH server stop with code %d", i) os.Exit(i) } }, }, { Name: "git-receive", Aliases: []string{"gr"}, Usage: "Run the git-receive hook", Action: func(c *cli.Context) { cnf := new(gitreceive.Config) if err := conf.EnvConfig(gitReceiveConfAppName, cnf); err != nil { log.Printf("Error getting config for %s [%s]", gitReceiveConfAppName, err) os.Exit(1) } cnf.CheckDurations() if err := gitreceive.Run(cnf); err != nil { log.Printf("Error running git receive hook [%s]", err) os.Exit(1) } }, }, } app.Run(os.Args) }
func main() { if os.Getenv("DEBUG") == "true" { pkglog.DefaultLogger.SetDebug(true) log.Printf("Running in debug mode") } app := cli.NewApp() app.Commands = []cli.Command{ { Name: "server", Aliases: []string{"srv"}, Usage: "Run the git server", Action: func(c *cli.Context) { cnf := new(sshd.Config) if err := conf.EnvConfig(serverConfAppName, cnf); err != nil { pkglog.Err("getting config for %s [%s]", serverConfAppName, err) os.Exit(1) } fs := sys.RealFS() env := sys.RealEnv() pushLock := sshd.NewInMemoryRepositoryLock() circ := sshd.NewCircuit() storageParams, err := conf.GetStorageParams(env) if err != nil { log.Printf("Error getting storage parameters (%s)", err) os.Exit(1) } var storageDriver storagedriver.StorageDriver if cnf.StorageType == "minio" { storageDriver, err = factory.Create("s3", storageParams) } else { storageDriver, err = factory.Create(cnf.StorageType, storageParams) } if err != nil { log.Printf("Error creating storage driver (%s)", err) os.Exit(1) } kubeClient, err := kcl.NewInCluster() if err != nil { log.Printf("Error getting kubernetes client [%s]", err) os.Exit(1) } log.Printf("Starting health check server on port %d", cnf.HealthSrvPort) healthSrvCh := make(chan error) go func() { if err := healthsrv.Start(cnf.HealthSrvPort, kubeClient.Namespaces(), storageDriver, circ); err != nil { healthSrvCh <- err } }() log.Printf("Starting deleted app cleaner") cleanerErrCh := make(chan error) go func() { if err := cleaner.Run(gitHomeDir, kubeClient.Namespaces(), fs, cnf.CleanerPollSleepDuration()); err != nil { cleanerErrCh <- err } }() log.Printf("Starting SSH server on %s:%d", cnf.SSHHostIP, cnf.SSHHostPort) sshCh := make(chan int) go func() { sshCh <- pkg.RunBuilder(cnf.SSHHostIP, cnf.SSHHostPort, gitHomeDir, circ, pushLock) }() select { case err := <-healthSrvCh: log.Printf("Error running health server (%s)", err) os.Exit(1) case i := <-sshCh: log.Printf("Unexpected SSH server stop with code %d", i) os.Exit(i) case err := <-cleanerErrCh: log.Printf("Error running the deleted app cleaner (%s)", err) os.Exit(1) } }, }, { Name: "git-receive", Aliases: []string{"gr"}, Usage: "Run the git-receive hook", Action: func(c *cli.Context) { cnf := new(gitreceive.Config) if err := conf.EnvConfig(gitReceiveConfAppName, cnf); err != nil { log.Printf("Error getting config for %s [%s]", gitReceiveConfAppName, err) os.Exit(1) } cnf.CheckDurations() fs := sys.RealFS() env := sys.RealEnv() storageParams, err := conf.GetStorageParams(env) if err != nil { log.Printf("Error getting storage parameters (%s)", err) os.Exit(1) } var storageDriver storagedriver.StorageDriver if cnf.StorageType == "minio" { storageDriver, err = factory.Create("s3", storageParams) } else { storageDriver, err = factory.Create(cnf.StorageType, storageParams) } if err != nil { log.Printf("Error creating storage driver (%s)", err) os.Exit(1) } if err := gitreceive.Run(cnf, fs, env, storageDriver); err != nil { log.Printf("Error running git receive hook [%s]", err) os.Exit(1) } }, }, } app.Run(os.Args) }