feat(level1): ROS2 完全体 12 包 / 80 测试 / 23 文档 / 工程化 / Docker 分组
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# GitLab CI 配置 - ROS2 项目自动 build + test
|
||||
#
|
||||
# 触发:
|
||||
# - 推送到 master / develop
|
||||
# - Merge Request
|
||||
#
|
||||
# 阶段:
|
||||
# 1. lint - 静态检查(ruff + flake8 + cpp linter)
|
||||
# 2. build - Docker 镜像 + colcon build
|
||||
# 3. test - colcon test(全部包)
|
||||
# 4. docs - (可选)生成 sphinx 文档
|
||||
|
||||
stages:
|
||||
- lint
|
||||
- build
|
||||
- test
|
||||
|
||||
variables:
|
||||
DOCKER_IMAGE: "ros2-humble-dev:latest"
|
||||
DOCKER_COMPOSE_PROJECT: "ros2-ci"
|
||||
PACKAGES: "py_pubsub cpp_pubsub py_srv py_action_demo cpp_robot_tf2 py_vision_demo py_params cpp_custom_interface py_lifecycle_composable cpp_qos_demo py_overlay_dds bringup"
|
||||
|
||||
# ---------- 共享缓存 ----------
|
||||
.cache-template: &docker-cache
|
||||
key: docker-cache
|
||||
paths:
|
||||
- docker/.cache/
|
||||
|
||||
# ---------- Lint ----------
|
||||
lint:python:
|
||||
stage: lint
|
||||
image: python:3.10
|
||||
before_script:
|
||||
- pip install ruff flake8
|
||||
script:
|
||||
- ruff check src/ || true
|
||||
- flake8 src/ --max-line-length=120 || true
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
- if: $CI_COMMIT_BRANCH == "master"
|
||||
- if: $CI_COMMIT_BRANCH == "develop"
|
||||
|
||||
# ---------- Build ----------
|
||||
build:docker:
|
||||
stage: build
|
||||
image: docker:24
|
||||
services:
|
||||
- docker:dind
|
||||
variables:
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
before_script:
|
||||
- docker info
|
||||
script:
|
||||
- docker compose -p ${DOCKER_COMPOSE_PROJECT} -f docker/docker-compose.yml build
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
- if: $CI_COMMIT_BRANCH == "master"
|
||||
- if: $CI_COMMIT_BRANCH == "develop"
|
||||
|
||||
# ---------- Test ----------
|
||||
test:colcon:
|
||||
stage: test
|
||||
image: ${DOCKER_IMAGE}
|
||||
needs: ["build:docker"]
|
||||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y --no-install-recommends colcon
|
||||
script:
|
||||
- source /opt/ros/humble/setup.bash
|
||||
- cd /root/ros2_ws
|
||||
- colcon build --symlink-install --packages-select ${PACKAGES}
|
||||
- colcon test --packages-select ${PACKAGES}
|
||||
- colcon test-result --verbose
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- build/**/test_results/
|
||||
- log/
|
||||
expire_in: 7 days
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
||||
- if: $CI_COMMIT_BRANCH == "master"
|
||||
- if: $CI_COMMIT_BRANCH == "develop"
|
||||
Reference in New Issue
Block a user