Skip to content

step-security/action-golangci-lint

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Action: Run golangci-lint with reviewdog

This action runs golangci-lint with reviewdog on pull requests to improve code review experience.

annotation on diff tab example check tab example status check example

on: [pull_request]
jobs:
  golangci-lint:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code into the Go module directory
        uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: golangci-lint
        uses: step-security/action-golangci-lint@v2

Inputs

github_token

Required. Default is ${{ github.token }}.

golangci_lint_flags

Optional. golangci-lint flags. (golangci-lint run --out-format=line-number <golangci_lint_flags>)

Note that you can change golangci-lint behavior by configuration file too.

tool_name

Optional. Tool name to use for reviewdog reporter. Useful when running multiple actions with different config.

level

Optional. Report level for reviewdog [info,warning,error]. It's same as -level flag of reviewdog.

workdir

Optional. Working directory relative to the root directory.

reporter

Optional. Reporter of reviewdog command [github-pr-check,github-pr-review]. It's same as -reporter flag of reviewdog.

filter_mode

Optional. Filtering mode for the reviewdog command [added,diff_context,file,nofilter]. Default is added.

fail_level

Optional. If set to none, always use exit code 0 for reviewdog. Otherwise, exit code 1 for reviewdog if it finds at least 1 issue with severity greater than or equal to the given level. Possible values: [none, any, info, warning, error] Default is none.

fail_on_error

Deprecated, use fail_level instead. Optional. Exit code for reviewdog when errors are found [true, false] Default is false.

reviewdog_flags

Optional. Additional reviewdog flags

go_version

Optional. Install a specific version of Go. By default, the latest version of Go 1.x is installed.

go_version_file

Optional. Install a specific version of Go from a file. It accepts a path to a go.mod file or a file containing only Go version. If both the go_version and the go_version_file inputs are provided then the go_version input is used.

cache

Optional. [true, false] It enables cache. The action caches ~/.cache/golangci-lint, ~/.cache/go-build, ~/go/pkg/mod. Default is true.

reviewdog_version

Optional. Install a specific version of reviewdog. By default, the latest version of reviewdog is installed.

golangci_lint_version

Optional. Install a specific version of golangci-lint. By default, the latest version of golangci-lint is installed.

Example usage

Minimum Usage Example

name: reviewdog
on: [pull_request]
jobs:
  golangci-lint:
    name: runner / golangci-lint
    runs-on: ubuntu-latest
    steps:
      - name: Check out code into the Go module directory
        uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: golangci-lint
        uses: step-security/action-golangci-lint@v2

Advanced Usage Example

name: reviewdog
on: [pull_request]
jobs:
  # NOTE: golangci-lint doesn't report multiple errors on the same line from
  # different linters and just report one of the errors?

  golangci-lint:
    name: runner / golangci-lint
    runs-on: ubuntu-latest
    steps:
      - name: Check out code into the Go module directory
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: golangci-lint
        uses: step-security/action-golangci-lint@v2
        with:
          # optionally use a specific version of Go rather than the latest one
          go_version: "1.17"

          # Can pass --config flag to change golangci-lint behavior and target
          # directory.
          golangci_lint_flags: "--config=.github/.golangci.yml ./testdata"
          workdir: subdirectory/

  # Use golint via golangci-lint binary with "warning" level.
  golint:
    name: runner / golint
    runs-on: ubuntu-latest
    steps:
      - name: Check out code into the Go module directory
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: golint
        uses: step-security/action-golangci-lint@v2
        with:
          golangci_lint_flags: "--disable-all -E golint"
          tool_name: golint # Change reporter name.
          level: warning # GitHub Status Check won't become failure with this level.

  # You can add more and more supported linters with different config.
  errcheck:
    name: runner / errcheck
    runs-on: ubuntu-latest
    steps:
      - name: Check out code into the Go module directory
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: errcheck
        uses: step-security/action-golangci-lint@v2
        with:
          golangci_lint_flags: "--disable-all -E errcheck"
          tool_name: errcheck
          level: info

  # Disable cache of golangci-lint result, go build and go dependencies
  with_cache:
    name: runner / errcheck
    runs-on: ubuntu-latest
    steps:
      - name: Check out code into the Go module directory
        uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: golangci-lint
        uses: step-security/action-golangci-lint@v2
        with:
          cache: false

All-in-one golangci-lint configuration without config file

name: reviewdog
on: [pull_request]
jobs:
  golangci-lint:
    name: runner / golangci-lint
    runs-on: ubuntu-latest
    steps:
      - name: Check out code into the Go module directory
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: golangci-lint
        uses: step-security/action-golangci-lint@v2
        with:
          golangci_lint_flags: "--enable-all --exclude-use-default=false"

About

Run golangci-lint with reviewdog. Secure drop-in replacement for reviewdog/action-golangci-lint.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •