Recipes¶
Here are some example workflows to get started quickly.
name: cpp-linter (auto-fix)
on:
pull_request:
branches: [main, master, develop]
paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
jobs:
cpp-linter:
runs-on: ubuntu-latest
permissions: # explicit permissions granted to the `secrets.GITHUB_TOKEN`
contents: write # needed for auto-fix commits
pull-requests: read # needed to list changed files on pull_request events
steps:
- uses: actions/checkout@v7
# Pushes made with the default GITHUB_TOKEN do not start new workflow
# runs. To have the auto-fix commit re-checked by CI, check out and run
# the action with a GitHub App token; see the permissions docs.
- uses: cpp-linter/cpp-linter-action@v2
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: 'file' # Use .clang-format config file
tidy-checks: '-*' # disable clang-tidy
auto-fix: 'true' # auto-apply clang-format fixes
- name: Fail fast?!
if: steps.linter.outputs.clang-format-checks-failed > 0
run: exit 1
- See also
auto-fix - See also
style - See also
tidy-checks
name: cpp-linter
on:
pull_request:
branches: [main, master, develop]
paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
push:
branches: [main, master, develop]
paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
jobs:
cpp-linter:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
# ... optionally setup build env to create a compilation database
- uses: cpp-linter/cpp-linter-action@v2
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: '' # disable clang-format checks. (1)
tidy-checks: '' # Use .clang-tidy config file. (2)
- name: Fail fast?!
if: steps.linter.outputs.clang-tidy-checks-failed > 0
run: exit 1
- See also
style - See also
tidy-checks
name: cpp-linter
on:
pull_request:
branches: [main, master, develop]
paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
push:
branches: [main, master, develop]
paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
jobs:
cpp-linter:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
# ... optionally setup build env to create a compilation database
- uses: cpp-linter/cpp-linter-action@v2
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: 'file' # Use .clang-format config file. (1)
tidy-checks: '-*' # disable clang-tidy checks. (2)
- name: Fail fast?!
if: steps.linter.outputs.clang-format-checks-failed > 0
run: exit 1
- See also
style - See also
tidy-checks
name: cpp-linter
on:
pull_request:
branches: [main, master, develop]
paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
push:
branches: [main, master, develop]
paths: ['**.c', '**.cpp', '**.h', '**.hpp', '**.cxx', '**.hxx', '**.cc', '**.hh', '**CMakeLists.txt', 'meson.build', '**.cmake']
jobs:
cpp-linter:
runs-on: ubuntu-latest
permissions: # (1)!
pull-requests: write
steps:
- uses: actions/checkout@v5
# ... optionally setup build env to create a compilation database
- uses: cpp-linter/cpp-linter-action@v2
id: linter
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
style: 'file' # Use .clang-format config file. (2)
tidy-checks: '' # Use .clang-tidy config file. (3)
# only 'update' a single comment in a pull request's thread. (4)
thread-comments: ${{ github.event_name == 'pull_request' && 'update' }}
- name: Fail fast?!
if: steps.linter.outputs.checks-failed > 0
run: exit 1
- See also our token permissions document
- See also
style - See also
tidy-checks - See also
thread-comments