Автоматизация тем

Всем привет, я здесь новичок :slight_smile:

Я запускаю Docker-версию Bitnami Discourse (последнюю) в кластере Kubernetes. Проект действительно впечатляет. Однако у меня возникла проблема с автоматизацией установки темы. По сути, мне нужно собрать, развернуть, запустить и настроить этот Docker-образ в рамках CI/CD, чтобы при первом входе всё уже было готово. Что касается настроек, то здесь требуется установка кастомной темы. Насколько я понял из различных форумов и документации, нативного способа программной установки нет; я нашёл только пошаговое руководство с кликами (поправьте, если я ошибаюсь).

Моя первая идея заключалась в том, чтобы «вручную» добавить файлы темы в файловую систему Discourse через Kubernetes, но, как я вижу, Discourse управляет своими файлами странным образом: переименовывает их согласно собственной внутренней логике, что делает предсказание невозможным.

При более детальном изучении я обнаружил отличный CLI под названием discourse_theme. Проблема в том, что мне всё равно нужно сначала сгенерировать API-ключ в Discourse, иначе он не будет работать (опять же, поправьте, если я не прав).

В итоге у меня есть несколько вопросов:

  1. Существует ли другой или нативный способ программной установки темы в Discourse, который я упустил?
  2. Есть ли способ получить API-ключ из Discourse через скрипт?
  3. Знает ли кто-нибудь какие-нибудь трюки Kubernetes для обхода подобных проблем?

Заранее большое спасибо.

С наилучшими пожеланиями

Это поддерживается при использовании нашего официального метода установки: Install a Theme programatically

Я считаю, что единственное решение — создать образ, включающий необходимые плагины, выгрузить его в репозиторий Docker, запустить с соответствующими переменными окружения и убедиться, что база данных была мигрирована, а ассеты скомпилированы и выгружены в S3 (по крайней мере) при первом запуске образа. Возможно, стоит выполнить миграцию один раз с установленной переменной SKIP_POST_DEPLOYMENT_MIGRATIONS, пока работает старый образ, а затем снова после запуска нового образа и остановки старых, отключив SKIP_POST_DEPLOYMENT_MIGRATIONS, или запустить задачу Rake db:ensure_post_migrations.

Вы можете запустить задачу Rake в одном из ваших работающих образов, например:

         rake api_key:create_master['описание ключа']

Вышеизложенного может быть достаточно, чтобы вы продвинулись немного дальше. Ранее я запускал экземпляры Kubernetes для клиентов на GCP и AWS. Я никогда не был на 100% удовлетворён тем, как это работало (с точки зрения клиента всё работало идеально, просто с моей точки зрения это было не очень элегантно, но и не настолько неэлегантно, чтобы я стал это исправлять!). У меня больше нет ничего предложить здесь, но не стесняйтесь связаться со мной напрямую, если вам понадобится дополнительная помощь.