| name: "Check code formatting" |
| |
| permissions: |
| contents: read |
| |
| on: |
| pull_request: |
| branches: |
| - main |
| - 'users/**' |
| |
| jobs: |
| code_formatter: |
| runs-on: ubuntu-24.04 |
| timeout-minutes: 30 |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number }} |
| cancel-in-progress: true |
| if: github.repository == 'llvm/llvm-project' |
| steps: |
| - name: Fetch LLVM sources |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 |
| with: |
| fetch-depth: 2 |
| |
| - name: Get changed files |
| id: changed-files |
| uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 |
| with: |
| separator: "," |
| skip_initial_fetch: true |
| base_sha: 'HEAD~1' |
| sha: 'HEAD' |
| |
| - name: "Listed files" |
| env: |
| CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} |
| run: | |
| echo "Formatting files:" |
| echo "$CHANGED_FILES" |
| |
| # The clang format version should always be upgraded to the first version |
| # of a release cycle (x.1.0) or the last version of a release cycle, or |
| # if there have been relevant clang-format backports. |
| - name: Install clang-format |
| uses: aminya/setup-cpp@a276e6e3d1db9160db5edc458e99a30d3b109949 # v1.7.1 |
| with: |
| clangformat: 21.1.0 |
| |
| - name: Setup Python env |
| uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 |
| with: |
| python-version: '3.13' |
| cache: 'pip' |
| cache-dependency-path: 'llvm/utils/git/requirements_formatting.txt' |
| |
| - name: Install python dependencies |
| run: pip install -r llvm/utils/git/requirements_formatting.txt |
| |
| - name: Run code formatter |
| env: |
| GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }} |
| CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} |
| # Create an empty comments file so the pr-write job doesn't fail. |
| run: | |
| echo "[]" > comments && |
| python ./llvm/utils/git/code-format-helper.py \ |
| --write-comment-to-file \ |
| --token ${{ secrets.GITHUB_TOKEN }} \ |
| --issue-number $GITHUB_PR_NUMBER \ |
| --start-rev HEAD~1 \ |
| --end-rev HEAD \ |
| --changed-files "$CHANGED_FILES" |
| |
| - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 |
| if: always() |
| with: |
| name: workflow-args |
| path: | |
| comments |