mirror of
https://github.com/golangci/golangci-lint-action.git
synced 2026-11-09 22:53:43 +03:00
Compare commits
No files matched your search
+1
-1
@@ -6,7 +6,7 @@
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2020,
|
||||
"sourceType": "module"
|
||||
"sourceType": "commonjs"
|
||||
},
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
|
||||
@@ -10,8 +10,6 @@ body:
|
||||
required: true
|
||||
- label: Yes, I've searched similar issues on GitHub and didn't find any.
|
||||
required: true
|
||||
- label: Yes, I've included all information below (version, config, etc).
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: problem
|
||||
@@ -25,6 +23,7 @@ body:
|
||||
id: golangci-lint-version
|
||||
attributes:
|
||||
label: Version of golangci-lint
|
||||
placeholder: golangci-lint has version 2.x.x built with go1.x.x from xxxx on xxxx-xx-xx
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -32,6 +31,7 @@ body:
|
||||
id: github-action-version
|
||||
attributes:
|
||||
label: Version of the GitHub Action
|
||||
placeholder: v9.2.0
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -69,6 +69,7 @@ body:
|
||||
id: go-env
|
||||
attributes:
|
||||
label: Go version
|
||||
placeholder: go1.25.8
|
||||
validations:
|
||||
required: true
|
||||
|
||||
@@ -86,3 +87,19 @@ body:
|
||||
</details>
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: checkboxes
|
||||
id: validation
|
||||
attributes:
|
||||
label: Validation
|
||||
options:
|
||||
- label: Yes, I've included all the information above (example, version, config, etc.).
|
||||
required: true
|
||||
|
||||
- type: checkboxes
|
||||
id: supporter
|
||||
attributes:
|
||||
label: Supporter
|
||||
description: If you find golangci-lint valuable, consider [sponsoring the project](https://donate.golangci.org) to help sustain its development. 💛
|
||||
options:
|
||||
- label: I am a [sponsor/backer](https://donate.golangci.org) of this project.
|
||||
@@ -42,3 +42,11 @@ body:
|
||||
placeholder: "Add any other context or screenshots about the feature request here."
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: checkboxes
|
||||
id: supporter
|
||||
attributes:
|
||||
label: Supporter
|
||||
description: If you find golangci-lint valuable, consider [sponsoring the project](https://donate.golangci.org) to help sustain its development. 💛
|
||||
options:
|
||||
- label: I am a [sponsor/backer](https://donate.golangci.org) of this project.
|
||||
+10
-2
@@ -3,7 +3,13 @@ updates:
|
||||
- package-ecosystem: github-actions
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
interval: monthly
|
||||
cooldown:
|
||||
default-days: 7
|
||||
groups:
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*" # Group all updates into a single larger pull request.
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
groups:
|
||||
@@ -12,4 +18,6 @@ updates:
|
||||
dependencies:
|
||||
dependency-type: production
|
||||
schedule:
|
||||
interval: weekly
|
||||
interval: monthly
|
||||
cooldown:
|
||||
default-days: 7
|
||||
@@ -5,7 +5,6 @@ on:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches:
|
||||
- main
|
||||
schedule:
|
||||
@@ -13,17 +12,20 @@ on:
|
||||
|
||||
jobs:
|
||||
codeQL:
|
||||
# CodeQL runs on ubuntu-latest, windows-latest, and macos-latest
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
# Must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head of the pull request.
|
||||
# Only include this option if you are running this workflow on pull requests.
|
||||
fetch-depth: 2
|
||||
persist-credentials: false
|
||||
|
||||
# If this run was triggered by a pull request event then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
@@ -33,14 +35,14 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v4
|
||||
uses: github/codeql-action/init@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
|
||||
# Override language selection by uncommenting this and choosing your languages
|
||||
with:
|
||||
language: 'javascript'
|
||||
languages: 'javascript-typescript'
|
||||
|
||||
- run: |
|
||||
npm install
|
||||
npm run all
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v4
|
||||
uses: github/codeql-action/analyze@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
|
||||
+54
-49
@@ -1,5 +1,6 @@
|
||||
name: "build-and-test"
|
||||
on: # rebuild any PRs and main branch changes
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
@@ -7,22 +8,28 @@ on: # rebuild any PRs and main branch changes
|
||||
branches:
|
||||
- main
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
build: # make sure build/ci work properly
|
||||
# make sure build/ci work properly
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/setup-node@v6
|
||||
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
||||
with:
|
||||
node-version: 24.x
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- run: |
|
||||
npm install
|
||||
npm run all
|
||||
|
||||
# Fail the build if there is dirty change
|
||||
# Fail the build if there are changes.
|
||||
- run: git diff --exit-code -- dist
|
||||
|
||||
test: # make sure the action works on a clean machine without building
|
||||
# make sure the action works on a clean machine without building
|
||||
test:
|
||||
needs: [ build ]
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -34,27 +41,27 @@ jobs:
|
||||
version:
|
||||
- ""
|
||||
- "latest"
|
||||
- "v2.5"
|
||||
- "v2.5.0"
|
||||
- "v2.13"
|
||||
- "v2.13.2"
|
||||
runs-on: ${{ matrix.os }}
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-node@v6
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
||||
with:
|
||||
node-version: 24.x
|
||||
- uses: actions/setup-go@v6
|
||||
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
||||
with:
|
||||
go-version: oldstable
|
||||
- uses: ./
|
||||
with:
|
||||
version: ${{ matrix.version }}
|
||||
args: --timeout=5m --issues-exit-code=0 ./sample/...
|
||||
args: --timeout=5m --issues-exit-code=0 ./fixtures/simple/...
|
||||
only-new-issues: true
|
||||
|
||||
test-go-install: # make sure the action works on a clean machine without building (go-install mode)
|
||||
# make sure the action works on a clean machine without building (go-install mode)
|
||||
test-go-install:
|
||||
needs: [ build ]
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -66,24 +73,23 @@ jobs:
|
||||
version:
|
||||
- ""
|
||||
- "latest"
|
||||
- "v2.5.0"
|
||||
- "655e8ede5178280b2a640e185bc4a343aed0f54e"
|
||||
- "v2.13.2"
|
||||
- "dfd21f102e8031c6d4d1c8ec1d3e75c29197855c"
|
||||
runs-on: ${{ matrix.os }}
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-node@v6
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
||||
with:
|
||||
node-version: 24.x
|
||||
- uses: actions/setup-go@v6
|
||||
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
||||
with:
|
||||
go-version: oldstable
|
||||
- uses: ./
|
||||
with:
|
||||
version: ${{ matrix.version }}
|
||||
args: --timeout=5m --issues-exit-code=0 ./sample/...
|
||||
args: --timeout=5m --issues-exit-code=0 ./fixtures/simple/...
|
||||
only-new-issues: true
|
||||
install-mode: goinstall
|
||||
|
||||
@@ -97,17 +103,17 @@ jobs:
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
wd:
|
||||
- sample-go-mod
|
||||
- sample-go-tool
|
||||
- fixtures/go-mod
|
||||
- fixtures/go-tool
|
||||
runs-on: ${{ matrix.os }}
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-node@v6
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
||||
with:
|
||||
node-version: 24.x
|
||||
- uses: actions/setup-go@v6
|
||||
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
||||
with:
|
||||
go-version: oldstable
|
||||
- uses: ./
|
||||
@@ -115,7 +121,8 @@ jobs:
|
||||
working-directory: ${{ matrix.wd }}
|
||||
args: --timeout=5m --issues-exit-code=0 ./...
|
||||
|
||||
test-plugins: # make sure the action works on a clean machine with plugins
|
||||
# make sure the action works on a clean machine with plugins
|
||||
test-plugins:
|
||||
needs: [ build ]
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -127,24 +134,23 @@ jobs:
|
||||
version:
|
||||
- ""
|
||||
- "latest"
|
||||
- "v2.5"
|
||||
- "v2.5.0"
|
||||
- "v2.13"
|
||||
- "v2.13.2"
|
||||
runs-on: ${{ matrix.os }}
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-node@v6
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
||||
with:
|
||||
node-version: 24.x
|
||||
- uses: actions/setup-go@v6
|
||||
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
||||
with:
|
||||
go-version: oldstable
|
||||
- uses: ./
|
||||
with:
|
||||
version: ${{ matrix.version }}
|
||||
working-directory: sample-plugins
|
||||
working-directory: fixtures/plugins
|
||||
args: --timeout=5m --issues-exit-code=0 ./...
|
||||
|
||||
test-monorepo:
|
||||
@@ -157,19 +163,18 @@ jobs:
|
||||
- macos-latest
|
||||
- windows-latest
|
||||
runs-on: ${{ matrix.os }}
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-node@v6
|
||||
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
||||
with:
|
||||
node-version: 24.x
|
||||
- uses: actions/setup-go@v6
|
||||
- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
|
||||
with:
|
||||
go-version: oldstable
|
||||
- uses: ./
|
||||
with:
|
||||
working-directory: sample-monorepo
|
||||
working-directory: fixtures/monorepo
|
||||
experimental: "automatic-module-directories"
|
||||
args: --timeout=5m --issues-exit-code=0 ./...
|
||||
@@ -49,14 +49,14 @@ jobs:
|
||||
name: lint
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: stable
|
||||
- name: golangci-lint
|
||||
uses: golangci/golangci-lint-action@v9
|
||||
with:
|
||||
version: v2.6
|
||||
version: v2.13
|
||||
```
|
||||
|
||||
</details>
|
||||
@@ -87,14 +87,14 @@ jobs:
|
||||
name: lint
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: ${{ matrix.go }}
|
||||
- name: golangci-lint
|
||||
uses: golangci/golangci-lint-action@v9
|
||||
with:
|
||||
version: v2.6
|
||||
version: v2.13
|
||||
```
|
||||
|
||||
You will also likely need to add the following `.gitattributes` file to ensure that line endings for Windows builds are properly formatted:
|
||||
@@ -120,7 +120,7 @@ on:
|
||||
|
||||
env:
|
||||
GO_VERSION: stable
|
||||
GOLANGCI_LINT_VERSION: v2.6
|
||||
GOLANGCI_LINT_VERSION: v2.13
|
||||
|
||||
jobs:
|
||||
detect-modules:
|
||||
@@ -128,7 +128,7 @@ jobs:
|
||||
outputs:
|
||||
modules: ${{ steps.set-modules.outputs.modules }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
@@ -142,7 +142,7 @@ jobs:
|
||||
matrix:
|
||||
modules: ${{ fromJSON(needs.detect-modules.outputs.modules) }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
@@ -179,7 +179,7 @@ jobs:
|
||||
with:
|
||||
os: ${{ matrix.os }}
|
||||
go-version: ${{ matrix.go-version }}
|
||||
golangci-lint-version: v2.6
|
||||
golangci-lint-version: v2.13
|
||||
```
|
||||
|
||||
```yaml
|
||||
@@ -201,7 +201,7 @@ on:
|
||||
golangci-lint-version:
|
||||
description: 'Golangci-lint version'
|
||||
type: string
|
||||
default: 'v2.6'
|
||||
default: 'v2.13'
|
||||
|
||||
jobs:
|
||||
detect-modules:
|
||||
@@ -209,7 +209,7 @@ jobs:
|
||||
outputs:
|
||||
modules: ${{ steps.set-modules.outputs.modules }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: ${{ inputs.go-version }}
|
||||
@@ -224,7 +224,7 @@ jobs:
|
||||
matrix:
|
||||
modules: ${{ fromJSON(needs.detect-modules.outputs.modules) }}
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/setup-go@v6
|
||||
with:
|
||||
go-version: ${{ inputs.go-version }}
|
||||
@@ -247,7 +247,6 @@ You will also likely need to add the following `.gitattributes` file to ensure t
|
||||
|
||||
* `v9.0.0` requires Nodejs runtime [`node24`](https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/)
|
||||
* `v8.0.0` works with `golangci-lint` version >= `v2.1.0`
|
||||
* `v8.0.0` works with `golangci-lint` version >= `v2.1.0`
|
||||
* `v7.0.0` supports golangci-lint v2 only.
|
||||
* `v6.0.0+` removes `annotations` option, removes the default output format (`github-actions`).
|
||||
* `v5.0.0+` removes `skip-pkg-cache` and `skip-build-cache` because the cache related to Go itself is already handled by `actions/setup-go`.
|
||||
@@ -261,21 +260,22 @@ You will also likely need to add the following `.gitattributes` file to ensure t
|
||||
|
||||
### Overview
|
||||
|
||||
| Option | Description |
|
||||
|---------------------------------------------------------------|----------------------------------------------------|
|
||||
| [`version`](#version) | The version of golangci-lint to use. |
|
||||
| [`install-mode`](#install-mode) | The mode to install golangci-lint. |
|
||||
| [`install-only`](#install-only) | Only install golangci-lint. |
|
||||
| [`verify`](#verify) | Validates golangci-lint configuration file. |
|
||||
| [`github-token`](#github-token) | Used by the `only-new-issues` option. |
|
||||
| [`only-new-issues`](#only-new-issues) | Show only new issues. |
|
||||
| [`working-directory`](#working-directory) | The golangci-lint working directory. |
|
||||
| [`args`](#args) | Golangci-lint command line arguments. |
|
||||
| [`skip-cache`](#skip-cache) | Disable cache support. |
|
||||
| [`skip-save-cache`](#skip-save-cache) | Don't save cache. |
|
||||
| [`cache-invalidation-interval`](#cache-invalidation-interval) | Number of days before cache invalidation. |
|
||||
| [`problem-matchers`](#problem-matchers) | Forces the usage of the embedded problem matchers. |
|
||||
| [Experimental](#experimental) | Experimental options |
|
||||
| Option | Description |
|
||||
|---------------------------------------------------------------|-------------------------------------------------------|
|
||||
| [`version`](#version) | The version of golangci-lint to use. |
|
||||
| [`version-file`](#version-file) | Gets the version of golangci-lint to use from a file. |
|
||||
| [`install-mode`](#install-mode) | The mode to install golangci-lint. |
|
||||
| [`install-only`](#install-only) | Only install golangci-lint. |
|
||||
| [`verify`](#verify) | Validates golangci-lint configuration file. |
|
||||
| [`github-token`](#github-token) | Used by the `only-new-issues` option. |
|
||||
| [`only-new-issues`](#only-new-issues) | Show only new issues. |
|
||||
| [`working-directory`](#working-directory) | The golangci-lint working directory. |
|
||||
| [`args`](#args) | Golangci-lint command line arguments. |
|
||||
| [`skip-cache`](#skip-cache) | Disable cache support. |
|
||||
| [`skip-save-cache`](#skip-save-cache) | Don't save cache. |
|
||||
| [`cache-invalidation-interval`](#cache-invalidation-interval) | Number of days before cache invalidation. |
|
||||
| [`problem-matchers`](#problem-matchers) | Forces the usage of the embedded problem matchers. |
|
||||
| [Experimental](#experimental) | Experimental options |
|
||||
|
||||
### Installation
|
||||
|
||||
@@ -296,7 +296,29 @@ When `install-mode` is:
|
||||
```yml
|
||||
uses: golangci/golangci-lint-action@v9
|
||||
with:
|
||||
version: v2.6
|
||||
version: v2.13
|
||||
# ...
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
#### `version-file`
|
||||
|
||||
Gets the version of golangci-lint to use from a file.
|
||||
|
||||
The path must be relative to the root of the project, or the `working-directory` if defined.
|
||||
|
||||
This parameter supports `.golangci-lint-version`, and `.tool-versions` files.
|
||||
|
||||
Only works with `install-mode: binary` (the default).
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```yml
|
||||
uses: golangci/golangci-lint-action@v9
|
||||
with:
|
||||
version-file: .tool-versions
|
||||
# ...
|
||||
```
|
||||
|
||||
@@ -310,7 +332,7 @@ The mode to install golangci-lint: it can be `binary`, `goinstall`, or `none`.
|
||||
|
||||
The default value is `binary`.
|
||||
|
||||
`goinstall` is not recommended, more explanations [here](https://golangci-lint.run/docs/welcome/install/#install-from-sources).
|
||||
`goinstall` is not recommended, more explanations [here](https://golangci-lint.run/docs/welcome/install/local/#install-from-sources).
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
@@ -594,6 +616,23 @@ with:
|
||||
|
||||
</details>
|
||||
|
||||
#### `no-run-logs-group`
|
||||
|
||||
(optional)
|
||||
|
||||
This option disables the grouping of logs from golangci-lint run.
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```yaml
|
||||
uses: golangci/golangci-lint-action@v9
|
||||
with:
|
||||
experimental: "no-run-logs-group"
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Annotations
|
||||
|
||||
Currently, GitHub parses the action's output and creates [annotations](https://github.blog/2018-12-14-introducing-check-runs-and-annotations/).
|
||||
@@ -624,6 +663,22 @@ build and run the custom version of golangci-lint.
|
||||
|
||||
For more information, see [module plugin system](https://golangci-lint.run/docs/plugins/module-plugins/).
|
||||
|
||||
## Tips
|
||||
|
||||
### Using Renovate to update the golangci-lint version
|
||||
|
||||
[Renovate](https://docs.renovatebot.com/) can update both the action and the
|
||||
`golangci-lint` version it uses via its [github-actions manager](https://docs.renovatebot.com/modules/manager/github-actions/#commonly-used-community-actions)
|
||||
which is included in presets like `config:recommended`.
|
||||
|
||||
It can also be enabled explicitly in `renovate.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"enabledManagers": ["github-actions"]
|
||||
}
|
||||
```
|
||||
|
||||
## Performance
|
||||
|
||||
The action was implemented with performance in mind:
|
||||
|
||||
@@ -11,6 +11,13 @@ inputs:
|
||||
- `goinstall`: the value can be v2.3.4, `latest`, or the hash of a commit.
|
||||
- `none`: the value is ignored.
|
||||
required: false
|
||||
version-file:
|
||||
description: |
|
||||
Gets the version of golangci-lint to use from a file.
|
||||
The path must be relative to the root of the project, or the `working-directory` if defined.
|
||||
This parameter supports `.golangci-lint-version`, and `.tool-versions` files.
|
||||
Only works with `install-mode: binary` (the default).
|
||||
required: false
|
||||
install-mode:
|
||||
description: "The mode to install golangci-lint. It can be 'binary', 'goinstall', or 'none'."
|
||||
default: "binary"
|
||||
@@ -69,6 +76,7 @@ inputs:
|
||||
description: |
|
||||
Experimental options for the action.
|
||||
List of comma separated options.
|
||||
Available options: `automatic-module-directories`, `no-run-logs-group`
|
||||
default: ""
|
||||
required: false
|
||||
runs:
|
||||
|
||||
+76225
-66414
File diff suppressed because it is too large.
Load diff
+76225
-66414
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,55 @@
|
||||
import { defineConfig } from "eslint/config";
|
||||
import { fixupConfigRules, fixupPluginRules } from "@eslint/compat";
|
||||
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
||||
import simpleImportSort from "eslint-plugin-simple-import-sort";
|
||||
import globals from "globals";
|
||||
import tsParser from "@typescript-eslint/parser";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import js from "@eslint/js";
|
||||
import { FlatCompat } from "@eslint/eslintrc";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: __dirname,
|
||||
recommendedConfig: js.configs.recommended,
|
||||
allConfig: js.configs.all
|
||||
});
|
||||
|
||||
export default defineConfig([{
|
||||
extends: fixupConfigRules(compat.extends(
|
||||
"eslint:recommended",
|
||||
"plugin:@typescript-eslint/eslint-recommended",
|
||||
"plugin:@typescript-eslint/recommended",
|
||||
"plugin:import/errors",
|
||||
"plugin:import/warnings",
|
||||
"plugin:import/typescript",
|
||||
"plugin:prettier/recommended",
|
||||
)),
|
||||
|
||||
plugins: {
|
||||
"@typescript-eslint": fixupPluginRules(typescriptEslint),
|
||||
"simple-import-sort": simpleImportSort,
|
||||
},
|
||||
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.node,
|
||||
...globals.jest,
|
||||
},
|
||||
|
||||
parser: tsParser,
|
||||
ecmaVersion: 2020,
|
||||
sourceType: "commonjs",
|
||||
},
|
||||
|
||||
rules: {
|
||||
"import/first": "error",
|
||||
"import/newline-after-import": "error",
|
||||
"import/no-duplicates": "error",
|
||||
"simple-import-sort/imports": "error",
|
||||
"simple-import-sort/exports": "error",
|
||||
"sort-imports": "off",
|
||||
},
|
||||
}]);
|
||||
File renamed without changes.
@@ -1,4 +1,4 @@
|
||||
module sample
|
||||
module github.com/golangci/sample
|
||||
|
||||
go 1.24.0
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,4 +1,4 @@
|
||||
module sample
|
||||
module github.com/golangci/sample
|
||||
|
||||
go 1.24.0
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,4 +1,4 @@
|
||||
version: v2.6.1
|
||||
version: v2.10.1
|
||||
name: custom-golangci-lint
|
||||
#destination: ./zzz/path/
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Generated
+1020
-1033
File diff suppressed because it is too large.
Load diff
+21
-14
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "golanci-lint-action",
|
||||
"version": "8.0.0",
|
||||
"version": "9.3.0",
|
||||
"private": true,
|
||||
"description": "golangci-lint github action",
|
||||
"main": "dist/main.js",
|
||||
@@ -27,31 +27,38 @@
|
||||
"node": ">=24.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/cache": "^4.1.0",
|
||||
"@actions/core": "^1.11.1",
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/github": "^6.0.1",
|
||||
"@actions/cache": "^5.0.3",
|
||||
"@actions/core": "^2.0.2",
|
||||
"@actions/exec": "^2.0.0",
|
||||
"@actions/github": "^7.0.0",
|
||||
"@actions/http-client": "^3.0.0",
|
||||
"@actions/tool-cache": "^3.0.0",
|
||||
"@octokit/plugin-retry": "^6.1.0",
|
||||
"@actions/tool-cache": "^2.0.2",
|
||||
"@types/node": "^24.10.1",
|
||||
"@types/node": "^25.0.10",
|
||||
"@types/semver": "^7.7.1",
|
||||
"@types/tmp": "^0.2.6",
|
||||
"@types/which": "^3.0.4",
|
||||
"tmp": "^0.2.5",
|
||||
"which": "^6.0.0",
|
||||
"yaml": "^2.8.1"
|
||||
"tmp": "^0.2.7",
|
||||
"which": "^7.0.0",
|
||||
"yaml": "^2.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^8.46.4",
|
||||
"@eslint/compat": "^2.0.5",
|
||||
"@eslint/eslintrc": "^3.3.5",
|
||||
"@eslint/js": "^9.39.2",
|
||||
"@typescript-eslint/eslint-plugin": "^8.58.1",
|
||||
"@typescript-eslint/parser": "^8.32.1",
|
||||
"@vercel/ncc": "^0.38.4",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint": "^9.39.2",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-import": "^2.32.0",
|
||||
"eslint-plugin-prettier": "^5.5.4",
|
||||
"eslint-plugin-prettier": "^5.5.5",
|
||||
"eslint-plugin-simple-import-sort": "^12.1.1",
|
||||
"prettier": "^3.6.2",
|
||||
"globals": "^17.5.0",
|
||||
"prettier": "^3.8.2",
|
||||
"typescript": "^5.9.3"
|
||||
},
|
||||
"overrides": {
|
||||
"undici": "^7.16.0"
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -145,7 +145,7 @@ async function installBin(versionInfo: VersionInfo): Promise<string> {
|
||||
} else {
|
||||
// We want to always overwrite files if the local cache already has them
|
||||
const args = ["xz"]
|
||||
if (process.platform.toString() != "darwin") {
|
||||
if (!["darwin", "freebsd"].includes(process.platform.toString())) {
|
||||
args.push("--overwrite")
|
||||
}
|
||||
extractedDir = await tc.extractTar(archivePath, process.env.HOME, args)
|
||||
|
||||
+14
-2
@@ -205,19 +205,31 @@ async function runLint(binPath: string): Promise<void> {
|
||||
|
||||
const experimental = core.getInput(`experimental`).split(`,`)
|
||||
|
||||
const noGroup = experimental.includes(`no-run-logs-group`)
|
||||
|
||||
if (experimental.includes(`automatic-module-directories`)) {
|
||||
const wds = modulesAutoDetection(workingDirectory)
|
||||
|
||||
const cwd = process.cwd()
|
||||
|
||||
for (const wd of wds) {
|
||||
await core.group(`run golangci-lint in ${path.relative(cwd, wd)}`, () => runGolangciLint(binPath, wd))
|
||||
await optionalGroup(noGroup, `run golangci-lint in ${path.relative(cwd, wd)}`, () => runGolangciLint(binPath, wd))
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
await core.group(`run golangci-lint`, () => runGolangciLint(binPath, workingDirectory))
|
||||
await optionalGroup(noGroup, `run golangci-lint`, () => runGolangciLint(binPath, workingDirectory))
|
||||
}
|
||||
|
||||
async function optionalGroup<T>(noGroup: boolean, name: string, fn: () => Promise<T>): Promise<T> {
|
||||
if (noGroup) {
|
||||
core.info(name)
|
||||
|
||||
return fn()
|
||||
}
|
||||
|
||||
return core.group(name, fn)
|
||||
}
|
||||
|
||||
export async function run(): Promise<void> {
|
||||
|
||||
@@ -67,6 +67,12 @@ const isLessVersion = (a: Version, b: Version): boolean => {
|
||||
|
||||
const getRequestedVersion = (): Version => {
|
||||
let requestedVersion = core.getInput(`version`)
|
||||
let versionFilePath = core.getInput(`version-file`)
|
||||
|
||||
if (requestedVersion && versionFilePath) {
|
||||
core.warning(`Both version (${requestedVersion}) and version-file (${versionFilePath}) inputs are specified, only version will be used`)
|
||||
}
|
||||
|
||||
const workingDirectory = core.getInput(`working-directory`)
|
||||
|
||||
let goMod = "go.mod"
|
||||
@@ -83,6 +89,27 @@ const getRequestedVersion = (): Version => {
|
||||
}
|
||||
}
|
||||
|
||||
if (requestedVersion == "" && versionFilePath) {
|
||||
if (workingDirectory) {
|
||||
versionFilePath = path.join(workingDirectory, versionFilePath)
|
||||
}
|
||||
|
||||
if (!fs.existsSync(versionFilePath)) {
|
||||
throw new Error(`The specified golangci-lint version file at: ${versionFilePath} does not exist`)
|
||||
}
|
||||
|
||||
const content = fs.readFileSync(versionFilePath, "utf-8")
|
||||
|
||||
if (path.basename(versionFilePath) === ".tool-versions") {
|
||||
// asdf/mise file.
|
||||
const match = content.match(/^golangci-lint\s+([^\n#]+)/m)
|
||||
requestedVersion = match ? "v" + match[1].trim().replace(/^v/gi, "") : ""
|
||||
} else {
|
||||
// .golangci-lint-version file.
|
||||
requestedVersion = "v" + content.trim().replace(/^v/gi, "")
|
||||
}
|
||||
}
|
||||
|
||||
const parsedRequestedVersion = parseVersion(requestedVersion)
|
||||
if (parsedRequestedVersion == null) {
|
||||
return null
|
||||
|
||||
Reference in new issue
Block a user