name: ci on: push: branches-ignore: - main pull_request: branches-ignore: - main jobs: ci: runs-on: ubuntu-latest services: postgres: image: postgres:latest ports: - 5432:5432 env: POSTGRES_PASSWORD: 123456 POSTGRES_USER: postgres options: --health-cmd=pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] tortoise-orm: - tortoise021 - tortoise022 - tortoise023 - tortoise024 # TODO: add dev back when drop python3.8 support # - tortoisedev steps: - name: Start MySQL run: sudo systemctl start mysql.service - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/poetry.lock') }} restore-keys: | ${{ runner.os }}-pip- - name: Install and configure Poetry run: | pip install -U pip if [[ "${{ matrix.python-version }}" == "3.8" ]]; then # poetry2.0+ does not support installed by python3.8, but can manage project using py38 python3.12 -m pip install "poetry>=2.0" else pip install "poetry>=2.0" fi poetry env use python${{ matrix.python-version }} - name: Install dependencies and check style run: poetry run make check - name: Install TortoiseORM v0.21 if: matrix.tortoise-orm == 'tortoise021' run: poetry run pip install --upgrade "tortoise-orm>=0.21,<0.22" - name: Install TortoiseORM v0.22 if: matrix.tortoise-orm == 'tortoise022' run: poetry run pip install --upgrade "tortoise-orm>=0.22,<0.23" - name: Install TortoiseORM v0.23 if: matrix.tortoise-orm == 'tortoise023' run: poetry run pip install --upgrade "tortoise-orm>=0.23,<0.24" - name: Install TortoiseORM v0.24 if: matrix.tortoise-orm == 'tortoise024' run: | if [[ "${{ matrix.python-version }}" == "3.8" ]]; then echo "Skip test for tortoise v0.24 as it does not support Python3.8" else poetry run pip install --upgrade "tortoise-orm>=0.24,<0.25" fi - name: Install TortoiseORM develop branch if: matrix.tortoise-orm == 'tortoisedev' run: | if [[ "${{ matrix.python-version }}" == "3.8" ]]; then echo "Skip test for tortoise develop branch as it does not support Python3.8" else poetry run pip uninstall -y tortoise-orm poetry run pip install --upgrade "git+https://github.com/tortoise/tortoise-orm" fi - name: CI env: MYSQL_PASS: root MYSQL_HOST: 127.0.0.1 MYSQL_PORT: 3306 POSTGRES_PASS: 123456 POSTGRES_HOST: 127.0.0.1 POSTGRES_PORT: 5432 run: poetry run make _testall - name: Verify aiomysql support # Only check the latest version of tortoise if: matrix.tortoise-orm == 'tortoise024' run: | poetry run pip uninstall -y asyncmy poetry run make test_mysql poetry run pip install asyncmy env: MYSQL_PASS: root MYSQL_HOST: 127.0.0.1 MYSQL_PORT: 3306 - name: Verify psycopg support # Only check the latest version of tortoise if: matrix.tortoise-orm == 'tortoise024' run: poetry run make test_psycopg env: POSTGRES_PASS: 123456 POSTGRES_HOST: 127.0.0.1 POSTGRES_PORT: 5432