Compare commits
10 Commits
8868ca2a35
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 12b7f933ed | |||
| cd816d05b6 | |||
| 0ead87b247 | |||
| 9d0eb333a9 | |||
| 7e705652ee | |||
| f848464b20 | |||
| c87f936b4b | |||
| ed866eef1b | |||
| 53b16996d0 | |||
| 48dae96a1c |
@@ -34,22 +34,46 @@ jobs:
|
||||
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
|
||||
run: |
|
||||
cd cross_compile
|
||||
docker compose build cc-base
|
||||
|
||||
# ── Stage 2: cc-toolchain ─────────────────────────────────────────
|
||||
- name: Build cc-toolchain
|
||||
run: docker compose -f cross_compile/compose.yaml build cc-toolchain
|
||||
run: |
|
||||
cd cross_compile
|
||||
docker compose build cc-toolchain
|
||||
|
||||
# ── Stage 3: vendor-packages ──────────────────────────────────────
|
||||
- name: Build vendor-packages
|
||||
run: docker compose -f cross_compile/compose.yaml build vendor-packages
|
||||
run: |
|
||||
cd cross_compile
|
||||
docker compose build vendor-packages
|
||||
|
||||
# ── Stage 4: ros2 ─────────────────────────────────────────────────
|
||||
- name: Build ROS 2
|
||||
run: docker compose -f cross_compile/compose.yaml build ros2
|
||||
run: |
|
||||
cd cross_compile
|
||||
docker compose build ros2
|
||||
|
||||
# ── Summary ───────────────────────────────────────────────────────
|
||||
- name: Image summary
|
||||
@@ -60,4 +84,22 @@ jobs:
|
||||
--filter "reference=cc-*" \
|
||||
--filter "reference=*/cc-*" \
|
||||
--format "| \`{{.Repository}}:{{.Tag}}\` | {{.Size}} |" \
|
||||
>> $GITHUB_STEP_SUMMARY
|
||||
>> $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}
|
||||
@@ -0,0 +1,76 @@
|
||||
name: Push Cross-Compiled Image to Gitea Registry
|
||||
|
||||
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:
|
||||
push:
|
||||
runs-on: ubuntu-22.04 # 换成你实际能正常调度的label
|
||||
env:
|
||||
PLATFORM: ${{ inputs.platform }}
|
||||
ROS_DISTRO: ${{ inputs.ros_distro }}
|
||||
|
||||
steps:
|
||||
- name: Check local image exists
|
||||
run: |
|
||||
IMAGE="${PLATFORM}/cc-ros-${ROS_DISTRO}:latest"
|
||||
echo "IMAGE=${IMAGE}" >> $GITHUB_ENV
|
||||
if ! docker image inspect "${IMAGE}" > /dev/null 2>&1; then
|
||||
echo "❌ 本地找不到镜像 ${IMAGE},请先跑构建 workflow"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ 找到本地镜像 ${IMAGE}"
|
||||
docker inspect --format='Size: {{.Size}} bytes' "${IMAGE}"
|
||||
|
||||
- name: Check token is set
|
||||
env:
|
||||
GITEA_TOKEN: ${{ secrets.ERIC_TOKEN }}
|
||||
run: |
|
||||
if [ -z "$GITEA_TOKEN" ]; then
|
||||
echo "❌ ERIC_TOKEN 是空的,检查secret名字"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ token长度: ${#GITEA_TOKEN}"
|
||||
|
||||
- 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: |
|
||||
SHA8=$(echo "${GITHUB_SHA}" | cut -c1-8)
|
||||
echo "SHA8=${SHA8}" >> $GITHUB_ENV
|
||||
docker tag "${IMAGE}" "localhost:3000/xixing-tech/cc-ros-${ROS_DISTRO}:${PLATFORM}-latest"
|
||||
docker tag "${IMAGE}" "localhost:3000/xixing-tech/cc-ros-${ROS_DISTRO}:${PLATFORM}-${SHA8}"
|
||||
|
||||
- name: Push image to Gitea registry
|
||||
run: |
|
||||
docker push "localhost:3000/xixing-tech/cc-ros-${ROS_DISTRO}:${PLATFORM}-latest"
|
||||
docker push "localhost:3000/xixing-tech/cc-ros-${ROS_DISTRO}:${PLATFORM}-${SHA8}"
|
||||
|
||||
- name: Summary
|
||||
if: always()
|
||||
run: |
|
||||
echo "### Pushed Image 🚀" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| tag | size |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "|---|---|" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| \`localhost:3000/xixing-tech/cc-ros-${ROS_DISTRO}:${PLATFORM}-latest\` | $(docker inspect --format='{{.Size}}' "${IMAGE}") bytes |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| \`localhost:3000/xixing-tech/cc-ros-${ROS_DISTRO}:${PLATFORM}-${SHA8}\` | 同上 |" >> $GITHUB_STEP_SUMMARY
|
||||
@@ -23,7 +23,7 @@ COPY --from=vendor_images ${TARGET_SYSROOT} ${TARGET_SYSROOT}
|
||||
COPY ros2/${ROS_DISTRO}/patch /workspace/patch
|
||||
COPY ros2/ros_cpp /workspace/src/ros_cpp
|
||||
|
||||
COPY rk3576/rk3576.toolchain.cmake /opt/cmake/
|
||||
# COPY rk3576/rk3576.toolchain.cmake /opt/cmake/
|
||||
|
||||
# apply patch
|
||||
RUN patch -p1 -d /workspace/src/ros2/rclcpp < /workspace/patch/memory_strategy.patch
|
||||
@@ -34,7 +34,7 @@ RUN touch src/ros2/geometry2/tf2_bullet/COLCON_IGNORE \
|
||||
&& touch src/diagnostics/diagnostic_remote_logging/COLCON_IGNORE
|
||||
|
||||
# -DPYTHON_SOABI=cpython-310-aarch64-linux-gnu
|
||||
RUN MAKEFLAGS="-j6" colcon build \
|
||||
RUN colcon build \
|
||||
--executor parallel \
|
||||
--parallel-workers 6 \
|
||||
--install-base ${TARGET_SYSROOT} \
|
||||
@@ -55,8 +55,6 @@ ARG ROS_ROOT
|
||||
ENV ROS_ROOT=${ROS_ROOT}
|
||||
COPY --from=ros_builder ${TARGET_SYSROOT} ${TARGET_SYSROOT}
|
||||
|
||||
RUN python3.10 -m pip install numpy==1.21.5
|
||||
|
||||
# rust install
|
||||
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
|
||||
RUN . "$HOME/.cargo/env" \
|
||||
|
||||
+1
-1
@@ -76,7 +76,7 @@ COPY vendor/packages/pcl_vendor workspace/src/pcl_vendor
|
||||
COPY --from=boost ${TARGET_SYSROOT} ${TARGET_SYSROOT}
|
||||
|
||||
RUN cd workspace \
|
||||
&& MAKEFLAGS="-j6" colcon build \
|
||||
&& colcon build \
|
||||
--install-base ${TARGET_SYSROOT} \
|
||||
--merge-install \
|
||||
--packages-up-to pcl_vendor \
|
||||
|
||||
Reference in New Issue
Block a user