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
|