Skip to content

Commit 44a361e

Browse files
committed
ci: add path filtering and final status checks to workflows
Signed-off-by: ComixHe <ComixHe1895@outlook.com>
1 parent 7588ca5 commit 44a361e

3 files changed

Lines changed: 100 additions & 21 deletions

File tree

.github/workflows/build.yaml

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,34 @@ name: build
33
on:
44
pull_request:
55
branches: ['master', 'release/**']
6-
paths-ignore: ['**.md', '**.toml', '**.yaml', 'docs/**']
76
push:
87
branches: ['master', 'release/**']
9-
paths-ignore: ['**.md', '**.toml', '**.yaml', 'docs/**']
108

119
jobs:
10+
path-filter:
11+
runs-on: ubuntu-latest
12+
outputs:
13+
should_build: ${{ steps.filter.outputs.code }}
14+
steps:
15+
- uses: actions/checkout@v6
16+
- uses: dorny/paths-filter@v3
17+
id: filter
18+
with:
19+
filters: |
20+
code:
21+
- '!**.md'
22+
- '!**.toml'
23+
- '!**.yaml'
24+
- '!docs/**'
25+
1226
build-on-ubuntu-24:
27+
needs: path-filter
28+
if: ${{ needs.path-filter.outputs.should_build == 'true' }}
1329
name: build on ${{ matrix.os }} with Qt6
1430
runs-on: ${{ matrix.os }}
1531
strategy:
1632
matrix:
1733
os: ['ubuntu-24.04', 'ubuntu-24.04-arm']
18-
1934
steps:
2035
- name: Checkout code
2136
uses: actions/checkout@v6
@@ -43,10 +58,11 @@ jobs:
4358
run: cmake --build build --parallel
4459

4560
- name: Run tests
46-
run: |
47-
cmake --build build --target test
61+
run: cmake --build build --target test
4862

4963
build-on-ubuntu-22:
64+
needs: path-filter
65+
if: ${{ needs.path-filter.outputs.should_build == 'true' }}
5066
name: build on ${{ matrix.os }} with Qt5
5167
runs-on: ${{ matrix.os }}
5268
strategy:
@@ -79,3 +95,16 @@ jobs:
7995
8096
- name: Build
8197
run: cmake --build build --parallel
98+
99+
build-status:
100+
name: Final build Status
101+
needs: [path-filter, build-on-ubuntu-24, build-on-ubuntu-22]
102+
if: always()
103+
runs-on: ubuntu-latest
104+
steps:
105+
- name: Decide status
106+
run: |
107+
if [[ "${{ needs.build-on-ubuntu-24.result }}" == "failure" || "${{ needs.build-on-ubuntu-22.result }}" == "failure" ]]; then
108+
exit 1
109+
fi
110+
exit 0

.github/workflows/codecov.yaml

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,44 @@
11
name: coverage
2+
23
on:
3-
pull_request_target:
4+
pull_request:
5+
branches: ['master', 'release/**']
46
push:
5-
branches:
6-
- master
7-
- 'release/**'
7+
branches: ['master', 'release/**']
8+
89
jobs:
10+
path-filter:
11+
runs-on: ubuntu-latest
12+
outputs:
13+
should_scan: ${{ steps.filter.outputs.code }}
14+
steps:
15+
- uses: actions/checkout@v6
16+
- uses: dorny/paths-filter@v3
17+
id: filter
18+
with:
19+
filters: |
20+
code:
21+
- '!**.md'
22+
- '!**.toml'
23+
- '!**.yaml'
24+
- '!docs/**'
25+
926
codecov:
27+
needs: path-filter
28+
if: ${{ needs.path-filter.outputs.should_scan == 'true' }}
1029
name: codecov
11-
runs-on: ubuntu-24.04
30+
runs-on: ubuntu-latest
1231
steps:
13-
- uses: actions/checkout@v3
14-
with:
15-
ref: ${{ github.event.pull_request.head.sha }}
32+
- uses: actions/checkout@v6
1633

1734
- uses: awalsh128/cache-apt-pkgs-action@latest
1835
with:
19-
packages: gcovr cmake debhelper-compat erofs-utils erofsfuse intltool libcap-dev libcli11-dev libcurl4-openssl-dev libdeflate-dev libelf-dev libexpected-dev libfuse3-dev libglib2.0-dev libgmock-dev libgtest-dev liblz4-dev liblzma-dev libostree-dev libpcre2-dev libselinux1-dev libssl-dev libsystemd-dev libyaml-cpp-dev libzstd-dev nlohmann-json3-dev pkg-config qtbase5-dev qtbase5-private-dev systemd zlib1g-dev
36+
packages: >-
37+
gcovr cmake debhelper-compat erofs-utils erofsfuse intltool libcap-dev libcli11-dev
38+
libcurl4-openssl-dev libdeflate-dev libelf-dev libexpected-dev libfuse3-dev libglib2.0-dev libgmock-dev
39+
libgtest-dev liblz4-dev liblzma-dev libostree-dev libpcre2-dev libselinux1-dev libssl-dev libsystemd-dev
40+
libyaml-cpp-dev libzstd-dev nlohmann-json3-dev pkg-config qt6-base-dev qt6-base-private-dev systemd zlib1g-dev
41+
libwayland-dev wayland-protocols libgl1-mesa-dev
2042
version: 1.0
2143

2244
- name: Generate coverage
@@ -30,3 +52,19 @@ jobs:
3052
files: ./build-generate-coverage/report/index.xml
3153
disable_search: true
3254
disable_telem: true
55+
56+
coverage_final_status:
57+
name: Coverage Check Success
58+
needs: [path-filter, codecov]
59+
if: always()
60+
runs-on: ubuntu-latest
61+
steps:
62+
- name: Decide Status
63+
run: |
64+
RESULT="${{ needs.codecov.result }}"
65+
if [[ "$RESULT" == "failure" ]]; then
66+
echo "Coverage generation failed."
67+
exit 1
68+
fi
69+
echo "Coverage passed or skipped."
70+
exit 0

.github/workflows/lint.yml

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
name: lint
2+
23
on:
34
pull_request:
45
branches: ['master', 'release/**']
@@ -18,13 +19,6 @@ jobs:
1819
- name: Checkout code
1920
uses: actions/checkout@v6
2021

21-
- uses: dorny/paths-filter@v3
22-
id: filter
23-
with:
24-
filters: |
25-
code:
26-
- '!(docs/**|**.md)'
27-
2822
- name: Set up Python
2923
if: steps.filter.outputs.code == 'true'
3024
uses: actions/setup-python@v6
@@ -34,3 +28,21 @@ jobs:
3428
- name: Run pre-commit
3529
if: steps.filter.outputs.code == 'true'
3630
uses: pre-commit/action@v3.0.1
31+
32+
lint_final_status:
33+
name: Lint Check Success
34+
needs: [check_job, pre_commit_job]
35+
if: always()
36+
runs-on: ubuntu-latest
37+
steps:
38+
- name: Check Overall Status
39+
run: |
40+
COMMIT_RESULT="${{ needs.check_job.result }}"
41+
STYLE_RESULT="${{ needs.pre_commit_job.result }}"
42+
43+
if [[ "$COMMIT_RESULT" == "failure" || "$STYLE_RESULT" == "failure" ]]; then
44+
echo "Lint failed."
45+
exit 1
46+
fi
47+
echo "All lint checks passed."
48+
exit 0

0 commit comments

Comments
 (0)