detached 50d5ee8

ci: skip lint and test on docs-only changes

Use dorny/paths-filter to detect Go file changes. When only docs or
markdown files change, Lint and Test jobs are skipped. GitHub treats
skipped required checks as passing, unblocking docs-only PRs.

Previously, path filters in the on: trigger prevented the workflow from
running at all, leaving required checks stuck as 'Waiting for status'.
commit
50d5ee85687cb8df63ac16879208ee519f9c4acd
author
brice · · 2026-04-03 18:51 UTC
parent
cbca441
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +25 -20
M .github/workflows/ci.yml +25 -20
@@ -3,31 +3,34 @@ name: CI
33 on:
44 push:
55 branches: [main]
6- paths:
7- - '**.go'
8- - 'go.mod'
9- - 'go.sum'
10- - '.golangci.yml'
11- - 'Makefile'
12- - '.github/workflows/**'
13- - '!**.md'
14- - '!docs/**'
15- - '!LICENSE'
166 pull_request:
17- paths:
18- - '**.go'
19- - 'go.mod'
20- - 'go.sum'
21- - '.golangci.yml'
22- - 'Makefile'
23- - '.github/workflows/**'
24- - '!**.md'
25- - '!docs/**'
26- - '!LICENSE'
277
288 jobs:
9+ changes:
10+ name: Detect changes
11+ runs-on: ubuntu-latest
12+ permissions:
13+ pull-requests: read
14+ outputs:
15+ go: ${{ steps.filter.outputs.go }}
16+ steps:
17+ - uses: actions/checkout@v6
18+ - uses: dorny/paths-filter@v3
19+ id: filter
20+ with:
21+ filters: |
22+ go:
23+ - '**.go'
24+ - 'go.mod'
25+ - 'go.sum'
26+ - '.golangci.yml'
27+ - 'Makefile'
28+ - '.github/workflows/**'
29+
2930 lint:
3031 name: Lint
32+ needs: changes
33+ if: needs.changes.outputs.go == 'true'
3134 runs-on: ubuntu-latest
3235 steps:
3336 - uses: actions/checkout@v6
@@ -51,6 +54,8 @@ jobs:
5154
5255 test:
5356 name: Test
57+ needs: changes
58+ if: needs.changes.outputs.go == 'true'
5459 runs-on: ubuntu-latest
5560 steps:
5661 - uses: actions/checkout@v6
@@ -3,31 +3,34 @@ name: CI
3 on:3 on:
4 push:4 push:
5 branches: [main]5 branches: [main]
6- paths:
7- - '**.go'
8- - 'go.mod'
9- - 'go.sum'
10- - '.golangci.yml'
11- - 'Makefile'
12- - '.github/workflows/**'
13- - '!**.md'
14- - '!docs/**'
15- - '!LICENSE'
16 pull_request:6 pull_request:
17- paths:
18- - '**.go'
19- - 'go.mod'
20- - 'go.sum'
21- - '.golangci.yml'
22- - 'Makefile'
23- - '.github/workflows/**'
24- - '!**.md'
25- - '!docs/**'
26- - '!LICENSE'
27 7
28 jobs:8 jobs:
9+ changes:
10+ name: Detect changes
11+ runs-on: ubuntu-latest
12+ permissions:
13+ pull-requests: read
14+ outputs:
15+ go: ${{ steps.filter.outputs.go }}
16+ steps:
17+ - uses: actions/checkout@v6
18+ - uses: dorny/paths-filter@v3
19+ id: filter
20+ with:
21+ filters: |
22+ go:
23+ - '**.go'
24+ - 'go.mod'
25+ - 'go.sum'
26+ - '.golangci.yml'
27+ - 'Makefile'
28+ - '.github/workflows/**'
29+
29 lint:30 lint:
30 name: Lint31 name: Lint
32+ needs: changes
33+ if: needs.changes.outputs.go == 'true'
31 runs-on: ubuntu-latest34 runs-on: ubuntu-latest
32 steps:35 steps:
33 - uses: actions/checkout@v636 - uses: actions/checkout@v6
@@ -51,6 +54,8 @@ jobs:
51 54
52 test:55 test:
53 name: Test56 name: Test
57+ needs: changes
58+ if: needs.changes.outputs.go == 'true'
54 runs-on: ubuntu-latest59 runs-on: ubuntu-latest
55 steps:60 steps:
56 - uses: actions/checkout@v661 - uses: actions/checkout@v6

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close