Repository navigation
Conversation
… staging timeout The rails72 fixture was hitting CF's 15-minute staging hard limit because bundle install alone took ~9 minutes (78 gems including sassc native extension and webpacker). Asset precompilation added another ~1m12s on top, pushing total staging to 15-16 minutes. The test only asserts Ruby and Node version strings from `ruby -v` / `node -v`. It does not exercise the asset pipeline, webpack, or SCSS. Remove webpacker and sass-rails (and all their transitive dependencies) from the Gemfile since they are unused by the controller and test assertions. Changes: - Gemfile: drop webpacker and sass-rails gems - Gemfile.lock: regenerated (68 gems, down from 78; sassc/ffi/webpacker removed) - config/application.rb: drop sprockets/railtie require - config/environments/production.rb: drop asset pipeline config - Delete package.json, yarn.lock, babel.config.js, postcss.config.js - Delete app/javascript/, app/assets/, bin/webpack, bin/webpack-dev-server, bin/yarn - .gitignore: drop node/yarn entries Staging time should drop from ~15-16 min to ~8-10 min, well within CF's limit.
❌ PR Fails Integration Tests - Root Cause IdentifiedThis PR breaks the nodejs multibuildpack test because it deletes entirely. Test Failure EvidenceFrom the failed integration test run: Why It FailsThe multibuildpack test uses nodejs-buildpack + ruby-buildpack together:
The Analysis Is Partially CorrectYou're right that the root bottleneck is bundle install time (~9 min with 78 gems including sassc native extensions), not asset precompilation (~1m12s). Removing webpacker/sass-rails would help. BUT you also removed the Node.js dependencies, which breaks the test's actual purpose. What The Test Actually Needs# The test ONLY checks these two things:
Eventually(deployment).Should(Serve(ContainSubstring("Ruby version: ruby 3.")))
Eventually(deployment).Should(Serve(MatchRegexp(`Node version: v\d+\.\d+\.\d+`)))The app controller runs: node_version = `node -v` # ← NEEDS node to be installed
ruby_version = `ruby -v`Correct SolutionHybrid approach - keep what's needed, remove what's not:
Expected Staging Time
RecommendationClose this PR and create a new one that:
This gives us the bundle install speedup you identified without breaking the nodejs multibuildpack detection. Current StatusPR #1181 is already merged and includes the fake sprockets manifest that skips asset precompilation. It might be sufficient if build #28 passes. If build #28 shows staging is still too close to the 15min limit, then we should implement the hybrid fix above. |
Problem
Builds #19-28 fail with CF's hard 15-minute staging timeout. The root cause is not webpack compilation time (which only takes ~1m12s) — it is cumulative staging time exceeding 15 minutes:
Previous PRs (#1178, #1179, #1180) addressed symptoms (test timeouts, app start timeout, manifest variable substitution) but not this root cause. PR #1181's fake manifest approach would save ~1m12s but the remaining ~14min still exceeds the limit.
Solution
The test only asserts two things:
The controller just runs
ruby -vandnode -v. It does not usewebpacker,sass-rails, webpack, SCSS, or the asset pipeline in any way. Remove those gems and everything they pull in.Changes
webpackerandsass-rails(only 2 gems declared now:rails+puma)sassc,ffi,webpacker,sprockets,nokogiriand ~10 others removedsprockets/railtierequirepackage.json,yarn.lock,babel.config.js,postcss.config.js,app/javascript/,app/assets/,bin/webpack,bin/webpack-dev-server,bin/yarnExpected result
Related PRs