name: Build Cross-Compiled ROS 2 Images permissions: contents: read on: workflow_dispatch: inputs: platform: description: "Target platform" required: true type: choice options: [rk3588, rk3576] default: rk3576 ros_distro: description: "ROS 2 distribution" required: true type: choice options: [rolling, jazzy, lyrical] default: lyrical jobs: build: runs-on: ubuntu-22.04 env: PLATFORM: ${{ inputs.platform }} ROS_DISTRO: ${{ inputs.ros_distro }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Debug inputs run: | echo "PLATFORM=$PLATFORM" echo "ROS_DISTRO=$ROS_DISTRO" NPROC=$(nproc) BUILD_JOBS=$(( NPROC / 2 > 0 ? NPROC / 2 : 1 )) echo "BUILD_JOBS=$BUILD_JOBS" >> $GITHUB_ENV # ── Stage 0: Download Buildroot SDK ──────────────────────────────── - name: Download Buildroot SDK env: GITEA_TOKEN: ${{ secrets.ERIC_TOKEN }} run: | echo "token length: ${#GITEA_TOKEN}" cd cross_compile/${PLATFORM} SDK_URL="http://gitea:3000/api/packages/xixing-tech/generic/${PLATFORM}-buildroot-sdk/1.0.0/aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz" curl --fail -u "EricXZ:${GITEA_TOKEN}" -L -OJ "$SDK_URL" ls -lh # 或者更清晰的层级展示 find . -maxdepth 2 # ── Stage 1: cc-base ───────────────────────────────────────────── - name: Build cc-base run: | cd cross_compile docker compose build cc-base # ── Stage 2: cc-toolchain ───────────────────────────────────────── - name: Build cc-toolchain run: | cd cross_compile docker compose build cc-toolchain # ── Stage 3: vendor-packages ────────────────────────────────────── - name: Build vendor-packages run: | cd cross_compile docker compose build vendor-packages # ── Stage 4: ros2 ───────────────────────────────────────────────── - name: Build ROS 2 run: | cd cross_compile docker compose build ros2 # ── Summary ─────────────────────────────────────────────────────── - name: Image summary if: always() run: | echo "### Built Images :rocket:" >> $GITHUB_STEP_SUMMARY docker images \ --filter "reference=cc-*" \ --filter "reference=*/cc-*" \ --format "| \`{{.Repository}}:{{.Tag}}\` | {{.Size}} |" \ >> $GITHUB_STEP_SUMMARY # ── Stage 5: push to Gitea container registry ────────────────── - name: Log in to Gitea Container Registry env: GITEA_TOKEN: ${{ secrets.ERIC_TOKEN }} run: | echo "${GITEA_TOKEN}" | docker login localhost:3000 -u EricXZ --password-stdin - name: Tag image for registry run: | docker tag rk3576/cc-ros-lyrical:latest localhost:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-latest # 建议同时打一个带 commit sha 的版本tag,方便追溯具体是哪次构建产物 docker tag rk3576/cc-ros-lyrical:latest localhost:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-${GITHUB_SHA::8} - name: Push image to Gitea registry run: | docker push localhost:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-latest docker push localhost:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-${GITHUB_SHA::8}