name: Clang-tidy check on: push: branches: [develop] 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: if: github.event_name != 'push' || contains(github.event.head_commit.message, 'clang-tidy auto fixes') runs-on: heavy container: image: ghcr.io/xrplf/clio-ci:b2be4b51d1d81548ca48e2f2b8f67356b880c96d permissions: contents: write issues: write pull-requests: write steps: - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 with: fetch-depth: 0 - name: Prepare runner uses: XRPLF/actions/.github/actions/prepare-runner@7951b682e5a2973b28b0719a72f01fc4b0d0c34f 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 uses: ./.github/actions/conan with: conan_profile: ${{ env.CONAN_PROFILE }} - name: Run CMake uses: ./.github/actions/cmake with: conan_profile: ${{ env.CONAN_PROFILE }} - name: Get number of processors uses: XRPLF/actions/.github/actions/get-nproc@046b1620f6bfd6cd0985dc82c3df02786801fe0a id: nproc - 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.nproc.outputs.nproc }}" -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 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