diff --git a/.github/workflows/build-images.yaml b/.github/workflows/build-images.yaml index 55e48b8..f50ac88 100644 --- a/.github/workflows/build-images.yaml +++ b/.github/workflows/build-images.yaml @@ -91,15 +91,15 @@ jobs: env: GITEA_TOKEN: ${{ secrets.ERIC_TOKEN }} run: | - echo "${GITEA_TOKEN}" | docker login gitea:3000 -u EricXZ --password-stdin + echo "${GITEA_TOKEN}" | docker login localhost: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 + 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 gitea:3000/xixing-tech/cc-ros-lyrical:${PLATFORM}-${ROS_DISTRO}-${GITHUB_SHA::8} + 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 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} \ No newline at end of file + 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} \ No newline at end of file diff --git a/.github/workflows/push-image.yaml b/.github/workflows/push-image.yaml new file mode 100644 index 0000000..be0dfa9 --- /dev/null +++ b/.github/workflows/push-image.yaml @@ -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 \ No newline at end of file