Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
b5c7834
bring changes over from skj/toolchain
kevinjin0420 Jun 20, 2026
d8990d8
whoops dont track that
kevinjin0420 Jun 20, 2026
100b758
gitignore
kevinjin0420 Jun 20, 2026
682bcb8
revert to old image
kevinjin0420 Jun 20, 2026
b5ff33f
remove files that shouldnt be tracked here
kevinjin0420 Jun 20, 2026
595aa48
main's build job
kevinjin0420 Jun 20, 2026
b208a3a
min diff
kevinjin0420 Jun 20, 2026
8e72584
min diff on ci yml
kevinjin0420 Jun 20, 2026
187eee5
remove unnecessary packages
kevinjin0420 Jun 20, 2026
f9b20b3
just take main's dockerfile
kevinjin0420 Jun 21, 2026
87b7137
clean up setup_dawn
kevinjin0420 Jun 21, 2026
20efece
manif will never be found as sys package, fetch and reference directly
kevinjin0420 Jun 21, 2026
ab329d1
llvm repos to https
kevinjin0420 Jun 21, 2026
d24500a
clarifying comment
kevinjin0420 Jun 21, 2026
daea5a6
style
kevinjin0420 Jun 21, 2026
1b4703e
trailing space is crazy
kevinjin0420 Jun 21, 2026
e5b8572
fetch newest imgui and remove tracking
kevinjin0420 Jun 21, 2026
7e27299
revert glfw_pointer changes
kevinjin0420 Jun 21, 2026
7a4531d
comments more concise on sim gui changes
kevinjin0420 Jun 21, 2026
96c9604
sim render cpp cleanup
kevinjin0420 Jun 21, 2026
7261d58
remove build scripts, bring CI changes over to build role
kevinjin0420 Jun 21, 2026
791905e
remove break system packages opt for build ansible
kevinjin0420 Jun 21, 2026
9122cc4
move setup_dawn to scripts/
kevinjin0420 Jun 22, 2026
7ee526f
remove build_ci
kevinjin0420 Jun 22, 2026
996ad79
remove commented out build_ci reference from workflow
kevinjin0420 Jun 22, 2026
34bbae1
remove dockerignore
kevinjin0420 Jun 22, 2026
790af81
remove unused packages
kevinjin0420 Jun 22, 2026
3fac44c
explicitly pin manifpy to 0.0.5 to align with cpp
kevinjin0420 Jun 22, 2026
1bb8ff7
set disconnected to disable git fetch, save restore on BUILD_TESTING,…
kevinjin0420 Jun 22, 2026
11a72e1
return keyware
kevinjin0420 Jun 22, 2026
b866949
update dawn script to align with fork
kevinjin0420 Jun 25, 2026
1655521
dont build sim on jetson
kevinjin0420 Jul 4, 2026
99cd4a8
make MROVER_JETSON a plain var so its not cached
kevinjin0420 Jul 10, 2026
72a8c43
jazzy and ubuntu 24 migration
kevinjin0420 Jul 10, 2026
9d679f0
fix wrongly ported ansible naming
kevinjin0420 Jul 11, 2026
f2eb87d
clean up comment, remove unused scope
kevinjin0420 Jul 11, 2026
147479a
switch to google's dawn release so we dont rack up 150 in CI costs
kevinjin0420 Jul 11, 2026
5d3ca24
dawn match exact commit hash
kevinjin0420 Jul 11, 2026
5e22a19
mrover_repo naming update in prep for pixi
kevinjin0420 Jul 11, 2026
3a659c9
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 3, 2026
1d05c13
main's cmakelists
kevinjin0420 Aug 3, 2026
a4fab0b
allow bytes unused
kevinjin0420 Aug 3, 2026
b8518f0
qt5 to 6 migration
kevinjin0420 Aug 3, 2026
688d602
adapt bootstrap for new structure
kevinjin0420 Aug 4, 2026
d401546
update clean.sh for new arch
kevinjin0420 Aug 4, 2026
99895f9
esw fixes to make it compile under gcc 13
kevinjin0420 Aug 4, 2026
e3504e3
Merge branch 'skj/ubuntu24-native' of github.com:umrover/mrover-ros2 …
kevinjin0420 Aug 4, 2026
e4a504f
modify build script to use clang-tidy on ci
kevinjin0420 Aug 4, 2026
2571619
named deleter for glfw pointer fix
kevinjin0420 Aug 4, 2026
549e3fa
Merge branch 'skj/ubuntu24-native' of github.com:umrover/mrover-ros2 …
kevinjin0420 Aug 4, 2026
f03e74f
files explicit declare deleter, avoid error reporting on libeigen
kevinjin0420 Aug 4, 2026
63cce26
force clang, revert cmakelists changes
kevinjin0420 Aug 4, 2026
7169b14
fix CI bugs and caching
kevinjin0420 Aug 4, 2026
4da8dad
bump actions versions
kevinjin0420 Aug 4, 2026
d41b7c3
update to match bumped checkout ver
kevinjin0420 Aug 4, 2026
8181d8e
delimit parallelism
kevinjin0420 Aug 4, 2026
4c2ee79
new repo location supporting changes
kevinjin0420 Aug 4, 2026
be58ec7
style
kevinjin0420 Aug 4, 2026
29b4515
remove gate for cuda compiler
kevinjin0420 Aug 4, 2026
1e6ef36
whitespace
kevinjin0420 Aug 4, 2026
4066f99
gitignore change and flag ci potential problem
kevinjin0420 Aug 4, 2026
d031303
remove recursive submodule checkout in CI
kevinjin0420 Aug 4, 2026
3afbf74
maintenance
kevinjin0420 Aug 5, 2026
0a3957c
fix ansible sh
kevinjin0420 Aug 5, 2026
763ed64
restore main's CI checkout approach
kevinjin0420 Aug 5, 2026
0856735
bypass ownership check
kevinjin0420 Aug 5, 2026
5bc032d
try this instead
kevinjin0420 Aug 5, 2026
fc190fb
dockerfile fix
kevinjin0420 Aug 5, 2026
ac19c1e
dockerfile changes and support
kevinjin0420 Aug 6, 2026
7cfd9b9
change dockerfile for size, source env to find colcon
kevinjin0420 Aug 6, 2026
08a520c
full path
kevinjin0420 Aug 6, 2026
8369bdd
bump ccache by one more decimal
kevinjin0420 Aug 6, 2026
85a1896
revert esw changes (changed CI to clang), update ansible to be friend…
kevinjin0420 Aug 6, 2026
e255216
specify full ccache version
kevinjin0420 Aug 6, 2026
6eeeab3
remove dead ansible role
kevinjin0420 Aug 6, 2026
1868217
further ansible modernization
kevinjin0420 Aug 6, 2026
f30571a
revert unnecessary changes
kevinjin0420 Aug 6, 2026
d7fe727
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 8, 2026
aa7504d
install python3-debian in necessary playbooks
kevinjin0420 Aug 8, 2026
3745d35
apt update if repos changed
kevinjin0420 Aug 8, 2026
bd0f63d
proper zshrc detection
kevinjin0420 Aug 8, 2026
b7eadb6
remove duped chrome install in build
kevinjin0420 Aug 8, 2026
2ffa02d
fetch content in build role instead of cmakelists
kevinjin0420 Aug 11, 2026
032455b
checkout all submodules in dev playbook
kevinjin0420 Aug 11, 2026
72505d2
fetch manif and imgui in CI ansible playbook
kevinjin0420 Aug 11, 2026
d27d3d0
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 11, 2026
ce1544f
minor cleanup
kevinjin0420 Aug 12, 2026
b0ac4de
return jetson yml
kevinjin0420 Aug 12, 2026
b06c94f
address .vscode/ file inconsistencies, modernize ansible
kevinjin0420 Aug 13, 2026
0de2986
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 15, 2026
24ea8da
Merge branch 'main' into skj/ubuntu24-native
kevinjin0420 Aug 22, 2026
e4aae63
restore new path
kevinjin0420 Aug 22, 2026
0d89b8e
bad yaml
kevinjin0420 Aug 22, 2026
1e94a9c
google-chrome fallback for gui launcher
kevinjin0420 Aug 24, 2026
fec3ede
use ansible builtin command over pip (bug)
kevinjin0420 Aug 24, 2026
f59bb2a
ansible sudo cache fix
kevinjin0420 Aug 24, 2026
2684cba
move to build playbook
kevinjin0420 Aug 24, 2026
0a0d0d8
move sudo become fix into script
kevinjin0420 Aug 24, 2026
da1fbda
remove virtualenvwrapper
kevinjin0420 Aug 25, 2026
af40c2c
gate argcomplete, sudoers fix script
kevinjin0420 Aug 25, 2026
7d1df7d
publish CI docker image
kevinjin0420 Aug 24, 2026
01622a6
fix mypy errors surfaced by toolchain bump
kevinjin0420 Aug 24, 2026
732d5be
ansible idempotency and become fixes
kevinjin0420 Aug 24, 2026
25e4467
dawn fork for cross-platform prebuilt binaries, imgui/glfw fixes
kevinjin0420 Aug 24, 2026
937d879
split bootstrap and setup scripts, mrover_repo group var
kevinjin0420 Aug 24, 2026
27ce0d8
publish CI docker image
kevinjin0420 Aug 24, 2026
6f300d8
fix mypy errors surfaced by toolchain bump
kevinjin0420 Aug 24, 2026
91d535c
ansible idempotency and become fixes
kevinjin0420 Aug 24, 2026
da31925
dawn fork for cross-platform prebuilt binaries, imgui/glfw fixes
kevinjin0420 Aug 24, 2026
7f8170e
dawn fork for cross-platform prebuilt binaries, imgui/glfw fixes
kevinjin0420 Aug 24, 2026
78b3dce
ansible sudo cache fix
kevinjin0420 Aug 24, 2026
8cfdc03
move to build playbook
kevinjin0420 Aug 24, 2026
a36233b
move sudo become fix into script
kevinjin0420 Aug 24, 2026
11737f6
split bootstrap and setup scripts, mrover_repo group var
kevinjin0420 Aug 24, 2026
57f55f2
pixi portable environment
kevinjin0420 Aug 25, 2026
a4ed2fa
try brew adopt
kevinjin0420 Aug 25, 2026
eab6bf4
homebrew non invasive approach
kevinjin0420 Aug 25, 2026
3fbfc38
NICE BIG AND OBVIOUS REBOOT PROMPT
kevinjin0420 Aug 25, 2026
4549b83
dont always run sudo fix, breaks sudo-rs
kevinjin0420 Aug 25, 2026
6c2c845
remove macos rosetta patch
kevinjin0420 Aug 25, 2026
0245252
fix inconsistencies
kevinjin0420 Aug 25, 2026
1ae4538
Merge branch 'skj/native-setup' into skj/portable
kevinjin0420 Aug 25, 2026
9670bec
sudo rs fix
kevinjin0420 Aug 25, 2026
ba1e679
cleanup from jazzy branch
kevinjin0420 Aug 26, 2026
23cf1dd
Merge branch 'main' into skj/portable
kevinjin0420 Aug 31, 2026
b969cfd
no more esw submodule, osx64 support
kevinjin0420 Aug 31, 2026
5329c29
remove ansible tty patch
kevinjin0420 Sep 6, 2026
95a3895
pass flags outside of --extra-vars
kevinjin0420 Sep 6, 2026
feb0622
remove git PPA
kevinjin0420 Sep 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
115 changes: 77 additions & 38 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,64 +6,103 @@ on:
branches:
- main
- integration

