mirror of
				https://github.com/XRPLF/clio.git
				synced 2025-11-04 11:55:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
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 <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
 |