Skip to content

Merge pull request #86 from ppfeufer/weblate-translation #427

Merge pull request #86 from ppfeufer/weblate-translation

Merge pull request #86 from ppfeufer/weblate-translation #427

name: Tests
on:
push:
branches:
- '**'
tags-ignore:
- '**'
pull_request:
branches:
- '**'
tags-ignore:
- '**'
jobs:
# Run pre-commit Checks
pre-commit:
name: Pre Commit Checks
runs-on: ubuntu-latest
steps:
# Checkout the repository
- name: Checkout
uses: actions/checkout@v4
# Set up Python
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: 'pyproject.toml' # Read the Python version from the pyproject.toml file
# Set up Node.js
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- run: npm install
- name: Run Pre Commit Checks
uses: pre-commit/action@v3.0.1
# Run Test Coverage
test-coverage:
needs: [pre-commit]
name: AA Latest (Python ${{ matrix.python-version }} with ${{ matrix.database }})
runs-on: ubuntu-latest
strategy:
# Set Python versions to test against
matrix:
python-version:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
- '3.12'
# 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.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.12' }}
# Set up services
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:
# Checkout the repository
- name: Checkout
uses: actions/checkout@v4
# Install redis
- name: Install redis
run: sudo apt-get install -y redis-tools redis-server
# Verify that redis is up
- name: Verify that redis is up
run: redis-cli ping
# Set up Python
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# Install Tox and any other packages
- name: Install Tox and any other packages
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade tox tox-gh-actions
# Run Tox with the specified environment
- name: Run Tox
env:
TOX_ENV: allianceauth-latest
DB_HOST: 127.0.0.1
DB_USER: root
DB_PASSWORD: temp_password_aa_tox_tests
run: tox -v -e ${{ env.TOX_ENV }}
# Upload coverage to Codecov
- name: Upload Coverage
if: ${{
(
github.event_name == 'pull_request'
|| (
github.event_name == 'push'
&& github.ref == 'refs/heads/master'
)
)
&& (
matrix.python-version == '3.10'
&& matrix.database == 'mariadb:10.11'
)
}}
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml # optional
# flags: unittests # optional
# name: codecov-umbrella # optional
# fail_ci_if_error: true # optional (default = false)
verbose: true # optional (default = false)
# Run PyPi Build Test
pypi-build-test:
needs: [ test-coverage ]
name: PyPi Build Test
runs-on: ubuntu-latest
steps:
# Checkout the repository
- name: Checkout
uses: actions/checkout@v4
# Set up Python
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: 'pyproject.toml' # Read the Python version from the pyproject.toml file
# Install Tools
- name: Install Tools
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade build
python -m pip install --upgrade setuptools wheel
# Build Package
- name: Package Build
env:
STACKMANAGER_VERSION: 9999
run: |
python -m build
# Upload Build Artifacts
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: build-${{ github.event_name }}-${{ github.sha }}
path: dist
if-no-files-found: ignore