run_gitlint.yaml 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. name: Run gitlint
  2. on: [pull_request]
  3. jobs:
  4. run_gitlint:
  5. runs-on: ubuntu-20.04
  6. steps:
  7. - name: Checkout source code
  8. uses: actions/checkout@v3
  9. - name: Install gitlint
  10. run: |
  11. sudo apt-get update
  12. sudo apt install gitlint
  13. - name: Set auth header
  14. if: endsWith(github.repository, 'enterprise')
  15. run: |
  16. echo 'AUTH_HEADER<<EOF' >> $GITHUB_ENV
  17. echo "Authorization: token ${{ secrets.CI_GIT_TOKEN }}" >> $GITHUB_ENV
  18. echo 'EOF' >> $GITHUB_ENV
  19. - name: Run gitlint
  20. shell: bash
  21. run: |
  22. pr_number=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')
  23. messages="$(curl --silent --show-error \
  24. --header "${{ env.AUTH_HEADER }}" \
  25. --header "Accept: application/vnd.github.v3+json" \
  26. "https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/${pr_number}/commits")"
  27. len=$(echo $messages | jq length)
  28. result=true
  29. for i in $( seq 0 $(($len - 1)) ); do
  30. message=$(echo $messages | jq -r .[$i].commit.message)
  31. echo "commit message: $message"
  32. status=0
  33. echo $message | gitlint -C ./.github/workflows/.gitlint || status=$?
  34. if [ $status -ne 0 ]; then
  35. result=false
  36. fi
  37. done
  38. if ! ${result} ; then
  39. echo "Some of the commit messages are not structured as The Conventional Commits specification. Please check CONTRIBUTING.md for our process on PR."
  40. exit 1
  41. fi
  42. echo "success"