name: Compliance on: pull_request jobs: compliance_job: 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 - 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 Codeowners -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 Codeowners.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