Django-compressor не находит блоки для сжатия в GitHub Action

У меня есть проект Django, который использует django-compressor для минификации и конкатенации CSS файлов, используя автономное сжатие. Я еще не ставил его на сервер, но когда я запускаю manage.py compress в GitHub Action, перед запуском тестов, он не может найти блоки {% compress %}, хотя может найти содержащий их шаблон.

У меня есть один шаблон, который использует CSS файлы, templates/myapp/layouts/base.html:

<!DOCTYPE html>
{% load compress static %}
<html lang="en">
<head>
  <!-- ... -->
  {% compress css file global %}
    <link rel="stylesheet" href="{% static 'oohdir/css/global/variables.css' %}">
    <link rel="stylesheet" href="{% static 'oohdir/css/global/reset.css' %}">
    <link rel="stylesheet" href="{% static 'oohdir/css/global/form.css' %}">
    <!-- etc -->
  {% endcompress %}

При локальном запуске сайта я могу иметь такие настройки Django:

DEBUG = False
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True

и когда я запускаю manage.py compress, он генерирует один файл CSS, как и ожидалось, в static_collected/CACHE/CSS/. Этот файл связан с HTML, когда я просматриваю страницы в браузере (используя manage.py runserver --insecure).

Но когда я запускаю свой GitHub Action, многие тесты не работают из-за отсутствия файла, который django-compressor не сгенерировал.

Если я запускаю manage.py compress --verbosity 2 в Action, я вижу, что он находит правильный шаблон среди всех остальных:

Found templates:
        ...
        myapp/inc/form_field.html
        myapp/layouts/base.html
        admin/tree_list.html
        ...

Но он не считает, что в нем есть что сжимать:

Compressing... done
Compressed 0 block(s) from 9 template(s) for 1 context(s).

Это должно быть 1 block(s). Я в тупике.

Благодаря шпаргалке Дэна я нашел проблему: в своем GitHub Action я запускал manage.py compress перед manage.py collectstatic - думая, что collectstatic нужно будет собрать сгенерированный, сжатый файл(ы) CSS.

Но это должно быть наоборот, чтобы все статические файлы были собраны на месте, прежде чем compress сможет сделать свою работу над ними.

Теперь шаг моих тестов выглядит примерно так:

      - name: Run Tests
        run: |
          ./manage.py collectstatic --verbosity=0 --noinput
          ./manage.py compress --verbosity=0
          flake8 myproject
          black . --check
          coverage run ./manage.py test
        env:
          [all my env vars]
Вернуться на верх