-
Notifications
You must be signed in to change notification settings - Fork 28
111 lines (96 loc) · 4.21 KB
/
cpp-checks.yml
File metadata and controls
111 lines (96 loc) · 4.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
name: C++ Checks
# Called by top-level ci.yml
on:
workflow_call: {}
workflow_dispatch: {}
permissions:
contents: read
jobs:
clang-format:
name: clang-format
runs-on: ubuntu-latest
continue-on-error: false
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
# No submodules: scripts/clang-format.sh only walks our own src/ tree
fetch-depth: 1
- name: Install clang-format 22
run: |
set -eux
# Pin clang-format 22 to match the current macOS Homebrew LLVM
# Ubuntu 24.04's default clang-format ships with LLVM 18
sudo install -m 0755 -d /etc/apt/keyrings
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key \
| sudo tee /etc/apt/keyrings/llvm.asc >/dev/null
sudo chmod a+r /etc/apt/keyrings/llvm.asc
codename=$(lsb_release -cs)
echo "deb [signed-by=/etc/apt/keyrings/llvm.asc] http://apt.llvm.org/${codename}/ llvm-toolchain-${codename}-22 main" \
| sudo tee /etc/apt/sources.list.d/llvm-22.list >/dev/null
sudo apt-get update
sudo apt-get install -y clang-format-22
sudo ln -sf /usr/bin/clang-format-22 /usr/local/bin/clang-format
clang-format --version
- name: Run clang-format
env:
FORMAT_BLOB_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: ./scripts/clang-format.sh
clang-tidy:
name: clang-tidy
runs-on: ubuntu-latest
continue-on-error: false
steps:
- name: Checkout (with submodules)
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive
fetch-depth: 1
- name: Install dependencies
run: |
set -eux
sudo apt-get update
sudo apt-get install -y \
build-essential cmake ninja-build pkg-config \
llvm-dev libclang-dev clang \
libssl-dev wget ca-certificates gnupg
- name: Install clang-tidy 19 (for ExcludeHeaderFilterRegex support)
run: |
set -eux
# Ubuntu 24.04 apt ships clang-tidy 18, which doesn't understand
# ExcludeHeaderFilterRegex (added in 19). Pull clang-tidy 19 from
# the upstream LLVM apt repository and pin the unversioned names.
sudo install -m 0755 -d /etc/apt/keyrings
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key \
| sudo tee /etc/apt/keyrings/llvm.asc >/dev/null
sudo chmod a+r /etc/apt/keyrings/llvm.asc
codename=$(lsb_release -cs)
echo "deb [signed-by=/etc/apt/keyrings/llvm.asc] http://apt.llvm.org/${codename}/ llvm-toolchain-${codename}-19 main" \
| sudo tee /etc/apt/sources.list.d/llvm-19.list >/dev/null
sudo apt-get update
sudo apt-get install -y clang-tidy-19 clang-tools-19
sudo ln -sf /usr/bin/clang-tidy-19 /usr/local/bin/clang-tidy
sudo ln -sf /usr/bin/run-clang-tidy-19 /usr/local/bin/run-clang-tidy
clang-tidy --version
run-clang-tidy --help | head -1 || true
- name: Install Rust (stable)
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
with:
toolchain: stable
- name: Set Linux build environment
run: |
echo "CXXFLAGS=-Wno-deprecated-declarations" >> "$GITHUB_ENV"
echo "CFLAGS=-Wno-deprecated-declarations" >> "$GITHUB_ENV"
LLVM_VERSION=$(llvm-config --version | cut -d. -f1)
echo "LIBCLANG_PATH=/usr/lib/llvm-${LLVM_VERSION}/lib" >> "$GITHUB_ENV"
- name: CMake configure
run: cmake --preset linux-release
- name: Generate protobuf headers
run: cmake --build build-release --target livekit_proto
- name: Run clang-tidy
env:
TIDY_BLOB_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
# This script is intended to be run locally and in CI. It will auto-detect
# the GHA environment and add PR annotations and a run summary.
# As of writing all warnings are treateded as errors to avoid tech debt build up
run: ./scripts/clang-tidy.sh --fail-on-warning