UI経由のアップグレードが無効になり、SSHアップグレード後に再度有効化されていません

UIからアップグレードしようとすると、このメッセージが表示されます。

何度かgit pullと再ビルドを試しましたが、同じメッセージが表示されます。何かヒントはありますか?

もしかしたら、これを実行する必要があるのかもしれません。

これは古くから確立されたフォーラム向けです。

Cc @pacharanero

これは標準的なインストールでしたか?間違ったサーバーでアップグレードを実行したようなものでしょうか?再構築に失敗して、古いコンテナを再起動しましたか?これ以上の推測はありません。

リンクしたトピックで推奨されているようにOSを最新の状態に保つべきですが、それはあなたが説明した問題とは関係ありません。

GUIのアップデートがリセットされていないように見え、SSHでのログインを指示されることがありますが、これはSSHログイン直後であっても発生するため、時々不可解に思われます。

標準的なインストールでしたが、最初のインストールは2014年、Discourseがパブリックベータを終了したばかりの頃でした。

user@server:/var/discourse$ docker -v
Docker version 19.03.13, build 4484c46d9d

より新しいバージョンのDockerもありますが、Ubuntuのバージョンが最新版より少し遅れるのは一般的です。

OSは完全に、そして定期的に更新されています。

うーん。Discourseがコンテナの再構築を確認するまで、アップデート後に遅延が発生することがありますが、docker-managerに影響したことは一度もありません。

これを試すことができます。

docker exec app bash -c 'rails runner AdminDashboardGeneralData.refresh_stats'

しかし、もう十分な時間が経過しているので、これがあなたの問題だとは思いません。試しても害はありませんが。

サポートされているDockerの最小バージョンを覚えていませんが、Ubuntu 16.04を使用していない限り、これも問題ではないと思います。

実行しているブランチが原因である可能性はありますか?

containers/app.ymlで、明示的にtests-passedを選択しています。

しかし、それはコンテナの内部で実行されているものです。コンテナの外部でのデフォルトブランチが影響する可能性はありますか?

user@server:/var/discourse# git status
On branch master
Your branch is up to date with 'origin/master'.

昔はGitHubのデフォルトはmasterでしたが、今はmainです。

はい。試せると思います。

cd /var/discourse
git checkout main

しかし、明示的に行う必要はないと思っていました。

以下はどうでしょうか。

cd /var/discourse
./launcher enter app
cd /var/www/discourse
git status
「いいね!」 1

これはもちろんdiscourse_dockerに関連しています。

:/var/discourse# git remote -v
origin  https://github.com/discourse/discourse_docker.git (fetch)
origin  https://github.com/discourse/discourse_docker.git (push)

ブランチは2021年8月に切り替えられ、執筆時点でmainより49コミット遅れています。 GitHub - discourse/discourse_docker at master

したがって、あなたは間違いなくmainブランチに切り替えたいですか?

しかし、私は@pfaffmanに同意し、それを明示的に行ったことはないので、何らかのスクリプトが行ったに違いありません。おそらく次の再構築で発生するでしょう。

「いいね!」 1

は以下を返します

user@inside-container-app:/var/www/discourse# git status
Refresh index: 100% (30949/30949), done.
On branch tests-passed
Your branch is up to date with 'origin/tests-passed'.

最新の状態になっているようです。それでも「アップグレードが無効」ページが表示されますか?

はい。私が管理している別のDiscourseを調べたところ、同様にmasterブランチを使用しており、同じ「アップグレードが無効」ページが表示されました。

ただし、2022年中頃にセットアップした別のDiscourseもmasterブランチを使用していますが、こちらは通常通りアップデート画面が表示されます。

discourse_dockerのブランチをmainを追跡するように変更することで問題が解決するという確認が得られれば、試してみるつもりです。おそらく、私だけが使用しているサイトで試すことになるでしょう。

これは、私がいくつかのDiscourseでアップデート時に奇妙な動作を経験し始めた時期とほぼ一致します。(このため、結局SSH経由でAnsibleを使用して毎回すべてをアップデートすることになりました)。

私もほぼ常にそうしていますが、ますますhttps://www.pfaffmanager.com/でAnsibleのアップグレードスクリプトを起動しています。

個人用のノートや日記などに使用しているDiscourseで、main トラックに切り替えました。

切り替え前は master を追跡しており、管理者のアップグレードページは無効になっていました。

main を追跡するように切り替えて再構築したところ、管理者のアップグレードUIが正常に機能するようになったことを確認できます。

「いいね!」 4

うーん。古いインストールはすべてブランチを変更する必要があるということでしょうか。@Falco、これはあなたが見たいかもしれません。

ランチャーは自動的にブランチを master から main に変更します。保留中の stash 変更など、自動切り替えを妨げるものがあったようです。

「いいね!」 2

そんなことが多くのインスタンスで起こる可能性はどれくらいですか?

そして、スタッシュの変更とは一体何ですか?

どのくらいの数について話していますか? Discourseは数千も稼働していますが、この問題の報告は何十件も見かけません。少なくとも今のところは :sweat_smile:

もしこのバグを再現できるサーバーをお持ちで、それを1日維持できる方がいらっしゃいましたら、さらに調査できるよう、ここに返信してください。

「いいね!」 1

うーん。これは、私たちのインスタンスで問題の原因になっている可能性があります @nathank
Discourse Git リポジトリと同じディレクトリに、いくつかの運用ファイル(Discourse のコードベースとは全く関係ありません)があります。もし ./launcher がブランチを変更しようとした場合、Git はエラーとなり、これらの変更を stash する(またはコミットする)必要があります。

@Falco ありがとうございます。さらに調査します。Git が何らかの理由でブランチを変更しようとしたときにエラーを発生させる Discourse インスタンスのみが影響を受ける可能性があります。

「いいね!」 4

更新:追跡されていないファイルに関するこの問題が原因だった可能性があります。
ファイルを削除し、git checkout main コマンドが成功したことを確認しました。
その後、./launcher rebuild app を実行したところ、うまくいったようです。

@Falco が上記で述べているように、Discourse リポジトリで main を追跡する必要はないと思います。./launcher rebuild app を実行すると、スクリプト自体が正しいブランチをチェックアウトします。

「いいね!」 3

古いDiscourseの中には、以下を実行してエラーがないことを確認した後でも「アップグレードが無効」ページが表示されるものがありました。

git checkout main
git pull
git checkout master

これらのインスタンスでは、mainを追跡し、./launcher rebuild appを実行したところ、問題なく動作しました。