mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-10-22 05:38:45 +00:00
Enable gocritic
and don't ignore globally (#3159)
Use `nolint` directives instead. From #2960
This commit is contained in:
@@ -50,8 +50,6 @@ import (
|
||||
)
|
||||
|
||||
func run(c *cli.Context) error {
|
||||
logger.SetupGlobalLogger(c, true)
|
||||
|
||||
agentConfigPath := c.String("agent-config")
|
||||
hostname := c.String("hostname")
|
||||
if len(hostname) == 0 {
|
||||
@@ -271,6 +269,10 @@ func getBackendEngine(backendCtx context.Context, backendName string, addons []s
|
||||
}
|
||||
|
||||
func runWithRetry(context *cli.Context) error {
|
||||
if err := logger.SetupGlobalLogger(context, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
initHealth()
|
||||
|
||||
retryCount := context.Int("connect-retry-count")
|
||||
|
@@ -15,10 +15,10 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
_ "github.com/joho/godotenv/autoload"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/urfave/cli/v2"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v2/pipeline/backend/docker"
|
||||
@@ -45,7 +45,6 @@ func main() {
|
||||
app.Flags = utils.MergeSlices(flags, logger.GlobalLoggerFlags, docker.Flags, kubernetes.Flags, local.Flags)
|
||||
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
log.Fatal().Err(err).Msg("error running agent") //nolint:forbidigo
|
||||
}
|
||||
}
|
||||
|
@@ -24,6 +24,6 @@ import (
|
||||
func main() {
|
||||
app := newApp()
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
log.Fatal().Err(err).Msg("error running cli")
|
||||
log.Fatal().Err(err).Msg("error running cli") //nolint:forbidigo
|
||||
}
|
||||
}
|
||||
|
@@ -15,11 +15,12 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
_ "github.com/joho/godotenv/autoload"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/urfave/cli/v2"
|
||||
|
||||
_ "go.woodpecker-ci.org/woodpecker/v2/cmd/server/docs"
|
||||
|
||||
"go.woodpecker-ci.org/woodpecker/v2/version"
|
||||
@@ -43,7 +44,6 @@ func main() {
|
||||
setupSwaggerStaticConfig()
|
||||
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
_, _ = fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
log.Fatal().Err(err).Msgf("error running server") //nolint:forbidigo
|
||||
}
|
||||
}
|
||||
|
@@ -17,6 +17,7 @@ package main
|
||||
import (
|
||||
"crypto/tls"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/httputil"
|
||||
@@ -55,7 +56,9 @@ import (
|
||||
)
|
||||
|
||||
func run(c *cli.Context) error {
|
||||
logger.SetupGlobalLogger(c, true)
|
||||
if err := logger.SetupGlobalLogger(c, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// set gin mode based on log level
|
||||
if zerolog.GlobalLevel() > zerolog.DebugLevel {
|
||||
@@ -63,17 +66,15 @@ func run(c *cli.Context) error {
|
||||
}
|
||||
|
||||
if c.String("server-host") == "" {
|
||||
log.Fatal().Msg("WOODPECKER_HOST is not properly configured")
|
||||
return fmt.Errorf("WOODPECKER_HOST is not properly configured")
|
||||
}
|
||||
|
||||
if !strings.Contains(c.String("server-host"), "://") {
|
||||
log.Fatal().Msg(
|
||||
"WOODPECKER_HOST must be <scheme>://<hostname> format",
|
||||
)
|
||||
return fmt.Errorf("WOODPECKER_HOST must be <scheme>://<hostname> format")
|
||||
}
|
||||
|
||||
if _, err := url.Parse(c.String("server-host")); err != nil {
|
||||
log.Fatal().Err(err).Msg("could not parse WOODPECKER_HOST")
|
||||
return fmt.Errorf("could not parse WOODPECKER_HOST: %w", err)
|
||||
}
|
||||
|
||||
if strings.Contains(c.String("server-host"), "://localhost") {
|
||||
@@ -84,10 +85,13 @@ func run(c *cli.Context) error {
|
||||
|
||||
_forge, err := setupForge(c)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("can't setup forge")
|
||||
return fmt.Errorf("can't setup forge: %w", err)
|
||||
}
|
||||
|
||||
_store := setupStore(c)
|
||||
_store, err := setupStore(c)
|
||||
if err != nil {
|
||||
return fmt.Errorf("can't setup store: %w", err)
|
||||
}
|
||||
defer func() {
|
||||
if err := _store.Close(); err != nil {
|
||||
log.Error().Err(err).Msg("could not close store")
|
||||
@@ -96,7 +100,7 @@ func run(c *cli.Context) error {
|
||||
|
||||
err = setupEvilGlobals(c, _store, _forge)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("can't setup globals")
|
||||
return fmt.Errorf("can't setup globals: %w", err)
|
||||
}
|
||||
|
||||
var g errgroup.Group
|
||||
@@ -111,7 +115,7 @@ func run(c *cli.Context) error {
|
||||
g.Go(func() error {
|
||||
lis, err := net.Listen("tcp", c.String("grpc-addr"))
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("failed to listen on grpc-addr")
|
||||
log.Fatal().Err(err).Msg("failed to listen on grpc-addr") //nolint:forbidigo
|
||||
}
|
||||
|
||||
jwtSecret := c.String("grpc-secret")
|
||||
@@ -144,7 +148,7 @@ func run(c *cli.Context) error {
|
||||
|
||||
err = grpcServer.Serve(lis)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("failed to serve grpc server")
|
||||
log.Fatal().Err(err).Msg("failed to serve grpc server") //nolint:forbidigo
|
||||
}
|
||||
return nil
|
||||
})
|
||||
@@ -155,7 +159,8 @@ func run(c *cli.Context) error {
|
||||
if proxyWebUI == "" {
|
||||
webEngine, err := web.New()
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("failed to create web engine")
|
||||
log.Error().Err(err).Msg("failed to create web engine")
|
||||
return err
|
||||
}
|
||||
webUIServe = webEngine.ServeHTTP
|
||||
} else {
|
||||
@@ -180,7 +185,8 @@ func run(c *cli.Context) error {
|
||||
middleware.Store(c, _store),
|
||||
)
|
||||
|
||||
if c.String("server-cert") != "" {
|
||||
switch {
|
||||
case c.String("server-cert") != "":
|
||||
// start the server with tls enabled
|
||||
g.Go(func() error {
|
||||
serve := &http.Server{
|
||||
@@ -195,7 +201,7 @@ func run(c *cli.Context) error {
|
||||
c.String("server-key"),
|
||||
)
|
||||
if err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||
log.Fatal().Err(err).Msg("failed to start server with tls")
|
||||
log.Fatal().Err(err).Msg("failed to start server with tls") //nolint:forbidigo
|
||||
}
|
||||
return err
|
||||
})
|
||||
@@ -214,11 +220,11 @@ func run(c *cli.Context) error {
|
||||
g.Go(func() error {
|
||||
err := http.ListenAndServe(server.Config.Server.Port, http.HandlerFunc(redirect))
|
||||
if err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||
log.Fatal().Err(err).Msg("unable to start server to redirect from http to https")
|
||||
log.Fatal().Err(err).Msg("unable to start server to redirect from http to https") //nolint:forbidigo
|
||||
}
|
||||
return err
|
||||
})
|
||||
} else if c.Bool("lets-encrypt") {
|
||||
case c.Bool("lets-encrypt"):
|
||||
// start the server with lets-encrypt
|
||||
certmagic.DefaultACME.Email = c.String("lets-encrypt-email")
|
||||
certmagic.DefaultACME.Agreed = true
|
||||
@@ -230,11 +236,11 @@ func run(c *cli.Context) error {
|
||||
|
||||
g.Go(func() error {
|
||||
if err := certmagic.HTTPS([]string{address.Host}, handler); err != nil {
|
||||
log.Fatal().Err(err).Msg("certmagic does not work")
|
||||
log.Fatal().Err(err).Msg("certmagic does not work") //nolint:forbidigo
|
||||
}
|
||||
return nil
|
||||
})
|
||||
} else {
|
||||
default:
|
||||
// start the server without tls
|
||||
g.Go(func() error {
|
||||
err := http.ListenAndServe(
|
||||
@@ -242,7 +248,7 @@ func run(c *cli.Context) error {
|
||||
handler,
|
||||
)
|
||||
if err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||
log.Fatal().Err(err).Msg("could not start server")
|
||||
log.Fatal().Err(err).Msg("could not start server") //nolint:forbidigo
|
||||
}
|
||||
return err
|
||||
})
|
||||
@@ -254,7 +260,7 @@ func run(c *cli.Context) error {
|
||||
metricsRouter.GET("/metrics", gin.WrapH(promhttp.Handler()))
|
||||
err := http.ListenAndServe(metricsServerAddr, metricsRouter)
|
||||
if err != nil && !errors.Is(err, http.ErrServerClosed) {
|
||||
log.Fatal().Err(err).Msg("could not start metrics server")
|
||||
log.Fatal().Err(err).Msg("could not start metrics server") //nolint:forbidigo
|
||||
}
|
||||
return err
|
||||
})
|
||||
@@ -298,7 +304,10 @@ func setupEvilGlobals(c *cli.Context, v store.Store, f forge.Forge) error {
|
||||
}
|
||||
server.Config.Services.Membership = setupMembershipService(c, f)
|
||||
|
||||
server.Config.Services.SignaturePrivateKey, server.Config.Services.SignaturePublicKey = setupSignatureKeys(v)
|
||||
server.Config.Services.SignaturePrivateKey, server.Config.Services.SignaturePublicKey, err = setupSignatureKeys(v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
server.Config.Services.ConfigService, err = setupConfigService(c)
|
||||
if err != nil {
|
||||
|
@@ -54,7 +54,7 @@ import (
|
||||
addonTypes "go.woodpecker-ci.org/woodpecker/v2/shared/addon/types"
|
||||
)
|
||||
|
||||
func setupStore(c *cli.Context) store.Store {
|
||||
func setupStore(c *cli.Context) (store.Store, error) {
|
||||
datasource := c.String("datasource")
|
||||
driver := c.String("driver")
|
||||
xorm := store.XORM{
|
||||
@@ -71,12 +71,12 @@ func setupStore(c *cli.Context) store.Store {
|
||||
}
|
||||
|
||||
if !datastore.SupportedDriver(driver) {
|
||||
log.Fatal().Msgf("database driver '%s' not supported", driver)
|
||||
return nil, fmt.Errorf("database driver '%s' not supported", driver)
|
||||
}
|
||||
|
||||
if driver == "sqlite3" {
|
||||
if err := checkSqliteFileExist(datasource); err != nil {
|
||||
log.Fatal().Err(err).Msg("check sqlite file")
|
||||
return nil, fmt.Errorf("check sqlite file: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,14 +88,14 @@ func setupStore(c *cli.Context) store.Store {
|
||||
log.Trace().Msgf("setup datastore: %#v", *opts)
|
||||
store, err := datastore.NewEngine(opts)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("could not open datastore")
|
||||
return nil, fmt.Errorf("could not open datastore: %w", err)
|
||||
}
|
||||
|
||||
if err := store.Migrate(c.Bool("migrations-allow-long")); err != nil {
|
||||
log.Fatal().Err(err).Msg("could not migrate datastore")
|
||||
return nil, fmt.Errorf("could not migrate datastore: %w", err)
|
||||
}
|
||||
|
||||
return store
|
||||
return store, nil
|
||||
}
|
||||
|
||||
func checkSqliteFileExist(path string) error {
|
||||
@@ -204,7 +204,7 @@ func setupGitea(c *cli.Context) (forge.Forge, error) {
|
||||
SkipVerify: c.Bool("gitea-skip-verify"),
|
||||
}
|
||||
if len(opts.URL) == 0 {
|
||||
log.Fatal().Msg("WOODPECKER_GITEA_URL must be set")
|
||||
return nil, fmt.Errorf("WOODPECKER_GITEA_URL must be set")
|
||||
}
|
||||
log.Trace().Msgf("Forge (gitea) opts: %#v", opts)
|
||||
return gitea.New(opts)
|
||||
@@ -294,34 +294,30 @@ func setupMetrics(g *errgroup.Group, _store store.Store) {
|
||||
}
|
||||
|
||||
// setupSignatureKeys generate or load key pair to sign webhooks requests (i.e. used for extensions)
|
||||
func setupSignatureKeys(_store store.Store) (crypto.PrivateKey, crypto.PublicKey) {
|
||||
func setupSignatureKeys(_store store.Store) (crypto.PrivateKey, crypto.PublicKey, error) {
|
||||
privKeyID := "signature-private-key"
|
||||
|
||||
privKey, err := _store.ServerConfigGet(privKeyID)
|
||||
if errors.Is(err, types.RecordNotExist) {
|
||||
_, privKey, err := ed25519.GenerateKey(rand.Reader)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msgf("Failed to generate private key")
|
||||
return nil, nil
|
||||
return nil, nil, fmt.Errorf("failed to generate private key: %w", err)
|
||||
}
|
||||
err = _store.ServerConfigSet(privKeyID, hex.EncodeToString(privKey))
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msgf("Failed to generate private key")
|
||||
return nil, nil
|
||||
return nil, nil, fmt.Errorf("failed to store private key: %w", err)
|
||||
}
|
||||
log.Debug().Msg("Created private key")
|
||||
return privKey, privKey.Public()
|
||||
return privKey, privKey.Public(), nil
|
||||
} else if err != nil {
|
||||
log.Fatal().Err(err).Msgf("Failed to load private key")
|
||||
return nil, nil
|
||||
return nil, nil, fmt.Errorf("failed to load private key: %w", err)
|
||||
}
|
||||
privKeyStr, err := hex.DecodeString(privKey)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msgf("Failed to decode private key")
|
||||
return nil, nil
|
||||
return nil, nil, fmt.Errorf("failed to decode private key: %w", err)
|
||||
}
|
||||
privateKey := ed25519.PrivateKey(privKeyStr)
|
||||
return privateKey, privateKey.Public()
|
||||
return privateKey, privateKey.Public(), nil
|
||||
}
|
||||
|
||||
func setupConfigService(c *cli.Context) (config.Extension, error) {
|
||||
|
Reference in New Issue
Block a user