name: lint on: push: branches: [main, "release/**"] pull_request: branches: [main, "release/**"] 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'