Skip to content

ci: add GitHub action for clang-tidy #20

ci: add GitHub action for clang-tidy

ci: add GitHub action for clang-tidy #20

Workflow file for this run

name: cpp-linter
on:
pull_request:
paths: ['.github/workflows/cpp-linter.yml', '**.c', '**.cpp', '**.h', '**.inl', '**CMakeLists.txt', '**.cmake']
push:
branches: [main]
paths: ['.github/workflows/cpp-linter.yml', '**.c', '**.cpp', '**.h', '**.inl', '**CMakeLists.txt', '**.cmake']
jobs:
cpp-linter:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Install dependencies
run: |
wget -qO- 'https://apt.llvm.org/llvm-snapshot.gpg.key' | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc >/dev/null
sudo add-apt-repository -y 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-19 main'
packages=(
clang-19 clang-format-19 clang-tidy-19 cmake git libgl-dev libopengl-dev libx11-6 libx11-xcb1 libxcb-glx0
libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-render0 libxcb-shape0
libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb-xinput0 libxcb-xkb1 libxcb1 libxkbcommon-dev
libxkbcommon-x11-0 libxkbcommon0 make
)
sudo apt-get update
sudo apt-get install -y "${packages[@]}" --no-install-recommends
- name: Install Qt
env:
QT_EMAIL: ${{ secrets.QT_EMAIL }}
QT_PASSWORD: ${{ secrets.QT_PASSWORD }}
run: |
wget 'https://qt.mirror.constant.com/archive/online_installers/4.8/qt-online-installer-linux-x64-4.8.0.run'
chmod +x qt-online-installer-linux-x64-4.8.0.run
./qt-online-installer-linux-x64-4.8.0.run --no-force-installations --no-default-installations \
--no-size-checking --default-answer --accept-licenses --confirm-command --accept-obligations \
--email "$QT_EMAIL" --password "$QT_PASSWORD" install \
qt.qt6.680.linux_gcc_64 extensions.qtpdf.680.linux_gcc_64 qt.qt6.680.addons.qthttpserver
- name: Configure
run: |
sed -i '/file(DOWNLOAD/,+4 s/^/#/' gpt4all-chat/CMakeLists.txt
cmake -S gpt4all-chat -B gpt4all-chat/build \
-DCMAKE_PREFIX_PATH=~/Qt/6.8.0/gcc_64/lib/cmake \
-DCMAKE_C_COMPILER=clang-19 \
-DCMAKE_CXX_COMPILER=clang++-19 \
-DLLMODEL_CUDA=OFF \
-DLLMODEL_KOMPUTE=OFF
- uses: cpp-linter/cpp-linter-action@v2
id: linter
with:
style: '' # no clang-format
extensions: 'c,cpp'
tidy-checks: '' # use .clang-tidy config
database: gpt4all-chat/build
version: 19
files-changed-only: false
ignore: 'gpt4all-chat/build/_deps|gpt4all-bindings'
- name: Fail Fast
if: steps.linter.outputs.clang-tidy-checks-failed > 0
run: exit 1