jobs:
style:
name: Style Checks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
- uses: prefix-dev/setup-pixi@v0.9.6
with:
activate-environment: true
cache: true
- uses: actions/cache@v6
with:
python-version: '3.x'
- name: Install Python style tools
run: pip install black==26.5.1 mypy==1.11.2
- name: Install clang-format
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main'
sudo apt-get update
sudo apt-get install -y clang-format-18
- name: Install shellcheck
run: sudo apt-get install -y shellcheck
- uses: oven-sh/setup-bun@v2
- name: Install Frontend Dependencies
run: cd teleoperation/basestation_gui/frontend && bun install
- name: Run Style Check
path: ~/.bun/install/cache
key: bun-${{ hashFiles('teleoperation/basestation_gui/frontend/bun.lockb') }}
restore-keys: bun-
- name: Style Check
run: ./style.sh

ci:
name: Build
runs-on: ubuntu-latest
build:
name: Build (pixi Ubuntu 26)
runs-on: ubuntu-26.04
needs: style
container:
image: umrover1/ros2-ci:jammy
# GitHub is silly and requires us to be running as root for their checkout action
# Our docker container exports the user mrover, so we have to specific this explicitly
options: --user root
steps:
- uses: actions/checkout@v7
- name: Dawn Cache
uses: actions/cache@v6
with:
# Re-enable when we put the simulator in the CI pipeline.
# lfs: "true"
# This makes sure that $GITHUB_WORKSPACE is the catkin workspace path
path: "src/mrover"
path: deps/dawn-prebuilt
key: dawn-${{ hashFiles('scripts/setup_dawn.sh') }}
- name: Setup Dawn
run: ./scripts/setup_dawn.sh
- name: Imgui Cache
uses: actions/cache@v6
with:
path: deps/imgui-src
key: imgui-${{ hashFiles('scripts/setup_imgui.sh') }}
- name: Setup Imgui
run: ./scripts/setup_imgui.sh
- name: Compiler Cache
if: github.event.pull_request.draft == false
uses: hendrikmuhs/ccache-action@v1.2.23
- uses: prefix-dev/setup-pixi@v0.9.6
with:
activate-environment: true
cache: true
- name: Build
run: ./build.sh

