diff --git a/.clang-tidy b/.clang-tidy index 6efd42e..62b74bc 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -6,6 +6,7 @@ Checks: > modernize-*, -modernize-use-trailing-return-type, -modernize-use-auto, + -modernize-avoid-c-arrays, performance-*, concurrency-mt-unsafe, cppcoreguidelines-init-variables, diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..cecc937 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,29 @@ +name: Build (C++) + +on: + pull_request: + +jobs: + build: + runs-on: alpine + # Uses pre-built Docker image with all build deps. + # Rebuild via ci-image.yml workflow. + container: + image: git.zach-dev.cc/zach/zshell-ci:latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure + run: cmake -B build -G Ninja -DENABLE_MODULES=plugin -DCMAKE_BUILD_TYPE=Release + + - name: Build + run: ninja -C build + + - name: clang-tidy + continue-on-error: true + run: | + find Plugins -name '*.cpp' -o -name '*.hpp' | \ + xargs clang-tidy -p build --quiet 2>&1 | \ + grep -v 'Suppressed\|non-user\|non-system' diff --git a/.gitea/workflows/ci-image.yml b/.gitea/workflows/ci-image.yml new file mode 100644 index 0000000..87dba65 --- /dev/null +++ b/.gitea/workflows/ci-image.yml @@ -0,0 +1,22 @@ +name: Rebuild CI Image + +on: + schedule: + - cron: '0 6 * * 0' + workflow_dispatch: + +jobs: + build: + runs-on: alpine + env: + IMAGE: git.zach-dev.cc/zach/zshell-ci:latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Build image + run: docker build -t "$IMAGE" -f ci/Dockerfile . + + - name: Push image + run: docker push "$IMAGE" diff --git a/ci/Dockerfile b/ci/Dockerfile new file mode 100644 index 0000000..4b1e99d --- /dev/null +++ b/ci/Dockerfile @@ -0,0 +1,30 @@ +FROM alpine:edge + +# Build toolchain +RUN apk add --no-cache \ + alpine-sdk \ + cmake \ + ninja \ + clang22 \ + clang22-extra-tools \ + clang22-dev \ + llvm22-dev \ + llvm-dev \ + lld \ + pkgconf \ + git + +# Qt6 +RUN apk add --no-cache \ + qt6-qtbase-dev \ + qt6-qtdeclarative-dev \ + qt6-qtshadertools-dev \ + qt6-qt5compat-dev + +# Project-specific dependencies +RUN apk add --no-cache \ + libqalculate-dev \ + pipewire-dev \ + aubio-dev \ + lm-sensors-dev \ + glib-dev