Ход работы¶
Ниже — шаги из задания и то, как каждый из них выполнен в этом репозитории.
| № | Шаг задания | Как выполнено |
|---|---|---|
| 1 | Python, pip, virtualenv |
Python 3.11; окружение создаётся командой python3 -m venv .venv |
| 2 | Установить virtualenv, если нет |
использован встроенный модуль venv, которого достаточно для задачи |
| 3 | Каталог проекта и окружение | каталог vr-gaze-site/, окружение .venv/ |
| 4 | Зафиксировать зависимости, .gitignore |
requirements.txt с точными версиями; .gitignore исключает окружение, site/, _build/, кэш |
| 5 | Установить MkDocs, создать каркас | MkDocs 1.6.1 с темой Material 9.7.6; настройки в mkdocs.yml |
| 6 | Локальная сборка | mkdocs serve для предпросмотра, затем mkdocs build --strict |
| 7 | Репозиторий и отправка на GitHub | git init, репозиторий vr-gaze-site на GitHub |
| 8 | GitHub Actions, Pages → Source = GitHub Actions | .github/workflows/deploy.yml, публикация через upload-pages-artifact и deploy-pages |
| 9 | Сервер или аккаунт на хостинге | аккаунт Cloudflare; токен API и идентификатор аккаунта хранятся в секретах репозитория (CLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID) |
| 10 | Скорректировать YAML под площадку | отдельное задание deploy-cloudflare: сборка с другим SITE_URL, выкладка командой wrangler pages deploy |
| 11 | Базовый URL | site_url берётся из переменной окружения SITE_URL; use_directory_urls: true; ссылки относительные |
| 12 | Проверка не только на глаз | шаг healthcheck в CI: код ответа HTTP 200 и контрольная строка в HTML; поиск и отображение без внешних CDN |
| 13 | Лицензии | контент — CC BY 4.0 (LICENSE-CONTENT.md), код — MIT (LICENSE) |
| 14 | Отладка | раздел Отладка |
Базовый URL и подкаталог¶
MkDocs строит страницы с относительными ссылками, поэтому один и тот же site/ работает и в корне домена, и в подкаталоге. Абсолютный адрес нужен только для sitemap.xml и канонических ссылок. Он задаётся переменной окружения:
В CI сайт собирается дважды: с адресом GitHub Pages и с адресом на Cloudflare Pages. Типичная ошибка при размещении в подкаталоге — абсолютные пути вида /assets/...; здесь их нет.
Проверка результата развёртывания¶
После выкладки пайплайн запрашивает опубликованный адрес и проверяет код ответа и наличие контрольной строки в HTML:
Сайт не обращается к внешним серверам: шрифты отключены настройкой font: false, иконки и скрипты темы отдаются из самого сайта, формулы не используются. Поиск работает на клиенте с русской морфологией (lang: ru).
Настройки GitHub Pages: источник публикации — GitHub Actions, сайт доступен по адресу https://777werona-afk.github.io/vr-gaze-site/.

Успешный запуск workflow с проверкой после выкладки (шаг Healthcheck) на обоих хостингах показан на скриншоте зелёного запуска в разделе «Отладка».