Skip to content

[fix] workflow

[fix] workflow #29

Workflow file for this run

name: Python CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
lint:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python with uv
uses: astral-sh/setup-uv@v2
with:
uv-version: latest
- name: Create virtual environment
run: uv venv
- name: Add venv to environment
run: echo "$PWD/.venv/bin" >> $GITHUB_PATH
- name: Install linters
run: uv pip install black flake8
- name: Check code formatting with Black
run: |
echo "🔍 Checking code formats..."
uv run black main.py meshbot/ scripts/ .
- name: Lint with flake8
run: |
uv run flake8 meshbot/ main.py scripts/ \
--max-line-length=88 \
--ignore=E203,W503,E501,F541 \
--exclude=__pycache__,*.egg-info,build,dist,.git,.venv,venv,env,site-packages
# 在 test job 中使用这个替代方案
test:
runs-on: ubuntu-latest
needs: lint
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python with uv
uses: astral-sh/setup-uv@v2
with:
uv-version: latest
- name: Create virtual environment
run: uv venv
- name: Add venv to environment
run: echo "$PWD/.venv/bin" >> $GITHUB_PATH
- name: Install dependencies
run: |
uv pip install -r requirements.txt
uv pip install pytest
- name: Create test configuration
run: |
# 使用 Python 创建配置,确保格式正确
uv run python -c "
import json
import os
config = {
'platform': 'ollama',
'api_keys': {
'openai': 'test-key',
'deepseek': 'test-key',
'openrouter': 'test-key',
'gemini': 'test-key',
'claude': 'test-key',
'siliconflow': 'test-key',
'fastapi': 'test-token'
},
'model_settings': {
'ollama': 'qwen2.5:7b',
'openai': 'gpt-3.5-turbo',
'deepseek': 'deepseek-chat',
'openrouter': 'openai/gpt-3.5-turbo',
'gemini': 'gemini-pro',
'claude': 'claude-3-sonnet-20240229',
'siliconflow': 'deepseek-ai/DeepSeek-V2-Chat',
'fastapi': 'fastapi-default'
},
'service_urls': {
'websockets': 'ws://localhost:9238',
'fastapi': 'http://127.0.0.1:8000'
}
}
with open('config.json', 'w', encoding='utf-8') as f:
json.dump(config, f, indent=2, ensure_ascii=False)
print('✅ Created config.json for testing')
print(f'File exists: {os.path.exists(\"config.json\")}')
"
- name: Verify main module imports
run: |
# 先测试基本导入,再测试 main
uv run python -c "
print('Testing imports...')
try:
from meshbot.config.config_loader import load_config
print('✅ config_loader imports successfully')
import main
print('✅ main module imported successfully')
except Exception as e:
print(f'❌ Import failed: {e}')
import traceback
traceback.print_exc()
"
- name: Setup environment file
run: |
if [ ! -f .env ]; then
cp .env.example .env
echo "✅ Created .env from .env.example"
else
echo "ℹ️ .env already exists, skipping copy"
fi
- name: Run tests
run: |
uv run pytest -v --tb=short
continue-on-error: true