// NewCommand returns a new instance of an argocd-commit-server command
funcNewCommand()*cobra.Command{
var(
listenHoststring
listenPortint
metricsPortint
metricsHoststring
)
command:=&cobra.Command{
Use:"argocd-commit-server",
Short:"Run Argo CD Commit Server",
Long:"Argo CD Commit Server is an internal service which commits and pushes hydrated manifests to git. This command runs Commit Server in the foreground.",
returnfmt.Errorf("grpc health check status is '%v'",res.Status)
}
returnnil
}
returnnil
})
// Graceful shutdown code adapted from here: https://gist.github.com/embano1/e0bf49d24f1cdd07cffad93097c04f0a
sigCh:=make(chanos.Signal,1)
signal.Notify(sigCh,os.Interrupt,syscall.SIGTERM)
wg:=sync.WaitGroup{}
wg.Add(1)
gofunc(){
s:=<-sigCh
log.Printf("got signal %v, attempting graceful shutdown",s)
grpc.GracefulStop()
wg.Done()
}()
log.Println("starting grpc server")
err=grpc.Serve(listener)
errors.CheckError(err)
wg.Wait()
log.Println("clean shutdown")
returnnil
},
}
command.Flags().StringVar(&cmdutil.LogFormat,"logformat",env.StringFromEnv("ARGOCD_COMMIT_SERVER_LOGFORMAT","text"),"Set the logging format. One of: text|json")
command.Flags().StringVar(&cmdutil.LogLevel,"loglevel",env.StringFromEnv("ARGOCD_COMMIT_SERVER_LOGLEVEL","info"),"Set the logging level. One of: debug|info|warn|error")
command.Flags().StringVar(&listenHost,"address",env.StringFromEnv("ARGOCD_COMMIT_SERVER_LISTEN_ADDRESS",common.DefaultAddressCommitServer),"Listen on given address for incoming connections")
command.Flags().IntVar(&listenPort,"port",common.DefaultPortCommitServer,"Listen on given port for incoming connections")
command.Flags().StringVar(&metricsHost,"metrics-address",env.StringFromEnv("ARGOCD_COMMIT_SERVER_METRICS_LISTEN_ADDRESS",common.DefaultAddressCommitServerMetrics),"Listen on given address for metrics")
command.Flags().IntVar(&metricsPort,"metrics-port",common.DefaultPortCommitServerMetrics,"Start metrics server on given port")