build-native:
name: Build (native Ubuntu 24)
runs-on: ubuntu-24.04
container:
image: kevinjin0420/mrover-ci:latest
# by pass github's dubious ownership check
options: --user root
needs: style
env:
# directory owned by mrover so CI can write to it and use caching
# this is new for ubuntu 24
HOME: /home/mrover
steps:
- uses: actions/checkout@v7
# Re-enable lfs: "true" when we put the simulator in the CI pipeline.
- name: Trust checkout directory
# bypass GitHub's dubious ownership check when running as root in the container
run: git config --global --add safe.directory "${GITHUB_WORKSPACE}"
- name: Dawn Cache
if: github.event.pull_request.draft == false
uses: actions/cache@v6
with:
path: src/mrover/deps/dawn-prebuilt
key: dawn-${{ hashFiles('src/mrover/scripts/setup_dawn.sh') }}
path: deps/dawn-prebuilt
key: dawn-${{ hashFiles('scripts/setup_dawn.sh') }}
- name: Setup Dawn
if: github.event.pull_request.draft == false
run: ./scripts/setup_dawn.sh
working-directory: "${{ github.workspace }}/src/mrover"
- name: Manif Cache
uses: actions/cache@v6
with:
path: deps/manif-src
key: manif-${{ hashFiles('scripts/setup_manif.sh') }}
- name: Setup Manif
run: ./scripts/setup_manif.sh
- name: Imgui Cache
uses: actions/cache@v6
with:
path: deps/imgui-src
key: imgui-${{ hashFiles('scripts/setup_imgui.sh') }}
- name: Setup Imgui
run: ./scripts/setup_imgui.sh
- name: Pip Cache
uses: actions/cache@v6
with:
path: /home/mrover/.cache/pip
key: pip-${{ hashFiles('pyproject.toml') }}
restore-keys: |
pip-
- name: Compiler Cache
uses: hendrikmuhs/ccache-action@v1.2.23
- name: Build
if: github.event.pull_request.draft == false
shell: bash
run: . /opt/ros/humble/setup.sh && . /home/mrover/ros2_ws/src/mrover/venv/bin/activate && cd $GITHUB_WORKSPACE/src/mrover/ && ./build.sh
# - name: Test
# if: github.event.pull_request.draft == false
# run: . /opt/ros/noetic/setup.sh && . /home/mrover/ros2_ws/src/mrover/venv/bin/activate && . $GITHUB_WORKSPACE/devel/setup.sh && catkin test && rostest mrover integration.test --text
run: source /opt/ros/jazzy/setup.bash && source /home/mrover/mrover-ros2/venv/bin/activate && ./build.sh Release
22 changes: 8 additions & 14 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,22 @@ jobs:
name: Build and Push CI Image
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v6

