Skip to content

[Spinal][GA] Include Ros build into repeat build flow. #31

[Spinal][GA] Include Ros build into repeat build flow.

[Spinal][GA] Include Ros build into repeat build flow. #31

Workflow file for this run

name: Build Spinal Firmware
on: [push, pull_request, workflow_dispatch]
jobs:
build:
runs-on: ubuntu-latest
container:
image: ghcr.io/ut-dragon-lab/stm32cubeide_1.8.0_build_env:latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
# submodules too
submodules: recursive
- name: Install ROS packages with rosdep # Setup Github ws as a catkin ws
run: |
source /opt/ros/noetic/setup.bash
rm /etc/ros/rosdep/sources.list.d/20-default.list
sudo rosdep init
rosdep update
mkdir -p ~/catkin_ws/src
ln -s $GITHUB_WORKSPACE ~/catkin_ws/src/jsk_aerial_robot
cd ~/catkin_ws
rosdep install -y -r --from-paths src --ignore-src --rosdistro noetic
shell: bash
# =========================
# Repeat ROS Build and H7 Build 5 times
# =========================
- name: Build Spinal as ROS + H7 (up to 5 times)
run: |
for i in {1..5}; do
echo "======================================="
echo "=== [Attempt $i/5] Build Spinal as ROS Package ==="
(
# --- Build Spinal as ROS Package ---
source /opt/ros/noetic/setup.bash
cd ~/catkin_ws
catkin config --cmake-args -Dcatkin_DIR=/opt/ros/noetic/share/catkin/cmake
catkin build spinal
source devel/setup.bash
) || {
echo "Build Spinal as ROS Package failed on attempt #$i."
echo "Cleaning up STM32CubeIDE workspace..."
rm -rf ~/STM32CubeIDE/workspace_1.8.0/.metadata
continue
}
echo "=== [Attempt $i/5] Build Spinal H7 as STM32CubeIDE project ==="
# --- Build Spinal H7 as STM32CubeIDE project ---
/opt/st/stm32cubeide_1.8.0/stm32cubeide -nosplash \
-application org.eclipse.cdt.managedbuilder.core.headlessbuild \
-data ~/STM32CubeIDE/workspace_1.8.0/ \
-import aerial_robot_nerve/spinal/mcu_project/boards/stm32H7/STM32CubeIDE/ \
-cleanBuild spinal/Debug \
-vmargs -Dorg.eclipse.cdt.core.build.parallel=true \
-Dorg.eclipse.cdt.core.build.parallel.threads=12 || {
echo "Build Spinal H7 failed on attempt #$i."
echo "Cleaning up STM32CubeIDE workspace..."
rm -rf ~/STM32CubeIDE/workspace_1.8.0/.metadata
continue
}
echo "All builds (ROS + H7) succeeded on attempt #$i."
exit 0
done
echo "All 5 attempts (ROS + H7) have failed. Exiting with error."
exit 1
- name: Upload H7 artifacts
if: success()
uses: actions/upload-artifact@v4
with:
name: SpinalH7.artifacts
path: aerial_robot_nerve/spinal/mcu_project/boards/stm32H7/STM32CubeIDE/Debug/spinal.*
# =========================
# Repeat ROS Build and F7 Build 5 times
# =========================
- name: Build Spinal as ROS + F7 (up to 5 times)
if: success()
run: |
for i in {1..5}; do
echo "======================================="
echo "=== [Attempt $i/5] Build Spinal as ROS Package ==="
(
# --- Build Spinal as ROS Package ---
source /opt/ros/noetic/setup.bash
cd ~/catkin_ws
catkin config --cmake-args -Dcatkin_DIR=/opt/ros/noetic/share/catkin/cmake
catkin build spinal
source devel/setup.bash
) || {
echo "Build Spinal as ROS Package failed on attempt #$i."
echo "Cleaning up STM32CubeIDE workspace..."
rm -rf ~/STM32CubeIDE/workspace_1.8.0/.metadata
continue
}
echo "=== [Attempt $i/5] Build Spinal F7 as STM32CubeIDE project ==="
# --- Build Spinal F7 as STM32CubeIDE project ---
/opt/st/stm32cubeide_1.8.0/stm32cubeide -nosplash \
-application org.eclipse.cdt.managedbuilder.core.headlessbuild \
-data ~/STM32CubeIDE/workspace_1.8.0/ \
-import aerial_robot_nerve/spinal/mcu_project/boards/stm32F7/STM32CubeIDE/ \
-cleanBuild spinal/Debug \
-vmargs -Dorg.eclipse.cdt.core.build.parallel=true \
-Dorg.eclipse.cdt.core.build.parallel.threads=12 || {
echo "Build Spinal F7 failed on attempt #$i."
echo "Cleaning up STM32CubeIDE workspace..."
rm -rf ~/STM32CubeIDE/workspace_1.8.0/.metadata
continue
}
echo "All builds (ROS + F7) succeeded on attempt #$i."
exit 0
done
echo "All 5 attempts (ROS + F7) have failed. Exiting with error."
exit 1
- name: Upload F7 artifacts
if: success()
uses: actions/upload-artifact@v4
with:
name: SpinalF7.artifacts
path: aerial_robot_nerve/spinal/mcu_project/boards/stm32F7/STM32CubeIDE/Debug/spinal.*