46 lines
942 B
Go
46 lines
942 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"log/slog"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"git.ddupan.top/panxiao81/gitea-dynamic-runner/internal/runnerbootstrap"
|
|
)
|
|
|
|
func main() {
|
|
slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stderr, nil)))
|
|
if err := run(); err != nil {
|
|
slog.Error("runner stopped", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func run() error {
|
|
if len(os.Args) > 2 {
|
|
return errors.New("usage: gitea-dynamic-runner [controller|executor]")
|
|
}
|
|
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
|
|
defer stop()
|
|
command := "controller"
|
|
if len(os.Args) == 2 {
|
|
command = os.Args[1]
|
|
}
|
|
switch command {
|
|
case "controller":
|
|
return runController(ctx)
|
|
case "executor":
|
|
config, err := runnerbootstrap.ExecutorConfigFromEnvironment()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return runnerbootstrap.RunExecutor(ctx, config)
|
|
default:
|
|
return fmt.Errorf("unknown command %q", command)
|
|
}
|
|
}
|