docker-build-pc #23
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: docker-build-pc | |
on: | |
workflow_dispatch: | |
env: | |
SDK_DIR: /home/runner/j7ros_home/ros_ws/src/robotics_sdk | |
REPO_URL: https://git.ti.com/git/processor-sdk-vision/jacinto_ros_perception.git | |
REPO_TAG: REL.10.00.00 | |
# only for testing | |
# REPO_BRANCH: 10_00_rc4 | |
SDK_VER: 10.0.0 | |
GH_TOKEN: ${{ secrets.GHCR_PAT }} | |
jobs: | |
build_pc: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GHCR_PAT }} | |
- name: Clone SDK repository | |
run: | | |
mkdir -p $HOME/j7ros_home/ros_ws/src | |
cd $HOME/j7ros_home/ros_ws/src | |
git clone --branch ${{ env.REPO_TAG }} --single-branch ${{ env.REPO_URL }} ${{ env.SDK_DIR }} | |
# gh repo clone robotics_sdk ${{ env.SDK_DIR }} -- --branch ${{ env.REPO_BRANCH }} | |
SDK_DIR=$SDK_DIR $SDK_DIR/scripts/install_gscam.sh | |
SDK_DIR=$SDK_DIR $SDK_DIR/scripts/install_mmwave_rospkg.sh 2 | |
- name: Set up Docker build script | |
run: | | |
mkdir -p $HOME/j7ros_home | |
cd $HOME/j7ros_home | |
makefile_path=$SDK_DIR/docker/Makefile | |
if [ -f $makefile_path ]; then | |
ln -snf $SDK_DIR/docker/Makefile . | |
else | |
echo "Error: $makefile_path does not exist" | |
exit 1 | |
fi | |
PLATFORM=pc SDK_DIR=$SDK_DIR make scripts | |
- name: Verify script generation | |
run: | | |
ls -l $HOME/j7ros_home | |
more $HOME/j7ros_home/docker_build.sh | |
- name: Build Docker image | |
run: | | |
cd $HOME/j7ros_home | |
./docker_build.sh | |
- name: Build and install the SDK ROS nodes | |
run: | | |
cd $HOME/j7ros_home | |
# create docker_run_commit.sh | |
script_file=docker_run_commit.sh | |
cp docker_run.sh $script_file | |
sed -i 's/docker run -it --rm \\/docker run --platform linux\/amd64 \\/' $script_file | |
sed -i '/xhost +local:$USER/d' $script_file | |
sed -i '/xhost -local:$USER/d' $script_file | |
more $script_file | |
# build and install the SDK ROS nodes | |
./docker_run_commit.sh colcon build \ | |
--base-paths /root/j7ros_home/ros_ws/src/robotics_sdk/ros2 \ | |
--cmake-force-configure \ | |
--packages-skip ti_external ti_vision_cnn ti_sde ti_estop ti_vl ti_objdet_range ti_ros_gst_plugins \ | |
--install-base /opt/ros/robotics_sdk_install | |
# ISSUE found with --install-base /opt/ros/humble: the default `/opt/ros/humble/setup.bash` is overridden with `install/setup.bash` | |
docker_tag=robotics-sdk:${{ env.SDK_VER }}-humble-viz | |
container_id=$(docker ps -a --filter "ancestor=$docker_tag" --format "{{.ID}}" | head -n 1) | |
docker exec $container_id sed -i '/exec "\$@"/i source /opt/ros/robotics_sdk_install/setup.bash' /root/entrypoint.sh | |
docker tag $docker_tag ${docker_tag}-org | |
docker commit $container_id $docker_tag | |
docker images | |
- name: Add a Docker label | |
run: | | |
docker_tag=robotics-sdk:${{ env.SDK_VER }}-humble-viz | |
docker images | |
if [ "$(docker images -q $docker_tag 2> /dev/null)" == "" ]; then | |
echo "Docker image $docker_tag does not exist." | |
exit 1 | |
else | |
echo "FROM --platform=linux/amd64 $docker_tag" | \ | |
docker build --label org.opencontainers.image.source=https://github.com/${{ github.repository }} -t $docker_tag - | |
docker inspect --format='{{json .Config.Labels}}' $docker_tag | |
fi | |
- name: Push Docker image | |
run: | | |
docker_tag=robotics-sdk:${{ env.SDK_VER }}-humble-viz | |
remote_docker_tag=ghcr.io/${{ github.repository_owner }}/$docker_tag | |
remote_docker_tag=${remote_docker_tag,,} | |
docker tag $docker_tag $remote_docker_tag | |
docker push $remote_docker_tag |