96 lines
2.0 KiB
Go
96 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/actions/actions-runner-controller/pkg/hookdeliveryforwarder"
|
|
"github.com/actions/actions-runner-controller/pkg/hookdeliveryforwarder/configmap"
|
|
"github.com/go-logr/logr"
|
|
zaplib "go.uber.org/zap"
|
|
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
|
|
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
|
|
|
|
"sigs.k8s.io/controller-runtime/pkg/log/zap"
|
|
)
|
|
|
|
const (
|
|
logLevelDebug = "debug"
|
|
logLevelInfo = "info"
|
|
logLevelWarn = "warn"
|
|
logLevelError = "error"
|
|
)
|
|
|
|
var (
|
|
scheme = runtime.NewScheme()
|
|
)
|
|
|
|
func init() {
|
|
_ = clientgoscheme.AddToScheme(scheme)
|
|
}
|
|
|
|
func main() {
|
|
var (
|
|
logLevel string
|
|
|
|
checkpointerConfig configmap.Config
|
|
)
|
|
|
|
flag.StringVar(&logLevel, "log-level", logLevelDebug, `The verbosity of the logging. Valid values are "debug", "info", "warn", "error". Defaults to "debug".`)
|
|
|
|
checkpointerConfig.InitFlags(flag.CommandLine)
|
|
|
|
config := &hookdeliveryforwarder.Config{}
|
|
|
|
config.InitFlags((flag.CommandLine))
|
|
|
|
flag.Parse()
|
|
|
|
logger := newZapLogger(logLevel)
|
|
|
|
checkpointerConfig.Scheme = scheme
|
|
checkpointerConfig.Logger = logger
|
|
|
|
p, mgr, err := configmap.New(&checkpointerConfig)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "%v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// TODO: Set to something that is backed by a CRD so that
|
|
// restarting the forwarder doesn't result in missing deliveries.
|
|
config.Checkpointer = p
|
|
|
|
ctx := hookdeliveryforwarder.SetupSignalHandler()
|
|
|
|
go func() {
|
|
if err := mgr.Start(ctx); err != nil {
|
|
fmt.Fprintf(os.Stderr, "problem running manager: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}()
|
|
|
|
hookdeliveryforwarder.Run(ctx, config)
|
|
}
|
|
|
|
func newZapLogger(logLevel string) logr.Logger {
|
|
return zap.New(func(o *zap.Options) {
|
|
switch logLevel {
|
|
case logLevelDebug:
|
|
o.Development = true
|
|
case logLevelInfo:
|
|
lvl := zaplib.NewAtomicLevelAt(zaplib.InfoLevel)
|
|
o.Level = &lvl
|
|
case logLevelWarn:
|
|
lvl := zaplib.NewAtomicLevelAt(zaplib.WarnLevel)
|
|
o.Level = &lvl
|
|
case logLevelError:
|
|
lvl := zaplib.NewAtomicLevelAt(zaplib.ErrorLevel)
|
|
o.Level = &lvl
|
|
}
|
|
})
|
|
}
|