Застрял на v2.9.0.beta1 — теперь работает 3.4.0.beta4-dev после отключения хуков: как зафиксироваться на стабильных релизах?

У меня уже несколько лет была проблема с установкой Discourse, застрявшей на версии v2.9.0.beta1 — из-за личных обстоятельств я не мог её решить. В то время переход на v2.9.0.beta2 казался невозможным. Недавно, разбираясь с проблемой пересборки, я закомментировал некоторые хуки в моём файле app.yml (а именно те, которые принудительно переключают на конкретный тег), следующим образом:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
    - exec:
        cd: $home
        cmd:
          # - git fetch --depth=1 origin tag v2.9.0.beta2 --no-tags
          # - git checkout v2.9.0.beta2
          - echo "Skipping version upgrade hook"

После пересборки мой экземпляр неожиданно обновился до версии 3.4.0.beta4-dev. Хотя я рад, что наконец преодолел ту проблему, теперь я хочу, чтобы система продолжала следовать бета-ветке 3.4.0 до тех пор, пока не выйдет стабильная версия 3.4.x, а после её выхода зафиксировать эту стабильную версию, чтобы избежать автоматического обновления до новых бета- или разработческих версий.

Каков правильный способ «зафиксировать» или заблокировать релиз на стабильной версии после её выхода, не прибегая к откату или ручным вмешательствам при каждой пересборке?

Буду очень признателен за любые рекомендации или лучшие практики!

Вы можете ознакомиться с этим руководством:

Замените tests-passed на stable в вашем файле app.yml. Если такого параметра в вашем YAML-файле нет, вы можете обратиться к каталогу с примерами.

Спасибо, у меня было:

  ## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
  #version: tests-passed

Я обновил это до:

  ## Какую ревизию Git должен использовать этот контейнер? (по умолчанию: tests-passed)
  version: stable

После пересборки система теперь находится в состоянии: 3.5.0.beta1-dev

Что кажется ещё более странным/необычным. :thinking:

Похоже, что после пересборки вы изменили версию на стабильную. Сейчас вы уже вышли за рамки стабильной версии, поэтому вам нужно изменить её на beta или tests-passed до следующего стабильного релиза (а так как за последнюю неделю один уже был, это займёт довольно много времени, обычно 8–10 месяцев).

Нет, к сожалению, я этого не делал… Я на 100% уверен в этом: сначала была версия 3.4.0.beta4-dev, затем я изменил app.yml и выполнил пересборку. После этого появилась версия 3.5.0.beta1-dev. Это 100% тот путь, по которому мы шли… У меня нет никаких сомнений, чтобы всё было предельно ясно. Я буквально проверил всё перед выполнением указанных действий.

Начинается ли строка с tests-passed с символа #?

Скриншот редактора:

Это закомментировано, поэтому не имеет значения, что вы там напишете, а по умолчанию указано «тесты пройдены».

Когда вы пересобрали проект для применения последних изменений, тесты были пройдены.

Ещё раз спасибо за вашу помощь, @pfaffman. Подведу итог своему текущему пониманию:

  • Наш экземпляр работал на версии 3.4.0.beta4-dev, которая не считается стабильным релизом.
  • Когда я обновил конфигурацию, установив version: stable (при этом значение по умолчанию было закомментировано), я ожидал, что будущие пересборки зафиксируют экземпляр на стабильной ветке. Однако, поскольку мы уже находились на бета-версии, обновление продолжилось дальше, что привело к версии 3.5.0.beta1-dev.
  • Похоже, что переключение на version: stable после того, как версия уже вышла за пределы стабильного тега, не вызывает отката; это означает лишь, что если мы находимся на стабильной версии или ниже неё, нас зафиксируют на стабильной версии вместо отслеживания бета-версий.

Верно ли это?

Кроме того, не могли бы вы уточнить рекомендуемый процесс, чтобы в будущем случайно не перейти на бета-канал? В частности:

  1. Достаточно ли оставить version: stable как активную конфигурацию, чтобы гарантировать, что при появлении стабильного релиза наши пересборки зафиксируются на нём — при условии, что мы ещё не перешагнули его на момент выхода стабильной версии?
  2. Существуют ли какие-либо дополнительные шаги или задачи по очистке (например, удаление или изменение других элементов конфигурации), которые нам следует выполнить, чтобы избежать непреднамеренного обновления до бета-версий или версий разработки?

Мне очень хочется как можно скорее зафиксироваться на стабильном релизе, но я не хочу, чтобы это снова перепрыгнуло через него…

Хм. Мне так не кажется:

Д’оу! Возможно, я слишком быстро посмотрел на свой телефон. У меня нет объяснения тому, как я пропустил это, и тому, что сайт теперь работает на версии 3.5.0.beta1-dev.

Привет,

После проблем с обновлением 3.4.0.beta4-dev, связанными с переходом с PostgreSQL 13 на 15, мне удалось восстановить рабочую версию 3.5.0.beta1-dev!

Теперь в панели управления отображается новая версия:

Установлено         Последняя версия
3.5.0.beta1-dev     3.5.0.beta1
(b37b51d15f)

Однако на странице обновлений мы видим:

Название              Хэш коммита       Последнее обновление  Последняя версия    Статус
Доступна новая версия! v3.4.0.beta4 +182 43 минут назад        v3.5.0.beta1 +8     Обновить

Безопасно ли обновляться?

Заранее спасибо.