Skip to content

Merge pull request #164 from ppfeufer/weblate-translation #616

Merge pull request #164 from ppfeufer/weblate-translation

Merge pull request #164 from ppfeufer/weblate-translation #616

name: Tests
on:
push:
branches:
- '**'
tags-ignore:
- '**'
pull_request:
branches:
- '**'
tags-ignore:
- '**'
jobs:
# pre-commit Checks
pre-commit:
name: Pre Commit Checks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version-file: 'pyproject.toml' # Read python version from a file pyproject.toml
- name: Run Pre Commit Checks
uses: pre-commit/[email protected]
# Run Test Coverage
test-coverage-aa-stable:
needs: [pre-commit]
name: AA Latest (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }} with ${{ matrix.database }})
runs-on: ubuntu-latest
strategy:
# Set Python and Django version to test for the stable release of AllianceAuth
matrix:
# Don't forget to change the Python version for [upload-coverage] as well
python-version:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
# Don't forget to change the Django version for [upload-coverage] as well
django-version:
- '4.0'
# MySQL versions to test against
database:
# https://endoflife.date/mysql
- mysql:8.0 # [LTS] Maintained until: 30 Apr 2026
- mysql:8.1 # Latest official release
# https://endoflife.date/mariadb and https://mariadb.com/kb/en/mariadb-server-release-dates/
- mariadb:10.4 # Maintained until: 18 June 2024
- mariadb:10.5 # Maintained until: 24 June 2025
- mariadb:10.6 # [LTS] Maintained until: July 2026
- mariadb:10.10 # Maintained until: November 2023
- mariadb:10.11 # [LTS] Maintained until: February 2028
- mariadb:11.0 # Maintained until: June 2024
- mariadb:11.1 # Maintained until: August 2024
# continue-on-error: ${{ matrix.python-version == '3.11-dev' }}
services:
database:
image: ${{ matrix.database }}
env:
MYSQL_ROOT_PASSWORD: temp_password_aa_tox_tests
MYSQL_DATABASE: tox_allianceauth
ports:
- 3306:3306
options: --tmpfs /var/lib/mysql
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install redis
run: sudo apt-get install -y redis-tools redis-server
- name: Verify that redis is up
run: redis-cli ping
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Tox and any other packages
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade tox tox-gh-actions
- name: Run Tox
env:
TOX_ENV: allianceauth-stable
DB_HOST: 127.0.0.1
DB_USER: root
DB_PASSWORD: temp_password_aa_tox_tests
# Run tox using the version of Python in `PATH`
run: tox -v -e ${{ env.TOX_ENV }}
- name: Upload Coverage Artifacts
if: ${{
(
github.event_name == 'pull_request' ||
(
github.event_name == 'push' &&
github.ref == 'refs/heads/master'
)
) &&
(
matrix.python-version == '3.10' &&
matrix.django-version == '4.0'
)
}}
uses: actions/upload-artifact@v3
with:
name: coverage-${{ github.event_name }}-${{ github.sha }}
path: coverage.xml
if-no-files-found: ignore
# test-coverage-aa-dev:
# needs: [ test-coverage-aa-stable ]
# name: AA Dev (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }} with ${{ matrix.database }})
# runs-on: ubuntu-latest
#
# strategy:
# # Set Python and Django version to test for the alpha/beta release of AllianceAuth
# matrix:
# # Python versions
# python-version:
# - '3.8'
# - '3.9'
# - '3.10'
# - '3.11'
# # Django versions
# django-version:
# - '4.0'
# # MySQL versions to test against
# database:
# - mysql:5.7
# - mysql:8.0
# - mariadb:10.3
# - mariadb:10.4
# - mariadb:10.5
# - mariadb:10.6
# - mariadb:10.7
# - mariadb:10.8
# - mariadb:10.9
#
# continue-on-error: ${{ matrix.python-version == '3.11' }}
#
# services:
# database:
# image: ${{ matrix.database }}
# env:
# MYSQL_ROOT_PASSWORD: foobar
# MYSQL_DATABASE: tox_allianceauth
# ports:
# - 3306:3306
# options: --tmpfs /var/lib/mysql
#
# steps:
# - name: Checkout
# uses: actions/checkout@v4
#
# - name: Install redis
# run: sudo apt-get install -y redis-tools redis-server
#
# - name: Verify that redis is up
# run: redis-cli ping
#
# - name: Setup Python ${{ matrix.python-version }}
# uses: actions/setup-python@v4
# with:
# python-version: ${{ matrix.python-version }}
#
# - name: Install Tox and any other packages
# run: |
# python -m pip install --upgrade pip
# python -m pip install --upgrade tox tox-gh-actions
#
# - name: Run Tox
# # Run tox using the version of Python in `PATH`
# run: tox -v
# env:
# DJANGO: ${{ matrix.django-version }}
# ALLIANCEAUTH: testing
# DB_HOST: 127.0.0.1
# DB_USER: root
# DB_PASSWORD: temp_password_aa_tox_tests
# Coverage upload to Codecov
upload-coverage:
if: ${{
github.event_name == 'pull_request' ||
(github.event_name == 'push' && github.ref == 'refs/heads/master')
}}
needs: [ test-coverage-aa-stable ]
# needs: [ test-coverage-aa-stable, test-coverage-aa-dev ]
name: Upload Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Display the structure of the downloaded files
run: ls -Rrtlh
working-directory: artifacts
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos
files: artifacts/coverage-${{ github.event_name }}-${{ github.sha }}/coverage.xml # optional
# flags: unittests # optional
# name: codecov-umbrella # optional
# fail_ci_if_error: true # optional (default = false)
verbose: true # optional (default = false)
# Pypi Build Test
pypi-build-test:
needs: [ test-coverage-aa-stable ]
# needs: [ test-coverage-aa-stable, test-coverage-aa-dev ]
name: PyPi Build Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version-file: 'pyproject.toml' # Read python version from a file pyproject.toml
- name: Install Tools
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade build
python -m pip install --upgrade setuptools wheel
- name: Package Build
env:
STACKMANAGER_VERSION: 9999
run: |
python -m build
- name: Upload Build Artifacts
uses: actions/upload-artifact@v3
with:
name: build-${{ github.event_name }}-${{ github.sha }}
path: dist
if-no-files-found: ignore