.github/workflows/mysql.yml

Summary

Maintainability
Test Coverage
name: MySQL

on:
  push:
    branches: [ master, testing, stable ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.6, 3.7, 3.8, 3.9, "3.10"]

    # Service containers to run with `runner-job`
    services:
      # Label used to access the service container
      mysql:
        image: mariadb:latest
        env:
          MYSQL_USER: kotti
          MYSQL_PASSWORD: kotti
          MYSQL_DATABASE: kotti
          MYSQL_ROOT_PASSWORD: kotti
        options: >-
          --health-cmd="mysqladmin ping"
          --health-interval=5s
          --health-timeout=2s
          --health-retries=3
        ports:
          # Maps tcp port 3306 on service container to the host
          - 3306:3306

    steps:
    - uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -e ".[testing]"
        pip install mysqlclient
    # - 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. The GitHub editor is 127 chars wide
    #     flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    - name: Verify MySQL connection
      env:
        PORT: ${{ job.services.mysql.ports[3306] }}
      run: |
        while ! mysqladmin ping -h"127.0.0.1" -P"$PORT" --silent; do
          sleep 1
        done
    - name: Test with pytest
      run: |
        pytest
      env:
        KOTTI_TEST_DB_STRING: mysql://kotti:kotti@127.0.0.1:3306/kotti