# This Evennia workflow will install Python dependencies, run tests with a variety of Python versions # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: test-suite on: push: branches: [ master, develop ] paths-ignore: - 'docs/**' pull_request: branches: [ master, develop ] jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.9", "3.10"] TESTING_DB: ['sqlite3', 'postgresql', 'mysql'] steps: - uses: actions/checkout@v2 - name: Set up PostgreSQL server uses: harmon758/postgresql-action@v1 if: ${{ matrix.TESTING_DB == 'postgresql' }} with: postgresql version: '10.7' postgresql db: 'evennia' postgresql user: 'evennia' postgresql password: 'password' - name: Set up MySQL server uses: mirromutth/mysql-action@v1.1 if: ${{ matrix.TESTING_DB == 'mysql'}} with: host port: 3306 # character set server: 'utf8mb4' # collation server: 'utf8mb4_unicode_ci' character set server: 'utf8' collation server: 'utf8_general_ci' default storage engine: 'InnoDB' mysql database: 'evennia' mysql user: 'evennia' mysql password: 'password' # wait for db to activage, get logs from their start - name: Wait / sleep uses: jakejarvis/wait-action@v0.1.0 if: ${{ matrix.TESTING_DB == 'postgresql' || matrix.TESTING_DB == 'mysql' }} with: time: '10s' - name: Database container logs uses: jwalton/gh-docker-logs@v1.0.0 - name: Check running containers run: docker ps -a - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Install package dependencies run: | python -m pip install --upgrade pip pip install wheel pip install psycopg2-binary==2.8.6 # fix issue for Django 2.2 pip install mysqlclient pip install coveralls pip install codacy-coverage pip install -e . - name: Install extra dependencies run: pip install -r requirements_extra.txt - name: Initialize evennia run: | evennia --init testing_mygame cp .github/workflows/${{ matrix.TESTING_DB }}_settings.py testing_mygame/server/conf/settings.py cd testing_mygame evennia migrate evennia collectstatic --noinput - name: Run test suite run: | cd testing_mygame coverage run --source=../evennia --omit=*/migrations/*,*/urls.py,*/test*.py,*.sh,*.txt,*.md,*.pyc,*.service ../bin/unix/evennia test --settings=settings --keepdb evennia coverage xml # we only want to run coverall/codacy once, so we only do it for one of the matrix combinations # it's also not critical if pushing to either service fails (happens for PRs since env is not # available outside of the evennia org) - name: Send data to Coveralls if: ${{ matrix.TESTING_DB == 'sqlite3' && matrix.python-version == "3.10" }} continue-on-error: true env: COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} run: | cd testing_mygame coveralls - name: Send data to Codacy if: ${{ matrix.TESTING_DB == 'sqlite3' && matrix.python-version == "3.10" }} continue-on-error: true uses: codacy/codacy-coverage-reporter-action@master with: project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} coverage-reports: ./testing_mygame/coverage.xml # docker setup and push - name: Set up QEMU if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == "3.10" uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == "3.10" uses: docker/setup-buildx-action@v1 - name: Login to DockerHub if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == "3.10" && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop') uses: docker/login-action@v1 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push for master if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == "3.10" && github.ref == 'refs/heads/master' id: docker_build_master uses: docker/build-push-action@v2 with: push: true tags: evennia/evennia:latest - name: Build and push for develop if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == "3.10" && github.ref == 'refs/heads/develop' id: docker_build_develop uses: docker/build-push-action@v2 with: push: true tags: evennia/evennia:develop