diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 0326408..c8a6d3f 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -20,6 +20,12 @@ jobs: # free up a lot of stuff from /usr/local sudo rm -rf /usr/local df -h + - name: Login to ghcr + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Checkout uses: actions/checkout@v2 - name: Set up buildx @@ -33,6 +39,8 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max no-cache: false + build-args: | + SPACE_ROS_IMAGE=osrf/space-ros:main outputs: type=docker,dest=/tmp/moveit2.tar - name: Build space robots demo image run: | @@ -55,3 +63,5 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max no-cache: false + build-args: | + SPACE_ROS_IMAGE=osrf/space-ros:main diff --git a/moveit2/Dockerfile b/moveit2/Dockerfile index 11ff916..d5e095f 100644 --- a/moveit2/Dockerfile +++ b/moveit2/Dockerfile @@ -16,10 +16,13 @@ # # The script provides the following build arguments: # -# VCS_REF - The git revision of the Space ROS source code (no default value). -# VERSION - The version of Space ROS (default: "preview") +# VCS_REF - The git revision of the Space ROS source code (no default value). +# VERSION - The version of Space ROS (default: "preview") +# SPACE_ROS_IMAGE - The base Space ROS image to build on -FROM osrf/space-ros:latest +ARG SPACE_ROS_IMAGE=osrf/space-ros:latest + +FROM ${SPACE_ROS_IMAGE} # Define arguments used in the metadata definition ARG VCS_REF @@ -91,9 +94,9 @@ RUN python3 -m pip install -U \ # Get the MoveIt2 source code WORKDIR ${HOME_DIR} -RUN sudo git clone https://github.com/moveit/moveit2.git -b ${ROSDISTRO} moveit2/src +RUN sudo git clone https://github.com/ros-planning/moveit2.git -b ${ROS_DISTRO} moveit2/src RUN cd ${MOVEIT2_DIR}/src \ - && sudo git clone https://github.com/moveit/moveit2_tutorials.git -b ${ROSDISTRO} + && sudo git clone https://github.com/ros-planning/moveit2_tutorials.git -b ${ROS_DISTRO} # Update the ownership of the source files (had to use sudo above to work around # a possible inherited 'insteadof' from the host that forces use of ssh @@ -108,7 +111,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ COPY --chown=${USERNAME}:${USERNAME} moveit2-pkgs.txt /tmp/ COPY --chown=${USERNAME}:${USERNAME} excluded-pkgs.txt /tmp/ RUN rosinstall_generator \ - --rosdistro ${ROSDISTRO} \ + --rosdistro ${ROS_DISTRO} \ --deps \ --exclude-path ${SPACEROS_DIR}/src \ --exclude $(cat /tmp/excluded-pkgs.txt) -- \ @@ -129,7 +132,7 @@ RUN sudo chown -R ${USERNAME}:${USERNAME} ${MOVEIT2_DIR} RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash' \ - && rosdep install --from-paths ../spaceros/src src --ignore-src --rosdistro ${ROSDISTRO} -r -y --skip-keys "console_bridge generate_parameter_library fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers rmw_connextdds ros_testing rmw_connextdds rmw_fastrtps_cpp rmw_fastrtps_dynamic_cpp composition demo_nodes_py lifecycle rosidl_typesupport_fastrtps_cpp rosidl_typesupport_fastrtps_c ikos diagnostic_aggregator diagnostic_updater joy qt_gui rqt_gui rqt_gui_py" + && rosdep install --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} -r -y --skip-keys "console_bridge generate_parameter_library fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers rmw_connextdds ros_testing rmw_connextdds rmw_fastrtps_cpp rmw_fastrtps_dynamic_cpp composition demo_nodes_py lifecycle rosidl_typesupport_fastrtps_cpp rosidl_typesupport_fastrtps_c ikos diagnostic_aggregator diagnostic_updater joy qt_gui rqt_gui rqt_gui_py" # Apply a patch to octomap_msgs to work around a build issue COPY --chown=${USERNAME}:${USERNAME} octomap_fix.diff ./src/octomap_msgs diff --git a/moveit2/README.md b/moveit2/README.md index 665d620..99093ec 100644 --- a/moveit2/README.md +++ b/moveit2/README.md @@ -11,6 +11,14 @@ To build the docker image, run: ./build.sh ``` +By default, this will build on top of the latest released version of the Space ROS base image (typically `osrf/space-ros:latest`). +If building locally, the underlying base image can be set in the [build script](./build.sh), or through the environment with: + +```bash +# Use a locally built image as the base +SPACE_ROS_IMAGE="space-ros:main" ./build.sh +``` + The build process will take about 30 minutes, depending on the host computer. ## Running the MoveIt2 Docker Image in a Container diff --git a/moveit2/build.sh b/moveit2/build.sh index 04cc00d..78af98f 100755 --- a/moveit2/build.sh +++ b/moveit2/build.sh @@ -16,7 +16,9 @@ echo "" docker build -t $ORG/$IMAGE:$TAG \ --build-arg VCS_REF="$VCS_REF" \ - --build-arg VERSION="$VERSION" . + --build-arg VERSION="$VERSION" \ + --build-arg SPACE_ROS_IMAGE="${SPACE_ROS_IMAGE:-osrf/space-ros:latest}" \ + . echo "" echo "##### Done! #####" diff --git a/navigation2/Dockerfile b/navigation2/Dockerfile index 05fa044..d14e24d 100644 --- a/navigation2/Dockerfile +++ b/navigation2/Dockerfile @@ -16,10 +16,13 @@ # # The script provides the following build arguments: # -# VCS_REF - The git revision of the Space ROS source code (no default value). -# VERSION - The version of Space ROS (default: "preview") +# VCS_REF - The git revision of the Space ROS source code (no default value). +# VERSION - The version of Space ROS (default: "preview") +# SPACE_ROS_IMAGE - The base Space ROS image to build on -FROM osrf/space-ros:latest +ARG SPACE_ROS_IMAGE=osrf/space-ros:latest + +FROM ${SPACE_ROS_IMAGE} # Define arguments used in the metadata definition ARG VCS_REF @@ -62,7 +65,7 @@ RUN mkdir ${SPACEROS_DIR}/src \ # Generate repos file for nav2 dependencies, exclude packages from Space ROS src RUN rosinstall_generator \ - --rosdistro ${ROSDISTRO} \ + --rosdistro ${ROS_DISTRO} \ --deps \ --exclude-path ${SPACEROS_DIR}/src -- \ -- $(cat ${NAVIGATION2_WS}/nav2_dep_keys.txt) \ diff --git a/navigation2/README.md b/navigation2/README.md index cc5527f..ece7840 100644 --- a/navigation2/README.md +++ b/navigation2/README.md @@ -12,6 +12,14 @@ To build the docker image, run: The build process will take about 30 minutes, depending on the host computer. +By default, this will build on top of the latest released version of the Space ROS base image (typically `osrf/space-ros:latest`). +If building locally, the underlying base image can be set in the [build script](./build.sh), or through the environment with: + +```bash +# Use a locally built image as the base +SPACE_ROS_IMAGE="space-ros:main" ./build.sh +``` + ## Running the Navigation2 Docker Image in a Container After building the image, you can see the newly-built image by running: diff --git a/navigation2/build.sh b/navigation2/build.sh index bfebd2b..36b0a73 100755 --- a/navigation2/build.sh +++ b/navigation2/build.sh @@ -16,7 +16,9 @@ echo "" docker build -t $ORG/$IMAGE:$TAG \ --build-arg VCS_REF="$VCS_REF" \ - --build-arg VERSION="$VERSION" . + --build-arg VERSION="$VERSION" \ + --build-arg SPACE_ROS_IMAGE="${SPACE_ROS_IMAGE:-osrf/space-ros:latest}" \ + . echo "" echo "##### Done! #####" diff --git a/space_robots/Dockerfile b/space_robots/Dockerfile index 4f9077d..562b8a5 100644 --- a/space_robots/Dockerfile +++ b/space_robots/Dockerfile @@ -56,7 +56,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ # COPY --chown=${USERNAME}:${USERNAME} demo-pkgs.txt /tmp/ # COPY --chown=${USERNAME}:${USERNAME} excluded-pkgs.txt /tmp/ # RUN rosinstall_generator \ -# --rosdistro ${ROSDISTRO} \ +# --rosdistro ${ROS_DISTRO} \ # --deps \ # --exclude-path ${SPACEROS_DIR}/src \ # --exclude-path ${MOVEIT2_DIR}/src \ @@ -91,7 +91,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ sudo apt-get update -y \ && /bin/bash -c 'source "${SPACEROS_DIR}/install/setup.bash"' \ && /bin/bash -c 'source "${MOVEIT2_DIR}/install/setup.bash"' \ -&& rosdep install --from-paths src --ignore-src -r -y --rosdistro ${ROSDISTRO} +&& rosdep install --from-paths src --ignore-src -r -y --rosdistro ${ROS_DISTRO} # Build the demo RUN /bin/bash -c 'source ${SPACEROS_DIR}/install/setup.bash && source ${MOVEIT2_DIR}/install/setup.bash \ diff --git a/space_robots/README.md b/space_robots/README.md index c9bd284..44c380d 100644 --- a/space_robots/README.md +++ b/space_robots/README.md @@ -57,7 +57,7 @@ docker exec -it bash Make sure packages are sourced: ```bash -source ~/spaceros/install/setup.bash +source ${SPACEROS_DIR}/install/setup.bash ``` ```bash