docker-build-pc #1
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_VER should match to the SDK_VER defined in docker/Makefile | |
SDK_VER: 10.1.0.1 | |
SDK_DIR: ${{ github.workspace }} | |
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: Initial setup for the SDK repository | |
run: | | |
SDK_DIR=$SDK_DIR $SDK_DIR/scripts/install_gscam.sh | |
SDK_DIR=$SDK_DIR $SDK_DIR/scripts/install_mmwave_rospkg.sh 2 | |
# verify | |
ls -l $SDK_DIR/ros2/drivers | |
- 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 | |
echo 'CONTAINER_ID=$(docker ps -a --filter "ancestor=$DOCKER_TAG" --format "{{.ID}}" | head -n 1)' >> $script_file | |
echo 'docker tag $DOCKER_TAG ${DOCKER_TAG}-org' >> $script_file | |
echo 'docker commit $CONTAINER_ID ${DOCKER_TAG}' >> $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 | |
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 | |
for i in 1 2 3; do | |
if docker push $remote_docker_tag; then | |
break | |
fi | |
echo "Retry $i pushing image..." | |
sleep 10 | |
done |