diff --git a/.github/workflows/style-checks.yml b/.github/workflows/style-checks.yml new file mode 100644 index 0000000000..7ed843f3ba --- /dev/null +++ b/.github/workflows/style-checks.yml @@ -0,0 +1,55 @@ +# Copyright 2021-2024 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +name: Coding style validation + +on: [pull_request] + +env: + PR_NUMBER: ${{ github.event.number }} + GH_TOKEN: ${{ github.token }} + +permissions: + contents: read + +jobs: + check-style: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + path: openssl + - name: check style for each commit + working-directory: openssl + shell: bash + run: | + ERRORS_FOUND=0 + git fetch origin $GITHUB_BASE_REF:$GITHUB_BASE_REF + REFSTART=$(git rev-parse $GITHUB_BASE_REF) + REFEND=$(git rev-parse HEAD) + echo "Checking from $REFSTART to $REFEND" + for i in $(git log --no-merges --format=%H $REFSTART..$REFEND) + do + echo "::group::Style report for commit $i" + set +e + ./util/check-format-commit.sh $i + if [ $? -ne 0 ] + then + ERRORS_FOUND=1 + fi + set -e + echo "::endgroup::" + done + SKIP_TEST=$(gh pr view $PR_NUMBER --json labels --jq '.labels[] | select(.name == "style: waived") | .name') + if [ -z "$SKIP_TEST" ] + then + exit $ERRORS_FOUND + else + echo "PR $PR_NUMBER is marked with style: waived, waiving style check errors" + exit 0 + fi