m.abi
(Michael A.)
1
新しいコンテナイメージのブートストラップが失敗します。数日前までは正常に動作しており、「変更点はない」のに、今日は失敗します。ログ:
[0:02:27] 処理中:
[0:02:27] v8
________ '/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor' で 'vpython third_party/depot_tools/update_depot_tools_toggle.py --disable' を実行中
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor/depot_tools/.cipd_bin/.cipd/pkgs/0/fI6WggdkRyN1r91MnTeApc2_gyTtXfYpueHZVLcaF8gC/vpython:
オプションの解決に失敗しました: Python スクリプトの解決に失敗しました: stat
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor/third_party/depot_tools/update_depot_tools_toggle.py:
そのようなファイルまたはディレクトリはありません
エラー: コマンド 'vpython third_party/depot_tools/update_depot_tools_toggle.py --disable' が、/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor 内で非ゼロの終了ステータス 1 を返しました
...
** ブートストラップに失敗しました ** 上記をスクロールして、より早いエラーメッセージを探してください。複数のエラーがある可能性があります。
./discourse-doctor で問題の診断ができるかもしれません。
調査結果:libv8 については、Ruby ビルダーのバージョン変更に関連する同様の問題が GitHub で既に報告されています。ブートストラップ中はビルダーのアップグレードが実行されます。問題はおそらく、昨日リリースされた bundler のバージョン 2.2.15 に関連していると思われます。正直なところ、私は Ruby 専門家ではないので、実際の問題が少し異なる可能性もあります。
しかし、以下の回避策で私の環境では動作しました:templates/web.template.yml の 148 行目を以下のように変更します。
- gem update bundler
から
- gem install bundler -v 2.2.14
へ
よろしくお願いいたします、
Michael
Falco
(Falco)
2
これは安定ブランチでのビルドを試みている時のことでしたか?
m.abi
(Michael A.)
3
いい着眼点です!discourse_docker の master ブランチ、app.yml のパラメータ:version: stable
pfaffman
(Jay Pfaffman)
4
stable を実行する理由があり、この問題のような特定の点に注意を払う用意がある場合を除き、tests-passed の方が良いでしょう。こちらはより十分にテストされており、Discourse がホスティングで採用しているバージョンです。
sam
(Sam Saffron)
5
これは確かにデバッグの価値があります。Bundler が直近でバグをリリースした場合、すぐに回避策を講じる必要があります。
@kris.kotlarek さん、Digital Ocean 上でこの問題を再現できますか?
david
(David Taylor)
8
ここにはいくつかの問題が絡み合っています。現時点では、stable ブランチの Gemfile のバージョンを上げるのが最も円滑な解決策です。詳細についてはコミットメッセージをご覧ください。
@m.abi さん、再度ビルドを試してみてください。これで動作するはずです。
stable で動作する環境は、より多くの安定性(理想的にはセキュリティ修正のみ)が得られると期待しています。少なくとも、それが私たちが「stable ブランチ」と解釈しているところです。また、bleeding edge よりも stable の方が頻繁に壊れる可能性があるため、より注意を払う必要があるということではありません。
pfaffman
(Jay Pfaffman)
10
さて、この事例が示す通り、状況はあなたが予想するほど単純ではありません。彼らは(このケースのように)問題を迅速に修正する良い仕事をしていますが、(主に)自社のホスティングで stable を提供していないため、tests-passed よりも十分にテストされていないと言えます。したがって、新しい stable リリース直後を除けば、私は tests-passed の方がやや「安全」な選択だと考えています。全員が同意するわけではありませんが。
m.abi
(Michael A.)
11
@david ビルドが動作しました!ありがとうございます!