llvm-project/.github/workflows/pr-code-format.yml
Aiden Grossman e764e190ee
[Github] Remove separate tools checkout from pr-code workflows (#159967)
These separate checkouts I believe were originally carried over from
when we were using pull_request_target. We needed two checkouts to
ensure we were not executing user supplied code. We kept them to ensure
we were using the latest version of the tools, but this was born mostly
out of a misunderstanding of how Github Actions works. All PRs directly
against main are executed as if merged into main, so already are using
the latest version of the tools no matter the branch point. Stacked PRs
still need to be rebased for changes to propagate but these files have
been pretty stable for the past two years or so and I can't imagine any
changes needed to keep things running on release/stacked PR branches.
2025-09-21 11:26:56 -07:00

81 lines
2.5 KiB
YAML

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@17c11551771948abc5752bbf3183482567c7caf0 # v1.1.1
with:
clangformat: 21.1.0
- name: Setup Python env
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
with:
python-version: '3.11'
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@26f96dfa697d77e81fd5907df203aa23a56210a8 #v4.3.0
if: always()
with:
name: workflow-args
path: |
comments