Files
opendbc/.github/workflows/tests.yml
Adeeb Shihadeh ddeba888a3 try no scons (#3194)
* try no scons

* lil more

* lil more

* lazy

* fix ty
2026-03-11 11:23:38 -07:00

131 lines
4.7 KiB
YAML

name: tests
on:
push:
branches:
- master
pull_request:
jobs:
tests:
name: ./test.sh
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ${{ github.repository == 'commaai/opendbc' && 'namespace-profile-amd64-8x16' || 'ubuntu-24.04' }}
- os: ${{ github.repository == 'commaai/opendbc' && 'namespace-profile-macos-8x14' || 'macos-latest' }}
steps:
- uses: actions/checkout@v4
- uses: commaai/timeout@v1
with:
timeout: ${{ github.repository == 'commaai/opendbc' && '90' || '999' }}
- run: ./test.sh
safety_tests:
name: safety
runs-on: ${{ github.repository == 'commaai/opendbc' && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }}
steps:
- uses: commaai/timeout@v1
with:
timeout: ${{ github.repository == 'commaai/opendbc' && '60' || '999' }}
- uses: actions/checkout@v4
- name: Run safety tests
run: ./opendbc/safety/tests/test.sh
mutation:
name: Safety mutation tests
runs-on: ${{ matrix.os }}
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
include:
- os: ${{ github.repository == 'commaai/opendbc' && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }}
- os: ${{ github.repository == 'commaai/opendbc' && 'namespace-profile-macos-8x14' || 'macos-latest' }}
steps:
- uses: actions/checkout@v4
- name: Run mutation tests
run: |
source setup.sh
python opendbc/safety/tests/mutation.py
car_diff:
name: car diff
runs-on: ${{ github.repository == 'commaai/opendbc' && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }}
env:
GIT_REF: ${{ github.event_name == 'push' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) && github.event.before || format('origin/{0}', github.event.repository.default_branch) }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Test car diff
if: github.event_name == 'pull_request'
run: source setup.sh && python opendbc/car/tests/car_diff.py | tee diff.txt
- name: Upload diff
if: always() && github.event_name == 'pull_request'
uses: actions/upload-artifact@v4
with:
name: car_diff_${{ github.event.number }}
path: diff.txt
- name: Update refs
if: github.repository == 'commaai/opendbc' && github.ref == 'refs/heads/master'
run: source setup.sh && python opendbc/car/tests/car_diff.py --update-refs
- name: Checkout ci-artifacts
if: github.repository == 'commaai/opendbc' && github.ref == 'refs/heads/master'
uses: actions/checkout@v4
with:
repository: commaai/ci-artifacts
ssh-key: ${{ secrets.CI_ARTIFACTS_DEPLOY_KEY }}
path: ${{ github.workspace }}/ci-artifacts
- name: Push refs
if: github.repository == 'commaai/opendbc' && github.ref == 'refs/heads/master'
working-directory: ${{ github.workspace }}/ci-artifacts
run: |
ls ${{ github.workspace }}/car_diff/*.zst 2>/dev/null || exit 0
git config user.name "GitHub Actions Bot"
git config user.email "<>"
git fetch origin car_diff || true
git checkout car_diff 2>/dev/null || git checkout --orphan car_diff
cp ${{ github.workspace }}/car_diff/*.zst .
git add *.zst
git commit -m "car_diff refs for ${{ github.sha }}" || echo "No changes to commit"
git push origin car_diff
# TODO: this needs to move to opendbc
test_models:
name: test models
runs-on: ${{ github.repository == 'commaai/opendbc' && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }}
strategy:
fail-fast: false
matrix:
job: [0, 1, 2, 3]
env:
CI: 1
steps:
- uses: actions/checkout@v4
with:
repository: 'commaai/openpilot'
ref: 'master'
submodules: true
- run: rm -rf opendbc_repo/
- uses: actions/checkout@v4
with:
path: opendbc_repo
- run: ./tools/op.sh setup
- name: Cache test routes
id: routes-cache
uses: actions/cache@v4
with:
path: /tmp/comma_download_cache
key: car_models-${{ hashFiles('selfdrive/car/tests/test_models.py', 'opendbc/car/tests/routes.py') }}-${{ matrix.job }}
- name: Build openpilot
run: scons -j$(nproc) common/ cereal/ selfdrive/pandad/ msgq_repo/ opendbc_repo
- name: Test car models
timeout-minutes: ${{ contains(runner.name, 'nsc') && (steps.routes-cache.outputs.cache-hit == 'true') && 2 || 6 }}
run: MAX_EXAMPLES=1 pytest --continue-on-collection-errors --durations=0 --durations-min=5 -n logical selfdrive/car/tests/test_models.py
env:
NUM_JOBS: 4
JOB_ID: ${{ matrix.job }}