diff --git a/.woodpecker/test.yaml b/.woodpecker/test.yaml index faa3f3e89..64a2c3464 100644 --- a/.woodpecker/test.yaml +++ b/.woodpecker/test.yaml @@ -40,6 +40,7 @@ steps: - go run go.woodpecker-ci.org/woodpecker/v2/cmd/cli lint environment: WOODPECKER_DISABLE_UPDATE_CHECK: true + WOODPECKER_LINT_STRICT: true WOODPECKER_PLUGINS_PRIVILEGED: 'docker.io/woodpeckerci/plugin-docker-buildx:5.0.0' when: - event: pull_request diff --git a/cli/exec/exec.go b/cli/exec/exec.go index 15ac5e4e8..0b1462d6c 100644 --- a/cli/exec/exec.go +++ b/cli/exec/exec.go @@ -220,7 +220,7 @@ func execWithAxis(ctx context.Context, c *cli.Command, file, repoPath string, ax Workflow: conf, }}) if err != nil { - str, err := lint.FormatLintError(file, err) + str, err := lint.FormatLintError(file, err, false) fmt.Print(str) if err != nil { return err diff --git a/cli/lint/lint.go b/cli/lint/lint.go index 56b17bae9..d28a86033 100644 --- a/cli/lint/lint.go +++ b/cli/lint/lint.go @@ -48,6 +48,11 @@ var Command = &cli.Command{ Usage: "Plugins which are trusted to handle the netrc info in clone steps", Value: constant.TrustedClonePlugins, }, + &cli.BoolFlag{ + Sources: cli.EnvVars("WOODPECKER_LINT_STRICT"), + Name: "strict", + Usage: "treat warnings as errors", + }, }, } @@ -119,7 +124,7 @@ func lintFile(_ context.Context, c *cli.Command, file string) error { linter.WithTrustedClonePlugins(c.StringSlice("plugins-trusted-clone")), ).Lint([]*linter.WorkflowConfig{config}) if err != nil { - str, err := FormatLintError(config.File, err) + str, err := FormatLintError(config.File, err, c.Bool("strict")) if str != "" { fmt.Print(str) diff --git a/cli/lint/utils.go b/cli/lint/utils.go index 5a062ae3e..c6b5a95ba 100644 --- a/cli/lint/utils.go +++ b/cli/lint/utils.go @@ -10,7 +10,7 @@ import ( pipeline_errors "go.woodpecker-ci.org/woodpecker/v2/pipeline/errors" ) -func FormatLintError(file string, err error) (string, error) { +func FormatLintError(file string, err error, strict bool) (string, error) { if err == nil { return "", nil } @@ -24,7 +24,7 @@ func FormatLintError(file string, err error) (string, error) { for _, err := range linterErrors { line := " " - if err.IsWarning { + if !strict && err.IsWarning { line = fmt.Sprintf("%s ⚠️ ", line) amountWarnings++ } else {