- name: Read Ubuntu codename from Dockerfile
id: base_os
run: |
from_line=$(head -1 Dockerfile)
echo "codename=${from_line#FROM ubuntu:}" >> "$GITHUB_OUTPUT"

- uses: docker/login-action@v4
- uses: docker/login-action@v3
with:
username: umrover1
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- uses: docker/metadata-action@v6
- uses: docker/metadata-action@v5
id: meta
with:
images: umrover1/ros2-ci
images: ${{ secrets.DOCKERHUB_USERNAME }}/mrover-ci
tags: |
type=raw,value=${{ steps.base_os.outputs.codename }}
type=sha,prefix=${{ steps.base_os.outputs.codename }}-sha-
type=raw,value=latest
type=sha,prefix=sha-

- uses: docker/build-push-action@v7
- uses: docker/build-push-action@v6
with:
context: .
push: true
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/publish-bootstrap.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
name: Publish Bootstrap Script
name: Publish Bootstrap Scripts

on:
push:
branches:
- main
paths:
- bootstrap.sh
- bootstrap-portable.sh
workflow_dispatch:

permissions:
Expand All @@ -27,7 +28,7 @@ jobs:
steps:
- uses: actions/checkout@v7
- name: Assemble site
run: mkdir -p site && cp bootstrap.sh site/bootstrap.sh
run: mkdir -p site && cp bootstrap.sh bootstrap-portable.sh site/
- uses: actions/upload-pages-artifact@v5
with:
path: site
Expand Down
16 changes: 11 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
/install/
/log/

