From fa83a17c5754813f3b35c34f1d68fc1ac55484e1 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Mon, 11 Apr 2022 17:20:06 -0700 Subject: [PATCH] ci/gha: convert lint-extra from a job to a step There is no need to parallelize lint and lint-extra jobs, and they only differ with the arguments to golangci-lint. Given that the longest time spent in these jobs is installing libseccomp-dev, and that the second linter run can probably benefit a lot from caching, it makes sense to merge them. Move lint-extra from a separate job to a step in lint job. The implementation is motivated by [1] and relies on the fact that the last commit being fetched is the merge commit. So, we need to set fetch-depth to 2 to be able to see the diff of the merge commit -- and this is what golangci-lint is using. [1] https://github.com/golangci/golangci-lint-action/issues/449#issuecomment-1096995821 Signed-off-by: Kir Kolyshkin --- .github/workflows/validate.yml | 27 ++++++--------------------- .golangci-extra.yml | 2 +- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index f60c191e946..be0007182c1 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -16,25 +16,8 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - - uses: actions/setup-go@v3 - with: - go-version: "${{ env.GO_VERSION }}" - - name: install deps - run: | - sudo apt -q update - sudo apt -q install libseccomp-dev - - uses: golangci/golangci-lint-action@v3 with: - version: v1.45 - - lint-extra: - # Extra linters, only checking new code from pull requests. - if: github.event_name == 'pull_request' - runs-on: ubuntu-20.04 - permissions: - contents: read - steps: - - uses: actions/checkout@v3 + fetch-depth: 2 - uses: actions/setup-go@v3 with: go-version: "${{ env.GO_VERSION }}" @@ -44,10 +27,12 @@ jobs: sudo apt -q install libseccomp-dev - uses: golangci/golangci-lint-action@v3 with: - only-new-issues: true - args: --config .golangci-extra.yml version: v1.45 - + # Extra linters, only checking new code from a pull request. + - name: lint-extra + if: github.event_name == 'pull_request' + run: | + golangci-lint run --config .golangci-extra.yml --new-from-rev=HEAD~1 --out-format=github-actions compile-buildtags: runs-on: ubuntu-20.04 diff --git a/.golangci-extra.yml b/.golangci-extra.yml index 1c160e6a660..be33f90d7f9 100644 --- a/.golangci-extra.yml +++ b/.golangci-extra.yml @@ -1,5 +1,5 @@ # This is golangci-lint config file which is used to check new code in -# github PRs only (see lint-extra job in .github/workflows/validate.yml). +# github PRs only (see lint-extra in .github/workflows/validate.yml). # # For the default linter config, see .golangci.yml. This config should # only enable additional linters not enabled in the default config.