Skip to content

Commit

Permalink
feat(ci): add golangci-lint config and shared workflow
Browse files Browse the repository at this point in the history
This adds a shared workflow for linting Go code using golangci-lint. It
adds golangci-lint configuration files for both the default and soft
linting configurations and clones the meta repository to use the
configuration files when running the workflow.
  • Loading branch information
aymanbagabas committed Sep 18, 2024
1 parent 117014e commit 58aeae0
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 0 deletions.
65 changes: 65 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: lint
on:
workflow_call:
inputs:
working-directory:
required: false
type: string

permissions:
# Required: allow read access to the content for analysis.
contents: read
# Optional: allow read access to pull request. Use with `only-new-issues` option.
pull-requests: read
# Optional: allow write access to checks to allow the action to annotate code in the PR.
checks: write

jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- uses: actions/checkout@v4
with:
path: colorprofile
- uses: actions/checkout@v4
with:
repository: charmbracelet/meta
path: meta
- run: |
pwd
tree
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
working-directory: ${{ inputs.working-directory }}
# Optional: golangci-lint command line arguments.
args: --config="$GITHUB_WORKSPACE/meta/golangci.yml"
# Optional: show only new issues if it's a pull request. The default value is `false`.
only-new-issues: true

lint-soft:
runs-on: ubuntu-latest
steps:
- name: Install Go
uses: actions/setup-go@v5
with:
go-version: stable
- uses: actions/checkout@v4
with:
path: colorprofile
- uses: actions/checkout@v4
with:
repository: charmbracelet/meta
path: meta
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
working-directory: ${{ inputs.working-directory }}
# Optional: golangci-lint command line arguments.
args: --config="$GITHUB_WORKSPACE/meta/golangci-soft.yml" --issues-exit-code=0
# Optional: show only new issues if it's a pull request. The default value is `false`.
only-new-issues: true
46 changes: 46 additions & 0 deletions golangci-soft.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
run:
tests: false

issues:
include:
- EXC0001
- EXC0005
- EXC0011
- EXC0012
- EXC0013

max-issues-per-linter: 0
max-same-issues: 0

linters:
enable:
# - dupl
- exhaustive
# - exhaustivestruct
- goconst
- godot
- godox
- gomnd
- gomoddirectives
- goprintffuncname
# - lll
- misspell
- nakedret
- nestif
- noctx
- nolintlint
- prealloc
- wrapcheck

# disable default linters, they are already enabled in .golangci.yml
disable:
- deadcode
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- structcheck
- typecheck
- unused
- varcheck
30 changes: 30 additions & 0 deletions golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
run:
tests: false

issues:
include:
- EXC0001
- EXC0005
- EXC0011
- EXC0012
- EXC0013

max-issues-per-linter: 0
max-same-issues: 0

linters:
enable:
- bodyclose
- exportloopref
- gofumpt
- goimports
- gosec
- nilerr
- predeclared
- revive
- rowserrcheck
- sqlclosecheck
- tparallel
- unconvert
- unparam
- whitespace

0 comments on commit 58aeae0

Please sign in to comment.