Skip to content

[Linting] Enforce 120 max lines, and import order with custom linting #3

[Linting] Enforce 120 max lines, and import order with custom linting

[Linting] Enforce 120 max lines, and import order with custom linting #3

Workflow file for this run

# The reason the linting step has been moved to its own file is due to this
# aside in the golangci-lint action repo underneath the first code block:
# Ref: https://github.com/golangci/golangci-lint-action#how-to-use
# tl;dr: "We recommend running this action in a job separate from other jobs
# (go test, etc) because different jobs run in parallel."
Name: Linter

Check failure on line 7 in .github/workflows/linter.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/linter.yml

Invalid workflow file

The workflow is not valid. .github/workflows/linter.yml (Line: 7, Col: 1): Unexpected value 'Name'
on:
push:
branches: ["main"]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
# Ref: https://github.com/golangci/golangci-lint-action#comments-and-annotations
permissions:
contents: read
pull-requests: read
checks: write
jobs:
lint:
runs-on: ubuntu-latest
steps:
# Firstly setup the repo to a point where golangci-lint is able to lint
# properly without getting typeerror's from revive everywhere.
- name: install ignite
# TODO_TECHDEBT: upgrade to the latest Ignite (the latest at the moment of creating a note is 0.28). Need to downgrade to fix CI pipelines. Might be done in scope of #240.
run: |
# curl https://get.ignite.com/cli! | bash
wget https://github.com/ignite/cli/releases/download/v0.27.2/ignite_0.27.2_linux_amd64.tar.gz
tar -xzf ignite_0.27.2_linux_amd64.tar.gz
sudo mv ignite /usr/local/bin/ignite
ignite version
- uses: actions/checkout@v3
with:
fetch-depth: "0" # Per https://github.com/ignite/cli/issues/1674#issuecomment-1144619147
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: "1.20.10"
cache: false # Per https://github.com/golangci/golangci-lint-action#how-to-use
- name: Install CI dependencies
run: make install_ci_deps
- name: Generate protobufs
run: make proto_regen
# Fetch a list of all modified files in this PR.
- name: Get Modified Files
run: git diff --name-only ${{ github.event.before }} ${{ github.sha }} > modified_files.txt
# Filter the list of files modified in this PR to exclude those that have
# ignite scaffold comments in their import block, this is because gci
# (golangci-lint's import formatter) doesn't support this kind of filtering
# and removes all comments from import blocks.
- name: Filter For Lintable Files
run: go run ./tools/scripts/scaffold_filter/main.go $(cat modified_files.txt) > files_to_lint.txt
# Run golangci-lint on the filtered files from this PR - allowing gci to
# catch any improperly formatted import blocks in this PR.
- name: Run golangci-lint (filtered for scaffold comments)
uses: golangci/golangci-lint-action@v3
with:
version: latest
args: --timeout=15m --config=.golangci.yml $(cat files_to_lint.txt)
only-new-issues: true
# Do a second lint pass without import checking (after filtered lint) to
# catcy any linter errors in files that were excluded in the first pass.
# This step disables gci checks, to check for all other linter errors,
# on every file in the PR, without filtering.
- name: Run golangci-lint (without import checking)
uses: golangci/golangci-lint-action@v3
with:
version: latest
args: --timeout=15m --config=.golangci.yml --disable gci $(cat modified_files.txt)
only-new-issues: true