# Gitee Go CI 流水线 triggers: push: branches: - master - main pull_request: branches: - master - main stages: - lint - test - structure jobs: py-compile: name: 语法检查 stage: lint image: python:3.12 script: - python -c " import py_compile, os, sys; errors = 0; for root, dirs, files in os.walk('.'): dirs[:] = [d for d in dirs if d not in {'.git', '__pycache__', 'node_modules', 'embedded_python'}]; for f in files: if f.endswith('.py'): path = os.path.join(root, f); try: py_compile.compile(path, doraise=True); except py_compile.PyCompileError as e: print(f'ERROR: {e}'); errors += 1; if errors: print(f'{errors} 个文件有语法错误'); sys.exit(1); print('所有文件语法正确') " ruff-lint: name: Ruff lint stage: lint image: python:3.12 script: - pip install ruff -q - ruff check . --select E,F,W --ignore E501,E402 --exclude .git,__pycache__,embedded_python pytest-310: name: 插件测试 (Python 3.10) stage: test image: python:3.10 script: - pip install pytest colorama -q - pytest tests/ -v --tb=short pytest-311: name: 插件测试 (Python 3.11) stage: test image: python:3.11 script: - pip install pytest colorama -q - pytest tests/ -v --tb=short pytest-312: name: 插件测试 (Python 3.12) stage: test image: python:3.12 script: - pip install pytest colorama -q - pytest tests/ -v --tb=short structure: name: 项目结构检查 stage: structure image: python:3.12 script: - echo "检查项目结构..." - | files=( "ai_cli.py" "launcher.py" "xcli_core/cli_core.py" "xcli_core/cli_base.py" "xcli_core/config.py" "xcli_core/constants.py" "ai_engines/ollama_engine.py" "ai_engines/openai_engine.py" "plugins/code_editor.py" "plugins/cmd_executor.py" "plugins/file_manager.py" "plugins/auto_engineer.py" ) missing=0 for f in "${files[@]}"; do if [ -f "$f" ]; then echo " ✓ $f" else echo " ✗ $f (缺失!)" missing=$((missing + 1)) fi done if [ $missing -gt 0 ]; then echo "${missing} 个文件缺失" exit 1 fi echo "项目结构完整" - | engines=$(ls ai_engines/*_engine.py 2>/dev/null | wc -l) echo "AI 引擎数量: $engines" if [ "$engines" -gt 2 ]; then echo "警告: 引擎数量超过 2 个" exit 1 fi echo "引擎数量正常"