mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-07-14 17:42:08 +08:00
85 lines
3.0 KiB
YAML
85 lines
3.0 KiB
YAML
name: cereal validation
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
paths:
|
|
- 'cereal/**'
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
inputs:
|
|
run_number:
|
|
default: '1'
|
|
required: true
|
|
type: string
|
|
|
|
concurrency:
|
|
group: cereal-validation-ci-run-${{ inputs.run_number }}-${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && github.run_id || github.head_ref || github.ref }}-${{ github.workflow }}-${{ github.event_name }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
CI: 1
|
|
|
|
jobs:
|
|
validate_cereal_with_upstream:
|
|
name: Validate cereal with Upstream
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- name: Checkout sunnypilot cereal
|
|
uses: actions/checkout@v6
|
|
with:
|
|
sparse-checkout: cereal
|
|
|
|
- name: Init sunnypilot opendbc submodule
|
|
run: git submodule update --init --depth 1 opendbc_repo
|
|
|
|
- name: Checkout upstream openpilot
|
|
uses: actions/checkout@v6
|
|
with:
|
|
repository: 'commaai/openpilot'
|
|
path: upstream_openpilot
|
|
ref: "refs/heads/master"
|
|
|
|
- name: Init upstream opendbc submodule
|
|
working-directory: upstream_openpilot
|
|
run: git submodule update --init --depth 1 opendbc_repo
|
|
|
|
- name: Locate upstream capnp paths
|
|
id: locate-capnp
|
|
run: |
|
|
CEREAL_DIR=$(find upstream_openpilot -maxdepth 4 -name log.capnp -path '*/cereal/log.capnp' -printf '%h\n' -quit)
|
|
if [ -z "$CEREAL_DIR" ]; then
|
|
echo "::error::Could not locate cereal/log.capnp in upstream openpilot"
|
|
exit 1
|
|
fi
|
|
echo "cereal_dir=$CEREAL_DIR" >> "$GITHUB_OUTPUT"
|
|
echo "Found upstream cereal at: $CEREAL_DIR"
|
|
|
|
IMPORT_ARGS=""
|
|
CAR_CAPNP=$(find upstream_openpilot -maxdepth 5 -name car.capnp -path '*/opendbc/car/car.capnp' -printf '%h\n' -quit)
|
|
if [ -n "$CAR_CAPNP" ]; then
|
|
IMPORT_ARGS="-I $CAR_CAPNP"
|
|
echo "Found car.capnp at: $CAR_CAPNP"
|
|
fi
|
|
echo "import_args=$IMPORT_ARGS" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Install uv
|
|
run: pip install uv
|
|
|
|
- name: Generate sunnypilot schema
|
|
run: |
|
|
PYCAPNP_VER=$(python3 -c "import re; m=re.search(r'name = \"pycapnp\"\nversion = \"([^\"]+)\"', open('uv.lock').read()); print(m.group(1))")
|
|
uv run --isolated --with "pycapnp==${PYCAPNP_VER}" \
|
|
python3 cereal/messaging/tests/validate_sp_cereal_upstream.py \
|
|
-g -f /tmp/sp_schema.json --cereal-dir cereal
|
|
|
|
- name: Validate against upstream
|
|
run: |
|
|
PYCAPNP_VER=$(python3 -c "import re; m=re.search(r'name = \"pycapnp\"\nversion = \"([^\"]+)\"', open('uv.lock').read()); print(m.group(1))")
|
|
uv run --isolated --with "pycapnp==${PYCAPNP_VER}" \
|
|
python3 cereal/messaging/tests/validate_sp_cereal_upstream.py \
|
|
-r -f /tmp/sp_schema.json --cereal-dir ${{ steps.locate-capnp.outputs.cereal_dir }} \
|
|
${{ steps.locate-capnp.outputs.import_args }}
|