mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 12:23:53 +08:00
* test failure()
* let's just change a tune here
* debug
revert
* debug
* use current commit, not ref_commit
fix
* need to figure out better place for this
* quick test
* test without upload
* temp
* use azure token
* fixes
* shouldn't need this
* debug
* debug
* not getting anything?
* does this mean nothing gets envvars?
* add azure token to docker environment variables
* quote
* move back
* clean up a bit
* more clean up
* like this sorting better
* replace flags with CI and clean up
* test FULL_TEST and minimalize diff a bit
* now test all
* revert tests comments
* remove flags
* revert this
revert this
* now make it fail
* now update ref_commit to last commit (make sure we can re-start this test if we commit before last one finishes uploading)
* fix
fix
fix
fix
* bad commit
* why is it not throwing an exception?
* debug
* URLFile returns empty bytes if using cache and remote file doesn't exist
* we always need to download anyway
* debug...
* duh, wrong file. but neither should have it
* add that back and just check explicitly
* check both
* clean up and make a diff
* stylize
* see if this is a better diff on files changed
* update refs
* revert changes
* only for owners or members
* if we have token access
* if we have token access
* if we have token access
* move up
* clean up
* revert
* move update refs to test_processes
* clean up
* update messages
* update msg
* update README and delete update_refs
* this isn't possible to reach anymore
* fix readme
* better help message
better help message
better help message
* only show basename when uploading, only if failed to find
* test diff
* fix printing old ref commit
* change to using
* update refs
* Revert "update refs"
This reverts commit 2e352a736a6de68e2c7064daa4e2e9409ce77686.
* revert
* ref refers to reference commit/logs, cur refers to current logs/commit (future ref)
* like for better
* Apply suggestions from code review
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
* Update selfdrive/test/process_replay/test_processes.py
* every time lol
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: d2d3b7b823
452 lines
16 KiB
YAML
452 lines
16 KiB
YAML
name: selfdrive
|
|
on:
|
|
push:
|
|
branches-ignore:
|
|
- 'testing-closet*'
|
|
pull_request:
|
|
|
|
env:
|
|
BASE_IMAGE: openpilot-base
|
|
DOCKER_REGISTRY: ghcr.io/commaai
|
|
AZURE_TOKEN: ${{ secrets.AZURE_COMMADATACI_OPENPILOTCI_TOKEN }}
|
|
|
|
DOCKER_LOGIN: docker login ghcr.io -u adeebshihadeh -p ${{ secrets.CONTAINER_TOKEN }}
|
|
BUILD: |
|
|
docker pull $(grep -iohP '(?<=^from)\s+\S+' Dockerfile.openpilot_base) || true
|
|
docker pull $DOCKER_REGISTRY/$BASE_IMAGE:latest || true
|
|
docker build --cache-from $DOCKER_REGISTRY/$BASE_IMAGE:latest -t $DOCKER_REGISTRY/$BASE_IMAGE:latest -t $BASE_IMAGE:latest -f Dockerfile.openpilot_base .
|
|
|
|
RUN: docker run --shm-size 1G -v $PWD:/tmp/openpilot -w /tmp/openpilot -e PYTHONPATH=/tmp/openpilot -e NUM_JOBS -e JOB_ID -e GITHUB_ACTION -e GITHUB_REF -e GITHUB_HEAD_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_RUN_ID -v /tmp/scons_cache:/tmp/scons_cache -v /tmp/comma_download_cache:/tmp/comma_download_cache $BASE_IMAGE /bin/sh -c
|
|
UNIT_TEST: coverage run --append -m unittest discover
|
|
|
|
jobs:
|
|
# TODO: once actions/cache supports read only mode, use the cache for all jobs
|
|
build_release:
|
|
name: build release
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
env:
|
|
STRIPPED_DIR: tmppilot
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Check submodules
|
|
if: github.ref == 'refs/heads/master' && github.repository == 'commaai/openpilot'
|
|
run: release/check-submodules.sh
|
|
- name: Cache scons
|
|
id: scons-cache
|
|
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
|
|
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
|
|
env:
|
|
CACHE_SKIP_SAVE: true
|
|
with:
|
|
path: /tmp/scons_cache
|
|
key: scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
restore-keys: |
|
|
scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
scons-
|
|
- name: Strip non-release files
|
|
run: |
|
|
mkdir $STRIPPED_DIR
|
|
cp -pR --parents $(cat release/files_common) $STRIPPED_DIR
|
|
cp -pR --parents $(cat release/files_tici) $STRIPPED_DIR
|
|
cp -pR --parents $(cat release/files_pc) $STRIPPED_DIR
|
|
cp Dockerfile.openpilot_base $STRIPPED_DIR
|
|
|
|
# need this to build on x86
|
|
cp -pR --parents third_party/libyuv third_party/snpe selfdrive/modeld/runners $STRIPPED_DIR
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: Build openpilot and run checks
|
|
run: |
|
|
cd $STRIPPED_DIR
|
|
${{ env.RUN }} "CI=1 python selfdrive/manager/build.py && \
|
|
python -m unittest discover selfdrive/car"
|
|
- name: Cleanup scons cache
|
|
run: |
|
|
cd $STRIPPED_DIR
|
|
${{ env.RUN }} "scons -j$(nproc) && \
|
|
rm -rf /tmp/scons_cache/* && \
|
|
scons -j$(nproc) --cache-populate"
|
|
|
|
build_all:
|
|
name: build all
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: Build openpilot with all flags
|
|
run: ${{ env.RUN }} "scons -j$(nproc) --extras --test"
|
|
|
|
#build_mac:
|
|
# name: build macos
|
|
# runs-on: macos-latest
|
|
# timeout-minutes: 60
|
|
# steps:
|
|
# - uses: actions/checkout@v2
|
|
# with:
|
|
# submodules: true
|
|
# - name: Determine pre-existing Homebrew packages
|
|
# if: steps.dependency-cache.outputs.cache-hit != 'true'
|
|
# run: |
|
|
# echo 'EXISTING_CELLAR<<EOF' >> $GITHUB_ENV
|
|
# ls -1 /usr/local/Cellar >> $GITHUB_ENV
|
|
# echo 'EOF' >> $GITHUB_ENV
|
|
# - name: Cache dependencies
|
|
# id: dependency-cache
|
|
# uses: actions/cache@v2
|
|
# with:
|
|
# path: |
|
|
# ~/.pyenv
|
|
# ~/.local/share/virtualenvs/
|
|
# /usr/local/Cellar
|
|
# ~/github_brew_cache_entries.txt
|
|
# /tmp/scons_cache
|
|
# key: macos-${{ hashFiles('tools/mac_setup.sh', 'update_requirements.sh', 'Pipfile*') }}
|
|
# restore-keys: macos-
|
|
# - name: Brew link restored dependencies
|
|
# run: |
|
|
# if [ -f ~/github_brew_cache_entries.txt ]; then
|
|
# while read pkg; do
|
|
# brew link --force "$pkg" # `--force` for keg-only packages
|
|
# done < ~/github_brew_cache_entries.txt
|
|
# else
|
|
# echo "Cache entries not found"
|
|
# fi
|
|
# - name: Install dependencies
|
|
# run: ./tools/mac_setup.sh
|
|
# - name: Build openpilot
|
|
# run: |
|
|
# source tools/openpilot_env.sh
|
|
# pipenv run selfdrive/manager/build.py
|
|
#
|
|
# # cleanup scons cache
|
|
# rm -rf /tmp/scons_cache/
|
|
# pipenv run scons -j$(nproc) --cache-populate
|
|
# - name: Remove pre-existing Homebrew packages for caching
|
|
# if: steps.dependency-cache.outputs.cache-hit != 'true'
|
|
# run: |
|
|
# cd /usr/local/Cellar
|
|
# new_cellar=$(ls -1)
|
|
# comm -12 <(echo "$EXISTING_CELLAR") <(echo "$new_cellar") | while read pkg; do
|
|
# if [[ $pkg != "zstd" ]]; then # caching step needs zstd
|
|
# rm -rf "$pkg"
|
|
# fi
|
|
# done
|
|
# comm -13 <(echo "$EXISTING_CELLAR") <(echo "$new_cellar") | tee ~/github_brew_cache_entries.txt
|
|
|
|
build_webcam:
|
|
name: build webcam
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 90
|
|
env:
|
|
IMAGE_NAME: openpilotwebcamci
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Build Docker image
|
|
run: |
|
|
eval "$BUILD"
|
|
docker pull $DOCKER_REGISTRY/$IMAGE_NAME:latest || true
|
|
docker build --cache-from $DOCKER_REGISTRY/$IMAGE_NAME:latest -t $DOCKER_REGISTRY/$IMAGE_NAME:latest -f tools/webcam/Dockerfile .
|
|
- name: Build openpilot
|
|
run: docker run --shm-size 1G --rm -v $PWD:/tmp/openpilot -e PYTHONPATH=/tmp/openpilot $DOCKER_REGISTRY/$IMAGE_NAME /bin/sh -c "cd /tmp/openpilot && USE_WEBCAM=1 scons -j$(nproc)"
|
|
- name: Push to container registry
|
|
if: github.ref == 'refs/heads/master' && github.repository == 'commaai/openpilot'
|
|
run: |
|
|
$DOCKER_LOGIN
|
|
docker push $DOCKER_REGISTRY/$IMAGE_NAME:latest
|
|
|
|
docker_push:
|
|
name: docker push
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot'
|
|
needs: static_analysis # hack to ensure slow tests run first since this and static_analysis are fast
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: Push to container registry
|
|
run: |
|
|
$DOCKER_LOGIN
|
|
docker push $DOCKER_REGISTRY/$BASE_IMAGE:latest
|
|
|
|
static_analysis:
|
|
name: static analysis
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: pre-commit
|
|
run: ${{ env.RUN }} "git init && git add -A && pre-commit run --all"
|
|
|
|
valgrind:
|
|
name: valgrind
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Cache dependencies
|
|
id: dependency-cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: /tmp/comma_download_cache
|
|
key: ${{ hashFiles('.github/workflows/selfdrive_tests.yaml', 'selfdrive/test/test_valgrind_replay.py') }}
|
|
- name: Cache scons
|
|
id: scons-cache
|
|
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
|
|
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
|
|
env:
|
|
CACHE_SKIP_SAVE: true
|
|
with:
|
|
path: /tmp/scons_cache
|
|
key: scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
restore-keys: |
|
|
scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
scons-
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: Run valgrind
|
|
run: |
|
|
${{ env.RUN }} "scons -j$(nproc) && \
|
|
FILEREADER_CACHE=1 python selfdrive/test/test_valgrind_replay.py"
|
|
- name: Print logs
|
|
if: always()
|
|
run: cat selfdrive/test/valgrind_logs.txt
|
|
|
|
unit_tests:
|
|
name: unit tests
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
steps:
|
|
- name: Get current date
|
|
id: date
|
|
run: echo "::set-output name=time::$(date +'%s')"
|
|
- name: Output timestamp
|
|
run: echo $TIMESTAMP
|
|
env:
|
|
TIMESTAMP: ${{ steps.date.outputs.time }}
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Cache scons
|
|
id: scons-cache
|
|
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
|
|
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
|
|
env:
|
|
CACHE_SKIP_SAVE: ${{ github.ref != 'refs/heads/master' || github.repository != 'commaai/openpilot' }}
|
|
with:
|
|
path: /tmp/scons_cache
|
|
key: scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-${{ steps.date.outputs.time }}
|
|
restore-keys: scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: Run unit tests
|
|
run: |
|
|
${{ env.RUN }} "export SKIP_LONG_TESTS=1 && \
|
|
scons -j$(nproc) --test && \
|
|
$UNIT_TEST common && \
|
|
$UNIT_TEST opendbc/can && \
|
|
$UNIT_TEST selfdrive/boardd && \
|
|
$UNIT_TEST selfdrive/controls && \
|
|
$UNIT_TEST selfdrive/monitoring && \
|
|
$UNIT_TEST selfdrive/loggerd && \
|
|
$UNIT_TEST selfdrive/car && \
|
|
$UNIT_TEST selfdrive/locationd && \
|
|
$UNIT_TEST selfdrive/athena && \
|
|
$UNIT_TEST selfdrive/thermald && \
|
|
$UNIT_TEST selfdrive/hardware/tici && \
|
|
$UNIT_TEST selfdrive/modeld && \
|
|
$UNIT_TEST tools/lib/tests && \
|
|
./selfdrive/boardd/tests/test_boardd_usbprotocol && \
|
|
./selfdrive/common/tests/test_util && \
|
|
./selfdrive/common/tests/test_swaglog && \
|
|
./selfdrive/loggerd/tests/test_logger &&\
|
|
./selfdrive/proclogd/tests/test_proclog && \
|
|
./selfdrive/ui/replay/tests/test_replay && \
|
|
./selfdrive/camerad/test/ae_gray_test && \
|
|
coverage xml"
|
|
- name: "Upload coverage to Codecov"
|
|
uses: codecov/codecov-action@v2
|
|
|
|
process_replay:
|
|
name: process replay
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Cache dependencies
|
|
id: dependency-cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: /tmp/comma_download_cache
|
|
key: ${{ hashFiles('.github/workflows/selfdrive_tests.yaml', 'selfdrive/test/process_replay/test_processes.py') }}
|
|
- name: Cache scons
|
|
id: scons-cache
|
|
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
|
|
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
|
|
env:
|
|
CACHE_SKIP_SAVE: true
|
|
with:
|
|
path: /tmp/scons_cache
|
|
key: scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
restore-keys: |
|
|
scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
scons-
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: Run replay
|
|
run: |
|
|
${{ env.RUN }} "scons -j$(nproc) && \
|
|
FILEREADER_CACHE=1 CI=1 coverage run selfdrive/test/process_replay/test_processes.py && \
|
|
coverage xml"
|
|
- name: Upload reference logs
|
|
if: ${{ failure() && github.event_name == 'pull_request' && github.repository == 'commaai/openpilot' && env.AZURE_TOKEN != '' }}
|
|
run: |
|
|
${{ env.RUN }} "scons -j$(nproc) && \
|
|
CI=1 AZURE_TOKEN='$AZURE_TOKEN' python selfdrive/test/process_replay/test_processes.py --upload-only"
|
|
- name: "Upload coverage to Codecov"
|
|
uses: codecov/codecov-action@v2
|
|
- name: Print diff
|
|
if: always()
|
|
run: cat selfdrive/test/process_replay/diff.txt
|
|
- uses: actions/upload-artifact@v2
|
|
if: always()
|
|
continue-on-error: true
|
|
with:
|
|
name: process_replay_diff.txt
|
|
path: selfdrive/test/process_replay/diff.txt
|
|
|
|
#model_replay:
|
|
# name: model replay
|
|
# runs-on: ubuntu-20.04
|
|
# timeout-minutes: 50
|
|
# steps:
|
|
# - uses: actions/checkout@v2
|
|
# with:
|
|
# submodules: true
|
|
# - name: Build Docker image
|
|
# run: eval "$BUILD"
|
|
# - name: Run replay
|
|
# run: |
|
|
# ${{ env.RUN }} "scons -j$(nproc) && \
|
|
# selfdrive/test/process_replay/model_replay.py"
|
|
|
|
test_longitudinal:
|
|
name: longitudinal
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Cache scons
|
|
id: scons-cache
|
|
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
|
|
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
|
|
env:
|
|
CACHE_SKIP_SAVE: true
|
|
with:
|
|
path: /tmp/scons_cache
|
|
key: scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
restore-keys: |
|
|
scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
scons-
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: Test longitudinal
|
|
run: |
|
|
${{ env.RUN }} "mkdir -p selfdrive/test/out && \
|
|
scons -j$(nproc) && \
|
|
cd selfdrive/test/longitudinal_maneuvers && \
|
|
coverage run ./test_longitudinal.py && \
|
|
coverage xml"
|
|
- name: "Upload coverage to Codecov"
|
|
uses: codecov/codecov-action@v2
|
|
- uses: actions/upload-artifact@v2
|
|
if: always()
|
|
continue-on-error: true
|
|
with:
|
|
name: longitudinal
|
|
path: selfdrive/test/longitudinal_maneuvers/out/longitudinal/
|
|
|
|
test_cars:
|
|
name: cars
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
job: [0, 1, 2, 3]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Cache dependencies
|
|
id: dependency-cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: /tmp/comma_download_cache
|
|
key: car_models-${{ hashFiles('selfdrive/car/tests/test_models.py', 'selfdrive/car/tests/routes.py') }}-${{ matrix.job }}
|
|
- name: Cache scons
|
|
id: scons-cache
|
|
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged.
|
|
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b
|
|
env:
|
|
CACHE_SKIP_SAVE: true
|
|
with:
|
|
path: /tmp/scons_cache
|
|
key: scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
restore-keys: |
|
|
scons-${{ hashFiles('.github/workflows/selfdrive_tests.yaml') }}-
|
|
scons-
|
|
- name: Build Docker image
|
|
run: eval "$BUILD"
|
|
- name: Test car models
|
|
run: |
|
|
${{ env.RUN }} "scons -j$(nproc) --test && \
|
|
FILEREADER_CACHE=1 coverage run -m pytest selfdrive/car/tests/test_models.py && \
|
|
coverage xml && \
|
|
chmod -R 777 /tmp/comma_download_cache"
|
|
env:
|
|
NUM_JOBS: 4
|
|
JOB_ID: ${{ matrix.job }}
|
|
- name: "Upload coverage to Codecov"
|
|
uses: codecov/codecov-action@v2
|
|
|
|
docs:
|
|
name: build docs
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 50
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Build docker container
|
|
run: |
|
|
docker pull $DOCKER_REGISTRY/$BASE_IMAGE:latest || true
|
|
docker pull $DOCKER_REGISTRY/openpilot-docs:latest || true
|
|
DOCKER_BUILDKIT=1 docker build --cache-from $DOCKER_REGISTRY/openpilot-docs:latest -t $DOCKER_REGISTRY/openpilot-docs:latest -f docs/docker/Dockerfile .
|
|
- name: Push docker container
|
|
if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot'
|
|
run: |
|
|
$DOCKER_LOGIN
|
|
docker push $DOCKER_REGISTRY/openpilot-docs:latest
|