Enable gocritic and don't ignore globally (#3159)

Use `nolint` directives instead.

From #2960
This commit is contained in:
qwerty287
2024-01-10 15:34:44 +01:00
committed by GitHub
parent aef3f8f3ef
commit 12c40eb957
34 changed files with 170 additions and 161 deletions

View File

@@ -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")

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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 {

View File

@@ -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) {