name: Python CI on: push: branches: [ main, master ] pull_request: branches: [ main, master ] jobs: test: runs-on: ubuntu-latest strategy: matrix: # 确保使用正确的Python版本格式 python-version: ['3.9','3.10', '3.11'] # 允许一个版本失败不影响其他版本的测试 fail-fast: false steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip # 使用--use-deprecated=legacy-resolver来更好地处理依赖冲突 pip install -r requirements.txt --use-deprecated=legacy-resolver # 注意:这里我删除了 pytest,只保留业务需要的 faiss-cpu (如果requirements.txt里有了也可以删掉) pip install faiss-cpu - name: Run syntax checks run: | # Check if all Python files can be imported (Syntactical check) # 这行命令非常有必要保留,它能帮你检查代码有没有语法错误 python -m compileall -f . lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.10' - name: Install linting tools run: | python -m pip install --upgrade pip pip install flake8 pylint - name: Lint with flake8 run: | # Stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # Exit-zero treats all errors as warnings. flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics