97 lines
4.1 KiB
YAML
97 lines
4.1 KiB
YAML
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: docker compose -f cross_compile/compose.yaml build cc-base
|
|
|
|
# ── Stage 2: cc-toolchain ─────────────────────────────────────────
|
|
- name: Build cc-toolchain
|
|
run: docker compose -f cross_compile/compose.yaml build cc-toolchain
|
|
|
|
# ── Stage 3: vendor-packages ──────────────────────────────────────
|
|
- name: Build vendor-packages
|
|
run: docker compose -f cross_compile/compose.yaml build vendor-packages
|
|
|
|
# ── Stage 4: ros2 ─────────────────────────────────────────────────
|
|
- name: Build ROS 2
|
|
run: docker compose -f cross_compile/compose.yaml 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 gitea:3000 -u EricXZ --password-stdin
|
|
|
|
- name: Tag image for registry
|
|
run: |
|
|
docker tag rk3576/cc-ros-lyrical:latest gitea:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-latest
|
|
# 建议同时打一个带 commit sha 的版本tag,方便追溯具体是哪次构建产物
|
|
docker tag rk3576/cc-ros-lyrical:latest gitea:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-${GITHUB_SHA::8}
|
|
|
|
- name: Push image to Gitea registry
|
|
run: |
|
|
docker push gitea:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-latest
|
|
docker push gitea:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-${GITHUB_SHA::8} |