mirror of
				https://github.com/XRPLF/rippled.git
				synced 2025-11-04 11:15:56 +00:00 
			
		
		
		
	For jobs running in containers, $GITHUB_WORKSPACE and ${{ github.workspace }} might not be the same directory. The actions/checkout step is supposed to checkout into `$GITHUB_WORKSPACE` and then add it to safe.directory (see instructions at https://github.com/actions/checkout), but that's apparently not happening for some container images. We can't be sure what is actually happening, so we preemptively add both directories to `safe.directory`. See also the GitHub issue opened in 2022 that still has not been resolved https://github.com/actions/runner/issues/2058.
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: clang-format
 | 
						|
 | 
						|
on:
 | 
						|
  push:
 | 
						|
  pull_request:
 | 
						|
    types: [opened, reopened, synchronize, ready_for_review]
 | 
						|
 | 
						|
jobs:
 | 
						|
  check:
 | 
						|
    if: ${{ github.event_name == 'push' || github.event.pull_request.draft != true || contains(github.event.pull_request.labels.*.name, 'DraftRunCI') }}
 | 
						|
    runs-on: ubuntu-24.04
 | 
						|
    container: ghcr.io/xrplf/ci/tools-rippled-clang-format
 | 
						|
    steps:
 | 
						|
      # For jobs running in containers, $GITHUB_WORKSPACE and ${{ github.workspace }} might not be the
 | 
						|
      # same directory. The actions/checkout step is *supposed* to checkout into $GITHUB_WORKSPACE and
 | 
						|
      # then add it to safe.directory (see instructions at https://github.com/actions/checkout)
 | 
						|
      # but that's apparently not happening for some container images. We can't be sure what is actually
 | 
						|
      # happening, so let's pre-emptively add both directories to safe.directory. There's a
 | 
						|
      # Github issue opened in 2022 and not resolved in 2025 https://github.com/actions/runner/issues/2058 ¯\_(ツ)_/¯
 | 
						|
      - run: |
 | 
						|
          git config --global --add safe.directory $GITHUB_WORKSPACE
 | 
						|
          git config --global --add safe.directory ${{ github.workspace }}
 | 
						|
      - uses: actions/checkout@v4
 | 
						|
      - name: Format first-party sources
 | 
						|
        run: |
 | 
						|
          clang-format --version
 | 
						|
          find include src tests -type f \( -name '*.cpp' -o -name '*.hpp' -o -name '*.h' -o -name '*.ipp' \) -exec clang-format -i {} +
 | 
						|
      - name: Check for differences
 | 
						|
        id: assert
 | 
						|
        shell: bash
 | 
						|
        run: |
 | 
						|
          set -o pipefail
 | 
						|
          git diff --exit-code | tee "clang-format.patch"
 | 
						|
      - name: Upload patch
 | 
						|
        if: failure() && steps.assert.outcome == 'failure'
 | 
						|
        uses: actions/upload-artifact@v4
 | 
						|
        continue-on-error: true
 | 
						|
        with:
 | 
						|
          name: clang-format.patch
 | 
						|
          if-no-files-found: ignore
 | 
						|
          path: clang-format.patch
 | 
						|
      - name: What happened?
 | 
						|
        if: failure() && steps.assert.outcome == 'failure'
 | 
						|
        env:
 | 
						|
          PREAMBLE: |
 | 
						|
            If you are reading this, you are looking at a failed Github Actions
 | 
						|
            job.  That means you pushed one or more files that did not conform
 | 
						|
            to the formatting specified in .clang-format. That may be because
 | 
						|
            you neglected to run 'git clang-format' or 'clang-format' before
 | 
						|
            committing, or that your version of clang-format has an
 | 
						|
            incompatibility with the one on this
 | 
						|
            machine, which is:
 | 
						|
          SUGGESTION: |
 | 
						|
 | 
						|
            To fix it, you can do one of two things:
 | 
						|
            1. Download and apply the patch generated as an artifact of this
 | 
						|
               job to your repo, commit, and push.
 | 
						|
            2. Run 'git-clang-format --extensions cpp,h,hpp,ipp develop'
 | 
						|
               in your repo, commit, and push.
 | 
						|
        run: |
 | 
						|
          echo "${PREAMBLE}"
 | 
						|
          clang-format --version
 | 
						|
          echo "${SUGGESTION}"
 | 
						|
          exit 1
 |