From f481ebcaa8a50897a4f3a015796e02506da80ffc Mon Sep 17 00:00:00 2001 From: Tatsat Mishra Date: Thu, 25 Apr 2024 23:20:45 +1200 Subject: [PATCH] Initial commit for PR Size Check. Signed-off-by: Tatsat Mishra --- .github/workflows/restrict-pr-size.yml | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/restrict-pr-size.yml diff --git a/.github/workflows/restrict-pr-size.yml b/.github/workflows/restrict-pr-size.yml new file mode 100644 index 000000000..191ce32ed --- /dev/null +++ b/.github/workflows/restrict-pr-size.yml @@ -0,0 +1,54 @@ +name: 'PR Size Checker' +on: + pull_request: + branches: + - main + +env: + MAX_LINE_CHANGED: 1200 # Maximum number of lines changed allowed + TARGET_BRANCH: main + +permissions: + contents: read + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, ubuntu-latest, windows-latest] + permissions: + actions: read + contents: read + deployments: read + packages: none + steps: + # checkout your code with your git history + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - id: get_total_lines_changed + run: | + size=$(git diff --stat origin/${{ env.TARGET_BRANCH }} \ + | grep -v .lock \ + | grep -v Bin \ + | awk -F"|" '{ print $2 }' \ + | awk '{ print $1 }' \ + | sed '/^$/d' \ + | paste -sd+ - \ + | bc) + + echo "size=${size}" >> $GITHUB_ENV + echo "" + echo "Total lines changed (note: *.lock files are excluded from this count): " + echo $size + shell: bash + - run: | + if [[ $size -gt ${{ env.MAX_LINE_CHANGED }} ]] + then + echo "Warning - total lines changed is greater than" ${{ env.MAX_LINE_CHANGED }}. + echo "Please consider breaking this PR down." + exit 1 + fi + shell: bash \ No newline at end of file