go-ethereum/.github/workflows/lint.yml
Arran Schlosberg b0332b5168
chore(ci): add merge_group trigger to required workflows (#160)
## Why this should be merged

Allows ruleset-required workflows to be triggered by a merge queue, not
just the PR for the merge. Although `main` isn't a particularly "busy"
branch, a merge queue will ensure that CI passes on the exact version of
code that is about to be merged; i.e. (from the [docs]):

> The merge queue provides the same benefits as the **Require branches
to be up to date before merging** branch protection, but does not
require a pull request author to update their pull request branch and
wait for status checks to finish before trying to merge.

[docs]:
https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue#about-merge-queues

## How this works

Adds `merge_group` workflow trigger with [recommended
type](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#merge_group).

## How this was tested

N/A (worst-case it has to be reverted and another PR is temporarily
blocked).
2025-03-11 13:57:57 +00:00

67 lines
2 KiB
YAML

name: lint
on:
push:
branches: [main, "release/**"]
pull_request:
branches: [main, "release/**"]
merge_group:
types: [checks_requested]
workflow_dispatch:
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
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
# If adding a new linter: (a) create a new job; and (b) add it to the `needs`
# list of the `lint` job as this is what gates PRs.
lint:
runs-on: ubuntu-latest
needs: [golangci-lint, yamllint, shellcheck]
steps:
- run: echo "Dependencies successful"
golangci-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: "go.mod"
- name: goheader
if: ${{ github.event_name == 'pull_request' }}
# The goheader linter is only enabled in the CI so that it runs only on modified or new files
# (see only-new-issues: true). It is disabled in .golangci.yml because
# golangci-lint running locally is not aware of new/modified files compared to the base
# commit of a pull request, and we want to avoid reporting invalid goheader errors.
uses: golangci/golangci-lint-action@v6
with:
version: v1.60
only-new-issues: true
args: --enable-only goheader
- name: golangci-lint
uses: golangci/golangci-lint-action@v6
with:
version: v1.60
yamllint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: yamllint -c .yamllint.yml .
shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@2.0.0
with:
scandir: './libevm'