mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-04 11:55:51 +00:00
123 lines
3.9 KiB
YAML
123 lines
3.9 KiB
YAML
name: Clang-tidy check
|
|
|
|
on:
|
|
schedule:
|
|
- cron: "0 9 * * 1-5"
|
|
workflow_dispatch:
|
|
pull_request:
|
|
branches: [develop]
|
|
paths:
|
|
- .github/workflows/clang-tidy.yml
|
|
|
|
- .clang_tidy
|
|
|
|
concurrency:
|
|
# Only cancel in-progress jobs or runs for the current workflow - matches against branch & tags
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
CONAN_PROFILE: clang
|
|
LLVM_TOOLS_VERSION: 20
|
|
|
|
jobs:
|
|
clang_tidy:
|
|
runs-on: heavy
|
|
container:
|
|
image: ghcr.io/xrplf/clio-ci:a446d85297b3006e6d2c4dc7640368f096afecf5
|
|
|
|
permissions:
|
|
contents: write
|
|
issues: write
|
|
pull-requests: write
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Prepare runner
|
|
uses: ./.github/actions/prepare_runner
|
|
with:
|
|
disable_ccache: true
|
|
|
|
- name: Restore cache
|
|
uses: ./.github/actions/restore_cache
|
|
id: restore_cache
|
|
with:
|
|
conan_profile: ${{ env.CONAN_PROFILE }}
|
|
ccache_dir: ${{ env.CCACHE_DIR }}
|
|
|
|
- name: Run conan and cmake
|
|
uses: ./.github/actions/generate
|
|
with:
|
|
conan_profile: ${{ env.CONAN_PROFILE }}
|
|
|
|
- name: Get number of threads
|
|
uses: ./.github/actions/get_number_of_threads
|
|
id: number_of_threads
|
|
|
|
- name: Run clang-tidy
|
|
continue-on-error: true
|
|
shell: bash
|
|
id: run_clang_tidy
|
|
run: |
|
|
run-clang-tidy-${{ env.LLVM_TOOLS_VERSION }} -p build -j "${{ steps.number_of_threads.outputs.threads_number }}" -fix -quiet 1>output.txt
|
|
|
|
- name: Fix local includes and clang-format style
|
|
if: ${{ steps.run_clang_tidy.outcome != 'success' }}
|
|
shell: bash
|
|
run: |
|
|
pre-commit run --all-files fix-local-includes || true
|
|
pre-commit run --all-files clang-format || true
|
|
|
|
- name: Print issues found
|
|
if: ${{ steps.run_clang_tidy.outcome != 'success' }}
|
|
shell: bash
|
|
run: |
|
|
sed -i '/error\||/!d' ./output.txt
|
|
cat output.txt
|
|
rm output.txt
|
|
|
|
- name: Create an issue
|
|
if: ${{ steps.run_clang_tidy.outcome != 'success' && github.event_name != 'pull_request' }}
|
|
id: create_issue
|
|
uses: ./.github/actions/create_issue
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
with:
|
|
title: "Clang-tidy found bugs in code 🐛"
|
|
body: >
|
|
Clang-tidy found issues in the code:
|
|
|
|
List of the issues found: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/
|
|
|
|
- uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0
|
|
if: ${{ steps.run_clang_tidy.outcome != 'success' && github.event_name != 'pull_request' }}
|
|
with:
|
|
gpg_private_key: ${{ secrets.ACTIONS_GPG_PRIVATE_KEY }}
|
|
passphrase: ${{ secrets.ACTIONS_GPG_PASSPHRASE }}
|
|
git_user_signingkey: true
|
|
git_commit_gpgsign: true
|
|
|
|
- name: Create PR with fixes
|
|
if: ${{ steps.run_clang_tidy.outcome != 'success' && github.event_name != 'pull_request' }}
|
|
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
|
env:
|
|
GH_REPO: ${{ github.repository }}
|
|
GH_TOKEN: ${{ github.token }}
|
|
with:
|
|
commit-message: "[CI] clang-tidy auto fixes"
|
|
committer: Clio CI <skuznetsov@ripple.com>
|
|
branch: "clang_tidy/autofix"
|
|
branch-suffix: timestamp
|
|
delete-branch: true
|
|
title: "style: clang-tidy auto fixes"
|
|
body: "Fixes #${{ steps.create_issue.outputs.created_issue_id }}. Please review and commit clang-tidy fixes."
|
|
reviewers: "godexsoft,kuznetsss,PeterChen13579,mathbunnyru"
|
|
|
|
- name: Fail the job
|
|
if: ${{ steps.run_clang_tidy.outcome != 'success' }}
|
|
shell: bash
|
|
run: exit 1
|