Приложение для пересборки лаунчера загружает последнюю версию Discourse с GitHub

Привет,

У меня уже установлен и запущен Discourse. При каждой пересборке приложения он подтягивает репозиторий launcher, Docker-образ discourse/base и репозиторий Discourse.

Я хочу ограничить это поведение, чтобы пересборка не проверяла обновления и не подтягивала их автоматически, если не передан специальный параметр.

Кто-нибудь делал что-то подобное?

Вы беспокоитесь о стабильности версии?

Почему бы вам просто не переключиться на стабильную ветку?

Я использую стабильную версию 3.2.0.

Цель состоит в том, чтобы получать обновления из репозитория GitHub или Docker Hub только тогда, когда это необходимо, а не при каждой пересборке контейнера.

Используете ли вы стандартную установку?

Если да, то почему бы просто не запустить команду rebuild?

Для справки: обновления стабильной версии могут быть важны — они обычно содержат исправления уязвимостей или критических ошибок.

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

Если вы хотите перезапустить контейнер без пересборки, просто выполните:

./launcher restart app

Зачем вам нужна пересборка без обновления — какая у вас цель?

В стабильных обновлениях вряд ли появятся какие-либо критические изменения.

Суть стабильной версии — отсутствие изменений. Зачем вы вообще пересобираете?

Причина, по которой происходит загрузка контейнера, — поддержание его в соответствии с требованиями кода Discourse.

Если вы хотите зайти в контейнер без выполнения pull, вы можете использовать:

 docker exec -it app bash

А если вы хотите добавить плагин без пересборки, вы можете зайти в директорию плагина, клонировать его и затем выполнить миграцию базы данных, но вам всё равно нужно убедиться, что вы получаете нужный коммит плагина для версии (строго) стабильной.

В случае добавления или удаления плагина команда ./launcher restart app не обновит экземпляр.

Учитывая, что стабильные релизы относительно редки, они очень редко вносят разрушающие изменения и обычно сопровождаются важными обновлениями безопасности, я не понимаю ваше требование.

На мой взгляд, установка плагина — это хороший повод обновиться и убедиться, что вы получили все доступные обновления.

Не обновляться на стабильной версии, на мой взгляд, плохая практика, так как это может подвергнуть вас известным уязвимостям на более длительный срок.

Я внес следующие изменения в лаунчер

echo "    --pull-git                 Получить последнюю версию из git-репозитория"
  echo "    --pull-image               Получить последнюю версию Docker-образа"

pull_git=false
pull_image=false
rebuild)
      if [ "$(git symbolic-ref --short HEAD)" = "master" ] && [ "$pull_git" = true ]; then
        git branch -m master main
        git fetch origin
        git branch -u origin/main main
        git remote set-head origin -a
      fi
....

Благодаря этому мне удалось избежать необходимости обновлять его каждый раз при выполнении rebuild. Это позволяет установить плагин.

Если у вас возникнут проблемы с этими плагинами, обязательно упомяните об этом при создании новой темы.

Нет, это не так, по крайней мере, не полностью.

Это может работать только для плагинов, использующих API, но любой JavaScript новых плагинов требует компиляции, которая происходит в процессе сборки.

Следовательно, чтобы добавить новый плагин, в большинстве случаев необходимо выполнить повторную сборку.

Другая проблема, с которой вы сталкиваетесь, заключается в том, что изменение скриптов сборки ядра может привести к серьёзным проблемам, если вы не будете осторожны, особенно если в скриптах ядра вносятся значительные изменения.