Skip to content

GitHub: workflows: Sync up with what upstream is doing #256

GitHub: workflows: Sync up with what upstream is doing

GitHub: workflows: Sync up with what upstream is doing #256

Workflow file for this run

name: Compliance
on:
pull_request:
types:
- edited
- opened
- reopened
- synchronize
jobs:
compliance:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
path: zephyr-silabs
- name: Rebase onto the target branch
env:
BASE_REF: ${{ github.base_ref }}
working-directory: zephyr-silabs/zephyr
run: |
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
git remote -v
# Ensure there's no merge commits in the PR
[[ "$(git rev-list --merges --count origin/${BASE_REF}..)" == "0" ]] || \
(echo "::error ::Merge commits not allowed, rebase instead";false)
rm -fr ".git/rebase-apply"
rm -fr ".git/rebase-merge"
git rebase origin/${BASE_REF}
git clean -f -d
# debug
git log --pretty=oneline | head -n 10
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.13
- name: Setup Zephyr project
uses: zephyrproject-rtos/action-zephyr-setup@v1
with:
app-path: zephyr-silabs
toolchains: arm-zephyr-eabi
- name: Install compliance-specific python dependencies
run: |
export ZEPHYR_BASE="$(dirname "$(pwd)")/zephyr"
pip3 install -r $ZEPHYR_BASE/scripts/requirements-compliance.txt
- name: Run Compliance Tests
continue-on-error: true
id: compliance
working-directory: zephyr-silabs
run: |
export ZEPHYR_BASE="$(dirname "$(pwd)")/zephyr"
$ZEPHYR_BASE/scripts/ci/check_compliance.py --annotate -c origin/${GITHUB_BASE_REF}..
- name: upload-results
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: compliance.xml
path: zephyr-silabs/compliance.xml
- name: check-warns
working-directory: zephyr-silabs
run: |
export ZEPHYR_BASE="$(dirname "$(pwd)")/zephyr"
if [[ ! -s "compliance.xml" ]]; then
exit 1;
fi
warns=("ClangFormat")
files=($($ZEPHYR_BASE/scripts/ci/check_compliance.py -l))
for file in "${files[@]}"; do
f="${file}.txt"
if [[ -s $f ]]; then
results=$(cat $f)
results="${results//'%'/'%25'}"
results="${results//$'\n'/'%0A'}"
results="${results//$'\r'/'%0D'}"
if [[ "${warns[@]}" =~ "${file}" ]]; then
echo "::warning file=${f}::$results"
else
echo "::error file=${f}::$results"
exit=1
fi
fi
done
if [ "${exit}" == "1" ]; then
echo "Compliance error, check for error messages in the \"Run Compliance Tests\" step"
echo "You can run this step locally with the ./scripts/ci/check_compliance.py script."
exit 1;
fi