# Downloaded prebuilt dependencies
# pixi environment
/.pixi/*
!/.pixi/config.toml

# Prebuild deps
/deps/dawn-prebuilt/
/deps/.fetchcontent/
/deps/manif-src/
/deps/imgui-src/

# Common IDE's, ideally this should be in global gitignore per user
.vscode/
Expand All @@ -28,7 +33,7 @@ __pycache__/
*.egg-info/
venv/

#Teleop Ignores
# Teleop Ignores
*.sqlite3
*.db
bun.lock
Expand All @@ -41,6 +46,7 @@ bun.lockb

# macOS
.DS_Store

# nav state log
state_machine/state_log.txt

Expand All @@ -54,5 +60,5 @@ data/raw-pano-images
.catkin_tools/
.dynamixel_sdk/

# Persistent esw mrover_can FetchContent cache (survives a clean build, not tracked)
/.cache/esw/
# FetchContent cache (esw mrover_can, and CMake's own FetchContent staging dirs)
/deps/.fetchcontent/
1 change: 1 addition & 0 deletions .pixi/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
detached-environments = true
8 changes: 4 additions & 4 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/../../install/Debug/mrover/lib/mrover/${input:myStringInput}",
"program": "${workspaceFolder}/install/Debug/mrover/lib/mrover/${input:myStringInput}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [
{
"name": "LD_LIBRARY_PATH",
"value": "${workspaceFolder}/../../install/Debug/mrover/lib:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/aarch64-linux-gnu:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib"
"value": "${workspaceFolder}/install/Debug/mrover/lib:/opt/ros/jazzy/opt/rviz_ogre_vendor/lib:/opt/ros/jazzy/lib/aarch64-linux-gnu:/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/lib"
},
{
"name": "ROS_DOMAIN_ID",
Expand Down Expand Up @@ -44,7 +44,7 @@
"program": "${file}",
"console": "integratedTerminal",
"env": {
"LD_LIBRARY_PATH": "${workspaceFolder}/../../install/Debug/mrover/lib:/opt/ros/humble/opt/rviz_ogre_vendor/lib:/opt/ros/humble/lib/aarch64-linux-gnu:/opt/ros/humble/lib/x86_64-linux-gnu:/opt/ros/humble/lib",
"LD_LIBRARY_PATH": "${workspaceFolder}/install/Debug/mrover/lib:/opt/ros/jazzy/opt/rviz_ogre_vendor/lib:/opt/ros/jazzy/lib/aarch64-linux-gnu:/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/lib",
"ROS_DOMAIN_ID": "5"
}
}
Expand All @@ -56,7 +56,7 @@
"type": "command",
"command": "file-selector.fileSelect",
// exclude the absolute prefix path here
"args": "../../install/Debug/mrover/lib/mrover"
"args": "install/Debug/mrover/lib/mrover"
}
]
}
16 changes: 8 additions & 8 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
"python.analysis.inlayHints.variableTypes": true,
"python.analysis.inlayHints.callArgumentNames": "all",
"python.analysis.inlayHints.functionReturnTypes": true,
// ~/ros2_ws/install/{profile}/mrover/lib/python3.10/site-packages is already in PYTHONPATH,
// ~/mrover-ros2/install/{profile}/mrover/lib/python3.12/site-packages is already in PYTHONPATH,
// but Pylance currently has a bug where it cannot handle the symlinks in it.
// Below we are just putting directly where those symlinks go for all build profiles
"python.analysis.extraPaths": [
"/opt/ros/humble/lib/python3/dist-packages",
"../../install/Debug/mrover/lib/python3.10/site-packages",
"../../install/Release/mrover/lib/python3.10/site-packages",
"../../install/RelWithDebInfo/mrover/lib/python3.10/site-packages",
"../../build/Debug/mrover/rosidl_generator_py",
"../../build/Release/mrover/rosidl_generator_py",
"../../build/RelWithDebInfo/mrover/rosidl_generator_py",
"/opt/ros/jazzy/lib/python3/dist-packages",
"install/Debug/mrover/lib/python3.12/site-packages",
"install/Release/mrover/lib/python3.12/site-packages",
"install/RelWithDebInfo/mrover/lib/python3.12/site-packages",
"build/Debug/mrover/rosidl_generator_py",
"build/Release/mrover/rosidl_generator_py",
"build/RelWithDebInfo/mrover/rosidl_generator_py",
],
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
Expand Down
Loading