Перейти к содержимому

Публикация

«Сохранить» хранит правки в CMS. «Опубликовать» выкладывает сохранённую версию на сайт: CMS запускает workflow GitHub Actions в репозитории сайта, а он собирает сайт с опубликованным контентом и выкладывает его на хостинг.

Сборка берёт контент у CMS по открытому адресу — без паролей:

GET https://<CMS>/api/sites/<сайт>/published

Там только опубликованная версия: сохранённые, но не опубликованные правки сюда не попадают. До первой публикации — начальный контент сайта. В коде сайта это site.loadPublishedContent().

Фото из контента лежат в CMS по адресам /media/<сайт>/…. Статическая сборка копирует их к себе. Сайт на сервере может отдавать их через маршрут, который добавляет интеграция.

Workflow запускается вручную — через workflow_dispatch, — именно так его запускает CMS:

.github/workflows/deploy.yml
name: Deploy
on:
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run build
# дальше — выкладка dist/ на хостинг сайта, например по SFTP
  1. Создайте fine-grained токен с доступом только к репозиторию сайта и правом Actions: Read and write.
  2. В CMS: Сайты → Настройки сайта → раздел Публикация → репозиторий, файл workflow, ветка и токен → Подключить. CMS сразу проверит, что видит workflow с этим токеном.

Токен хранится только на сервере CMS, страницы видят лишь его последние четыре символа.

После «Опубликовать» редактор показывает, как идёт выкладка: «Сайт обновляется…», «Опубликовано, сайт обновлён» или «Сайт не обновился» с кнопкой «Опубликовать ещё раз». CMS не запускает сборку впустую: не чаще раза в 30 секунд, не пока идёт прошлая и не повторно для уже выложенной версии.