feat: Machinery configuration via API #28295
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright © Michal Čihař <[email protected]> | |
# | |
# SPDX-License-Identifier: GPL-3.0-or-later | |
name: Test | |
on: | |
push: | |
branches-ignore: | |
- deepsource-fix-** | |
- renovate/** | |
- weblate | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
jobs: | |
test: | |
runs-on: ubuntu-24.04 | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
matrix: | |
python-version: | |
- '3.11' | |
- '3.13' | |
requirements: | |
- latest | |
database: | |
- postgresql | |
experimental: [false] | |
include: | |
# Reduced testing for mysql | |
- python-version: '3.13' | |
requirements: latest | |
database: mysql | |
experimental: false | |
# Reduced testing for mariadb | |
- python-version: '3.13' | |
requirements: latest | |
database: mariadb | |
experimental: false | |
# Reduced testing for minimal deps | |
- python-version: '3.11' | |
requirements: minimal | |
database: postgresql | |
experimental: false | |
# Reduced testing for edge deps | |
- python-version: '3.13' | |
requirements: edge | |
database: postgresql | |
experimental: true | |
# Test with Python 3.12. | |
- python-version: '3.12' | |
requirements: latest | |
database: postgresql | |
experimental: false | |
name: py${{ matrix.python-version }}, ${{ matrix.database }}, ${{ matrix.requirements }} deps | |
env: | |
CI_DATABASE: ${{ matrix.database }} | |
CI_REDIS_HOST: 127.0.0.1 | |
CI_REDIS_PORT: '60001' | |
CI_DB_PASSWORD: weblate | |
CI_DB_HOST: 127.0.0.1 | |
CI_DB_PORT: '60000' | |
CI_SELENIUM: '1' | |
DJANGO_SETTINGS_MODULE: weblate.settings_test | |
PYTHONWARNINGS: default,ignore:unclosed:ResourceWarning | |
PYTHONUNBUFFERED: 1 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: astral-sh/setup-uv@v4 | |
with: | |
enable-cache: true | |
cache-dependency-glob: '' | |
cache-suffix: ${{ matrix.python-version }} | |
- name: Start services | |
run: ./ci/services-up ${{ matrix.database }} | |
- name: Install apt dependencies | |
run: sudo ./ci/apt-install $CI_DATABASE | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Used versions | |
run: ./ci/print-versions | |
- name: Install Python dependencies | |
run: ./ci/pip-install ${{ matrix.requirements }} | |
- name: Prepare database | |
run: ./ci/prepare-database | |
- name: Compile MO files | |
run: uv run --no-sources coverage run ./manage.py compilemessages | |
- name: Collect static files | |
run: uv run --no-sources coverage run ./manage.py collectstatic --noinput --verbosity 0 | |
- name: Migrate database | |
run: uv run --no-sources coverage run ./manage.py migrate --noinput --traceback | |
- name: Django checks | |
run: uv run --no-sources coverage run ./manage.py check | |
- name: Demo import | |
run: uv run --no-sources coverage run ./manage.py import_demo | |
- name: Test with Django | |
run: | | |
uv run --no-sources --all-extras pytest --junitxml=junit.xml --cov=weblate weblate | |
cp .coverage .coverage.pytest | |
- name: Test wsgi startup | |
env: | |
PYTHONPATH: . | |
run: uv run --no-sources coverage run weblate/wsgi.py | |
- name: Coverage | |
run: | | |
uv run --no-sources coverage combine | |
uv run --no-sources coverage xml | |
- uses: codecov/codecov-action@v5 | |
with: | |
token: ${{secrets.CODECOV_TOKEN}} | |
flags: unittests | |
name: Tests py${{ matrix.python-version }}, ${{ matrix.database }}, ${{ matrix.requirements }} deps | |
- name: Upload test results to Codecov | |
if: ${{ !cancelled() }} | |
uses: codecov/test-results-action@v1 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: DeepSource | |
uses: deepsourcelabs/[email protected] | |
if: ${{ github.event_name == 'push' }} | |
with: | |
key: python | |
coverage-file: coverage.xml | |
dsn: ${{ secrets.DEEPSOURCE_DSN }} | |
- name: Stop services | |
if: always() | |
run: ./ci/services-down ${{ matrix.database }} |