Discourse の旧バージョンのデプロイに関するヘルプ

ここにエラーがあるはずです。タグv3.6.0.beta2でプルしようとしたところ、次のエラーが発生しました。

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit
  git fetch --tags --prune-tags --prune --force origin
  if [[ $(git symbolic-ref --short HEAD) == v3.6.0.beta2 ]] ; then
      git pull
  else
      git -c advice.detachedHead=false checkout v3.6.0.beta2
  fi
' failed with return #<Process::Status: pid 146 exit 128>
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in `Pups::ExecCommand#spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"code", "cmd"=>["sudo -H -E -u discourse git clean -f", "sudo -H -E -u discourse bash -c '\\n  set -o errexit\\n  git fetch --tags --prune-tags --prune --force origin\\n  if [[ $(git symbolic-ref --short HEAD) == $version ]] ; then\\n      git pull\\n  else\\n      git -c advice.detachedHead=false checkout $version\\n  fi\\n'", "sudo -H -E -u discourse git config user.discourse-version $version", "mkdir -p tmp", "chown discourse:www-data tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p                    /shared/log/rails", "bash -c \"touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln    -s           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p           /shared/{uploads,backups}\"", "bash -c \"ln    -s           /shared/{uploads,backups} $home/public\"", "bash -c \"mkdir -p           /shared/tmp/{backups,restores}\"", "bash -c \"ln    -s           /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "[ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete"]}
bootstrap failed with exit code 128
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
adc8ef45e9ae880827c9294dbbf73dfe9ab413a050c83fe3f4722c2911876ce2

versionはブランチのみをサポートし、タグはサポートされていません!

正しいのは

params:
  version: release/2025.11

です。私がrelease/2025.11をプルしようとしたのは、現在の本番環境がこの近いバージョンであり、アップグレードしたいが問題が発生するのを恐れているためです。また、審査プロセスにより、直接アップグレードを実行することは許可されておらず、テスト環境でアップグレードプロセス(release/2025.11=>release/2026.1)に問題がないことを確認してから本番環境で操作する必要があります。これは少し冗長ですが、プロセスとして正しいことを行うための最良の選択です。そのため、ここで特定のブランチまたはタグをプルする方法を探す必要がありました。

長々と失礼しました。幸いなことに、何とかまともな解決策を見つけることができました。皆さん、ありがとうございます。

この修正による他の影響について、更新を続けます。

特定のブランチのインストールは実現しましたが、このブランチからアップグレードを検証しようとすると失敗しました。更新ページでは最新の更新が検出されないため、ページ上で更新操作を行うことができません。

「いいね!」 1

以前のトピックの続きですが、新しい問題が発見されました。ローカルコードベースが古い場合、フロントエンドのコンパイル失敗やその他のエラーが発生します。したがって、すべての変更を開始する前に、ローカルコードベースを最新バージョンに更新する必要があります。

# ローカルコードベースを変更した場合は、まず一時保存してください
# git stash

# 最新に更新
git pull

# 一時保存したコードを再適用するか、対応する設定ファイルを再編集してください
# git stash pop

ローカルリポジトリを最新版に更新した後でなければ、以前のステップに従って指定されたブランチのビルドを正常に完了させることはできません。

ここでいうローカルコードベースとは:https://github.com/discourse/discourse_docker.git
つまり、標準インストール後のコードベースです。

最後にまとめます。

私たちの要件は、指定されたバージョンをインストールすることです。

  1. ローカルコードリポジトリ https://github.com/discourse/discourse_docker.git を更新する
# プロジェクトのルートディレクトリに移動
cd /var/discourse
# 最新バージョンに更新
git pull
  1. 指定するバージョンを変更する

templates/web.template.yml を編集します。

params:
  version: release/2026.1
  1. 再構築する
./launcher rebuild app

この変更を行った後、将来の更新・アップグレード手順としては、まずローカルコードリポジトリを更新する必要があります。ただし、ローカルコードを変更しているため、更新が失敗する可能性があります。そのため、多くの場合、まず git stash でローカルの変更を一時保存し、その後 git pull を実行してローカルリポジトリを最新の状態に保つ必要があります。その後、アップグレード対象のブランチや指定したブランチに変更を加え、最後に再構築を行います。

特定のバージョンを構成するのではなく、latest や stable のようなフレーバー、ストリーム、タグを構成するのは非常に異例だと思います。実際、このシステムで通常利用可能で有用なタグが何であるか、もはや確信が持てません。

Configure a supported tracking branch to get Discourse software updates をご覧になりましたか?どのタグが有用かを理解するのに役立つかもしれません。

はい、通常の利用者であればデフォルトのlatestで十分です。しかし、私のようなケースでは、特定のバージョンの使い方を調べる必要があります。bossに対して「残念ながら、Discourse は現時点では特定のバージョンのチェックアウトをサポートしていないため、最新版にしか更新できません」と言うわけにはいきません。

この投稿は非常に役立ちますので、じっくりと拝見させていただきます。ありがとうございます。

それを見たことがありませんでした。ありがとうございます。latest/release/esr を使用するべきのようです。私の古い app.yml はコメントアウトされているため、デフォルトが適用されていることがわかります:

  ## このコンテナはどの Git リビジョンを使用すべきですか?(デフォルト: tests-passed)
  #version: tests-passed

version は現在タグをサポートしていません。サポートするには、ビルドスクリプトを変更する必要があります。本来のベストプラクティスは以下の通りです。

params:
  version: esr

しかし現在、以下のように変更せざるを得ません。

params:
  version: release/2026.1
「いいね!」 1

興味深いことですが、新しいバージョン管理戦略が導入される以前から、beta は長い間、ブランチではなくタグとして使用されていました: Upcoming changes to the beta branch of Discourse

私です。私も混乱していますが、現在のビルドコードではタグを使用できません。本来であればそのようなはずではありません。

「いいね!」 1

version: release/2026.1 は問題なく動作するはずです。バージョンの新しい重複サポート期間を活用したい場合は、これが正しい方法です(もちろん、2026.1 がサポート終了に達する前に手動で更新することを忘れないでください)。

version: esr も動作します。このシステムはタグをサポートするように設計されています。実装は git checkout $version として行われています。

この変更は web.template.yml で行ってはいけません。サイト固有の containers/app.yml で行う必要があります。

「いいね!」 4