values-ascii-check.yml 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # Copyright Broadcom, Inc. All Rights Reserved.
  2. # SPDX-License-Identifier: APACHE-2.0
  3. name: '[CI/CD] Values ASCII validator'
  4. on:
  5. pull_request:
  6. branches:
  7. - main
  8. paths:
  9. - '**/values.yaml'
  10. # Remove all permissions by default
  11. permissions: {}
  12. jobs:
  13. values-ascii:
  14. runs-on: ubuntu-latest
  15. permissions:
  16. contents: read
  17. steps:
  18. - name: Checkout project
  19. uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
  20. - name: Values ASCII validator
  21. env:
  22. DIFF_URL: "${{github.event.pull_request.diff_url}}"
  23. TEMP_FILE: "${{runner.temp}}/pr-${{github.event.number}}.diff"
  24. TEMP_OUTPUT: "${{runner.temp}}/output"
  25. run: |
  26. # This request doesn't consume API calls.
  27. curl -Lkso $TEMP_FILE $DIFF_URL
  28. files_changed="$(sed -nr 's/[\-\+]{3} [ab]\/(.*)/\1/p' $TEMP_FILE | sort | uniq)"
  29. values_files="$(echo "$files_changed" | grep -o ".*values\.yaml$" | sort | uniq || true)"
  30. # Create an empty file, useful when the PR changes ignored files
  31. touch "${TEMP_OUTPUT}"
  32. grep -nHP "[\x80-\xFF]" "${values_files[@]}" | sort -u > ${TEMP_OUTPUT} || true
  33. while read -r line; do
  34. # line format:
  35. # file:row:message
  36. # Split by ':'
  37. readarray -d : -t strarr < <(printf '%s' "$line")
  38. if [[ "${#strarr[@]}" -ge 3 ]]; then
  39. echo "::warning file=${strarr[0]},line=${strarr[1]}:: Non ASCII character in '${strarr[@]:2}'"
  40. else
  41. echo "::warning:: Error processing: ${line}"
  42. fi
  43. done < "${TEMP_OUTPUT}"
  44. if [[ -s ${TEMP_OUTPUT} ]]; then
  45. echo "::error:: Please review warning messages"
  46. exit 1
  47. fi