| name: Compliance Checks |
| |
| on: pull_request |
| |
| jobs: |
| maintainer_check: |
| runs-on: ubuntu-latest |
| name: Check MAINTAINERS file |
| steps: |
| - name: Checkout the code |
| uses: actions/checkout@v2 |
| with: |
| ref: ${{ github.event.pull_request.head.sha }} |
| fetch-depth: 0 |
| - name: Run Maintainers Script |
| id: maintainer |
| env: |
| BASE_REF: ${{ github.base_ref }} |
| run: | |
| python3 ./scripts/get_maintainer.py path CMakeLists.txt |
| |
| check_compliance: |
| runs-on: ubuntu-latest |
| name: Run compliance checks on patch series (PR) |
| steps: |
| - name: Update PATH for west |
| run: | |
| echo "$HOME/.local/bin" >> $GITHUB_PATH |
| |
| - name: Checkout the code |
| uses: actions/checkout@v2 |
| with: |
| ref: ${{ github.event.pull_request.head.sha }} |
| fetch-depth: 0 |
| |
| - name: cache-pip |
| uses: actions/cache@v1 |
| with: |
| path: ~/.cache/pip |
| key: ${{ runner.os }}-doc-pip |
| |
| - name: Install python dependencies |
| run: | |
| pip3 install setuptools |
| pip3 install wheel |
| pip3 install python-magic junitparser==1.6.3 gitlint pylint pykwalify |
| pip3 install west |
| |
| - name: west setup |
| env: |
| BASE_REF: ${{ github.base_ref }} |
| run: | |
| git config --global user.email "you@example.com" |
| git config --global user.name "Your Name" |
| git remote -v |
| git rebase origin/${BASE_REF} |
| # debug |
| git log --pretty=oneline | head -n 10 |
| west init -l . || true |
| west update 2>&1 1> west.update.log || west update 2>&1 1> west.update2.log |
| |
| - name: Run Compliance Tests |
| continue-on-error: true |
| id: compliance |
| env: |
| BASE_REF: ${{ github.base_ref }} |
| run: | |
| export ZEPHYR_BASE=$PWD |
| # debug |
| ls -la |
| git log --pretty=oneline | head -n 10 |
| ./scripts/ci/check_compliance.py -m Devicetree -m Gitlint -m Identity -m Nits -m pylint -m checkpatch -m Kconfig -c origin/${BASE_REF}.. |
| |
| - name: upload-results |
| uses: actions/upload-artifact@master |
| continue-on-error: True |
| with: |
| name: compliance.xml |
| path: compliance.xml |
| |
| - name: check-warns |
| run: | |
| if [[ ! -s "compliance.xml" ]]; then |
| exit 1; |
| fi |
| |
| for file in Nits.txt checkpatch.txt Identity.txt Gitlint.txt pylint.txt Devicetree.txt Kconfig.txt; do |
| if [[ -s $file ]]; then |
| errors=$(cat $file) |
| errors="${errors//'%'/'%25'}" |
| errors="${errors//$'\n'/'%0A'}" |
| errors="${errors//$'\r'/'%0D'}" |
| echo "::error file=${file}::$errors" |
| exit=1 |
| fi |
| done |
| |
| if [ "${exit}" == "1" ]; then |
| exit 1; |
| fi |