mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-10 19:50:30 +00:00
* Add POC of GitHub Webhook Delivery Forwarder * multi-forwarder and ctrl-c existing and fix for non-woring http post * Rename source files * Extract signal handling into a dedicated source file * Faster ctrl-c handling * Enable automatic creation of repo hook on startup * Add support for forwarding org hook deliveries * Set hook secret on hook creation via envvar (HOOK_SECRET) * Fix org hook support * Fix HOOK_SECRET for consistency * Refactor to prepare for custom log position provider * Refactor to extract inmemory log position provider * Add configmap-based log position provider * Rename githubwebhookdeliveryforwarder to hookdeliveryforwarder * Refactor to rename LogPositionProvider to Checkpointer and extract ConfigMap checkpointer into a dedicated pkg * Refactor to extract logger initialization * Add hookdeliveryforwarder README and bump go-github to unreleased ver
96 lines
2.1 KiB
Go
96 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/actions-runner-controller/actions-runner-controller/pkg/hookdeliveryforwarder"
|
|
"github.com/actions-runner-controller/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
|
|
}
|
|
})
|
|
}
|