Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 16 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,22 @@ Project AirSim is a simulation platform for drones, robots, and other autonomous
- **Clang Version**: Hardcoded to clang-13 but can use clang-18 with symbolic links
- **Python Dependencies**: open3d version constraints may conflict with newer Python versions
- **Unreal Engine**: Full functionality requires UE5 installation and UE_ROOT environment variable
- **JSBSim Version**: Fixed at v1.1.12 for compatibility. Do not modify JSBSIM_FIXED_TAG without approval.

## Third-Party Dependencies

### JSBSim Integration

**JSBSim headers are staged during build, not included in source control.**

- **Version**: Fixed at `v1.1.12` (enforced by CMake configuration check)
- **Headers**: Automatically staged to `build/linux64/{Debug|Release}/thirdparty/jsbsim/include/` during build
- **Libraries**: Copied to `core_sim/jsbsim/lib/{Debug|Release}/` for runtime use
- **Models**: Aircraft, engine, systems, and scripts copied to `core_sim/jsbsim/models/`

**Do not manually copy JSBSim headers.** The build system handles header staging automatically via the `jsbsim-repo` ExternalProject post-install step.

**Version enforcement**: CMakeLists.txt includes a configure-time check that fails the build if `JSBSIM_FIXED_TAG` is modified from `v1.1.12`. This ensures all builds use the same tested JSBSim version.

## Build Targets and Timing

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/sphinx-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ name: Build and Deploy Sphinx Docs
on:
workflow_dispatch:
push:
branches: [main]
branches: [main, main_public]
paths:
- ".github/workflows/sphinx-docs.yml"
- "README.md"
- "docs/**"
- "client/python/projectairsim/docs/**"
- "client/python/projectairsim/src/**"
pull_request:
branches: [main]
branches: [main, main_public]
paths:
- ".github/workflows/sphinx-docs.yml"
- "README.md"
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test_cpp_client.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ name: C++ Client and ROS 2 C++ Node CI
pull_request:
branches:
- main
- main_public
paths:
- ".github/workflows/test_cpp_client.yml"
- "build_cpp_client.cmd"
Expand All @@ -16,6 +17,7 @@ name: C++ Client and ROS 2 C++ Node CI
push:
branches:
- main
- main_public
paths:
- ".github/workflows/test_cpp_client.yml"
- "build_cpp_client.cmd"
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test_linux_simlibs_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
pull_request:
branches:
- main
- main_public
paths:
- ".github/workflows/test_linux_simlibs_release.yml"
- "CMakeLists.txt"
Expand All @@ -24,6 +25,7 @@ on:
push:
branches:
- main
- main_public
paths:
- ".github/workflows/test_linux_simlibs_release.yml"
- "CMakeLists.txt"
Expand Down
31 changes: 24 additions & 7 deletions .github/workflows/test_on_self_hosted.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
pull_request:
branches:
- main
- main_public
paths:
- ".github/workflows/test_on_self_hosted.yml"
- "CMakeLists.txt"
Expand All @@ -22,9 +23,9 @@ on:
- "unity/**"
- "unreal/**"
- "vehicle_apis/**"
# Only run when the self-hosted label is added; the job itself still
# Run when the self-hosted label is added or the labeled PR is updated; the job still
# rejects draft PRs and PRs without run-self-hosted.
types: [labeled]
types: [labeled, synchronize]

# Restrict GITHUB_TOKEN permissions (least privilege).
# This workflow needs read access to checkout code and write access to
Expand All @@ -36,7 +37,7 @@ permissions:
jobs:
build-and-test:
if: |
github.event.pull_request.base.ref == 'main' &&
(github.event.pull_request.base.ref == 'main' || github.event.pull_request.base.ref == 'main_public') &&
!github.event.pull_request.draft &&
contains(github.event.pull_request.labels.*.name, 'run-self-hosted')
runs-on: [self-hosted]
Expand Down Expand Up @@ -75,7 +76,11 @@ jobs:
lsof \
ninja-build \
vulkan-tools \
libvulkan1
libvulkan1 \
clang-15 \
libc++-15-dev \
libc++abi-15-dev \
libunwind-15-dev
echo "System dependencies installed"

- name: Setup AirSim development tools
Expand All @@ -89,8 +94,19 @@ jobs:
- name: Build simlibs Release
run: ./build.sh simlibs_release

- name: Verify JSBSim SimLibs artifacts
run: |
test -d unreal/Blocks/Plugins/ProjectAirSim/SimLibs/core_sim/jsbsim/include
test -f unreal/Blocks/Plugins/ProjectAirSim/SimLibs/core_sim/jsbsim/lib/Release/libJSBSim.so

- name: Build Unreal Editor (Blocks)
run: |
"$UE_ROOT/Engine/Build/BatchFiles/Linux/Build.sh" \
ShaderCompileWorker Linux Development \
-waitmutex

test -x "$UE_ROOT/Engine/Binaries/Linux/ShaderCompileWorker"

"$UE_ROOT/Engine/Build/BatchFiles/Linux/Build.sh" \
BlocksEditor Linux Development \
"$(pwd)/unreal/Blocks/Blocks.uproject" \
Expand All @@ -104,7 +120,7 @@ jobs:
python -m pip install --upgrade pip
python -m pip install "setuptools<81" wheel
python -m pip install -e "client/python/projectairsim[datacollection]"
python -m pip install pytest pytest-cov
python -m pip install pytest pytest-cov pexpect

- name: Clean stale simulator processes and ports
run: |
Expand Down Expand Up @@ -158,7 +174,8 @@ jobs:
run: |
source "$AIRSIM_PY_ENV/bin/activate"
echo "Waiting for ProjectAirSim sockets on ports 8989/8990..."
for i in {1..180}; do
readiness_timeout_seconds=600
for ((i = 1; i <= readiness_timeout_seconds; i++)); do
if ps -p "$(cat unreal.pid)" > /dev/null 2>&1; then
if lsof -i :8989 >/dev/null 2>&1 && lsof -i :8990 >/dev/null 2>&1; then
echo "Ports 8989/8990 are listening, validating client handshake..."
Expand All @@ -174,7 +191,7 @@ jobs:
fi
sleep 1
done
echo "Simulator failed to start within timeout (180 sec)"
echo "Simulator failed to start within timeout (${readiness_timeout_seconds} sec)"
tail -n 300 unreal.log
exit 1

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test_windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
pull_request:
branches:
- main
- main_public
paths:
- ".github/workflows/test_windows.yml"
- "CMakeLists.txt"
Expand All @@ -23,6 +24,7 @@ on:
push:
branches:
- main
- main_public
paths:
- ".github/workflows/test_windows.yml"
- "CMakeLists.txt"
Expand Down
Loading
Loading