# openpilot development workflow

Aside from the ML models, most tools used for openpilot development are in this repo.

Most development happens on normal Ubuntu workstations, and not in cars or directly on comma devices. See the [setup guide](../tools) for getting your PC setup for openpilot development.

## Quick start

```bash
# get the latest stuff
git pull
git submodule update --init --recursive

# update dependencies
tools/ubuntu_setup.sh

# build everything
scons -j$(nproc)

# build just the ui with either of these
scons -j8 selfdrive/ui/
cd selfdrive/ui/ && scons -u -j8

# test everything
pytest .

# test just logging services
cd system/loggerd && pytest .

# run the linter
pre-commit run --all
```

## Testing

### Automated Testing

All PRs and commits are automatically checked by GitHub Actions. Check out `.github/workflows/` for what GitHub Actions runs. Any new tests should be added to GitHub Actions.

### Code Style and Linting

Code is automatically checked for style by GitHub Actions as part of the automated tests. You can also run these tests yourself by running `pre-commit run --all`.
