Rebuild失敗 - app.ymlの"after_assets_precompile"セクションをスキップします

./launcher rebuild app を実行しましたが、システム関連ファイルに変更はありません。現在、Discourse の点滅するドットで停止しています。

以下の点を確認しました。

  • docker ps には Discourse アプリイメージが表示されています(正常に見えます)。
  • top コマンドでアクティビティが表示されています(正常に見えます)。
  • Sidekiq のステータスを確認できます(正常に見えます)。

再度アプリを再構築しました。
同じ結果です。
セーフモードを使用してみました。すべてオフにしました。変更はありません。点滅するドットの画面がまだ表示されます。
ソースコードのすべての行を確認しました。4つの JavaScript ファイルが見つかりません。それらは次のとおりです。

多数の JavaScript ファイルが不足しています。これらは最初に見つかったものです。

初期レビュー:

  • CDN 配信経由でファイルが利用できません。
  • CDN は S3 バケットからプルします。
  • ファイルは、他のすべての資産が保存されている S3 バケットにありません。

再構築の結果を見ると、次のことがわかります。

  1. 4つのファイルが作成され、public/assets/.js ファイル拡張子で書き込まれました。
  2. 4つのファイルが圧縮され、.br.js ファイル拡張子で保存されました。

サーバーを確認します。

  1. 4つの .js ファイルすべてがサーバーで利用可能です。
  2. .br.js ファイルはサーバーで利用できません。
  3. .br.js ファイルは S3 バケットにありません。

再構築の結果を確認すると、再構築の一部として after_assets_precompile アクティビティが発生していないようです。手動で rake s3:upload_assets を実行すると、資産が S3 に移行され、すべて正常に機能します。

以下の点を確認しました。

  1. YAML ファイルは適切なフォーマットのチェックに合格しています。

再構築の一部として after_assets_precompile が処理されない理由を判断するために、他にどのような点を確認できますか?

注:実行中のバージョンは 3.4.0.beta4-dev - 6a50b3d4b4 です。

「いいね!」 1

アセットをアップロードするスタンザを追加しましたか?

アップロード用のS3互換オブジェクトストレージプロバイダーを設定する

そして、そのrakeタスクはそこで見つけることができ、コンテナ内から実行できます(再構築の時間を節約するため)。その後、ymlファイルを編集したら再構築を行います。

S3 は 43 日間サイトで稼働しています。Rake コマンドは S3 のインストールの一部としてそこに配置されました。

サイトは少なくとも 30 回再構築されています。途中で追加のプラグインやコンポーネントを追加しました。これは、.js ファイルが S3 バケットに追加され、そこに格納されたことを示唆しています。

S3 コンポーネントは正常に機能していました。ファイルが S3 に移行されなかったのは今回が初めてです。

ファイルが移動されなかった理由を理解するために、何を調査できますか?

after_assets_precompile が実行されない原因として、何か考えられることはありますか?

「いいね!」 1

助けてください!

再構築時に、プロセスが app.yml ファイルの次のセクションをスキップします。

after_assets_precompile:
  - exec:
      cd: $home
      cmd:
        - sudo -E -u discourse bundle exec rake s3:upload_assets
        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

再構築直後に、次のコマンドを手動で実行できます。

./launcher enter app
rake s3:upload_assets
rake s3:expire_missing_assets

コマンドを実行すると、必要なファイルが S3 に処理されます。

after_assets_precompile コードに echo コマンドを追加しました。

      cmd:
        - echo "Beginning of precompile commands"
        - sudo -E -u discourse bundle exec rake s3:upload_

echo ステートメントは再構築の出力に表示されません。

再構築ステップは、app.yml ファイルのこのセクションの前後のステップを処理します。すべてのプラグインとカスタムコマンドを処理します。

解決のために次の手順を実行しました。

  1. すべてのプラグインを削除しました。
  2. すべてのコンポーネントを無効にしました。
  3. すべての discourse ログファイルをレビューしました。エラーは示されていませんでした。
  4. 基本システムログファイルをレビューしました。エラーは示されていませんでした。

再構築プロセスがこのセクションをスキップする理由について、何か手がかりはありますか?

テストとして、after_assets_precompile コマンドをカスタムコマンドセクションに移動しました。

run:
  - exec: echo "Beginning of custom commands"
  ## 初回登録の「From」メールアドレスを設定したい場合は、コメントを解除して変更してください。
  ## 最初のサインアップメールを取得した後、行を再コメントしてください。一度だけ実行する必要があります。
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  ## 作業中にウェブサイトにパスワード保護をかけるコマンド。本番環境では削除してください。
  - exec:
      cd: $home
      cmd:
        - echo "Beginning of precompile commands"
        - sudo -E -u discourse bundle exec rake s3:upload_assets
        - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
  - exec: echo "End of custom commands"

コマンドは問題なく動作しました。これにより、環境アクセスやセキュリティの問題が除外されます。

ランチャープロセスは、再構築中に after_assets_precompile コードをスキップしています。

何か手がかりはありますか?

「いいね!」 1

さっぱりわかりませんが、4時間ほど前に再構築したときは問題ありませんでした。

「いいね!」 1

YAML ファイルに空白またはインデントのエラーがある可能性があります。バリデーターを検索して確認してください: [YAMLを検証]

これはトップレベルのキーではなく、hooks の下にあるべきです。例:

hooks:
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets
「いいね!」 3

それは最初の投稿に記載されていました。app.yml は適切なインデントのために検証されました。

「いいね!」 1

@supermathie - あなたは素晴らしい視力を持っていて、素晴らしいです。コードが2つのスペースでインデントされていなかったことに気づきました。しかも、広範囲ではなく、単一のスニペットから。ありがとうございます。

2つのスペースを追加したところ、問題が解決しました。

以前、app.ymlをymlチェッカーに通しました。テストツールは、ファイルが構造的に健全であると教えてくれました。しかし、機能的に間違っているとは教えてくれませんでした。

正しいコードスニペットは次のようになります。

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-adplugin
          - git clone https://github.com/discourse/discourse-affiliate
          - git clone https://github.com/discourse/discourse-subscriptions
          - git clone https://github.com/discourse/discourse-yearly-review
          - git clone https://github.com/discourse/discourse-whos-online
          - git clone https://github.com/discourse/discourse-data-explorer
  # set internal files for cdn
  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - echo "Beginning of precompile commands"
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

app.ymlファイルを文書化するために。トップレベルのキーは次のとおりです。

  • templates:
  • params:
  • env:
  • volumes:
  • hooks:
  • run:

それ以外はすべてインデントする必要があります。

最も単純なエラーが最もイライラする可能性があります。2つのスペースのために私の人生の6時間が失われました。

私の王国を2つのスペースのために。

「いいね!」 2

これはいつも起こる。

もう一つのお気に入りは、間違ったファイルを編集すること、または正しいファイルを間違ったコンピューターで編集することだ。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.