Drop SidekiqWebStatic middleware
What does this MR do and why?
This middleware is no longer needed now that we copy Sidekiq assets into the Webpack-generated asset bundle in !213303 (merged).
Previously we needed this middleware because the Webservice pod used the X-Sendfile interface to have Workhorse send the assets. The assets were not present on the Workhorse container because they previously only existed if the Sidekiq gem were installed. Now that the assets are now available, we can remove this middleware and simplify the stack.
References
Relates to https://gitlab.com/gitlab-com/gl-infra/production/-/issues/20862
How to set up and validate locally
- Download an Omnibus package from one of the jobs in https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/-/pipelines/2207850436. I used Ubuntu 22.04: https://gitlab.com/gitlab-org/build/omnibus-gitlab-mirror/-/jobs/12394651617
- Confirm this package has assets in
public/assets/sidekiq:
$ dpkg -L gitlab-ee | grep "public/assets/sidekiq"
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images/apple-touch-icon.png
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images/favicon.ico
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images/favicon.ico.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images/logo.png
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images/status.png
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/application.js
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/application.js.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/base-charts.js
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/base-charts.js.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/chart.min.js
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/chart.min.js.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/chartjs-plugin-annotation.min.js
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/chartjs-plugin-annotation.min.js.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/dashboard-charts.js
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/dashboard-charts.js.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/dashboard.js
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/dashboard.js.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/metrics.js
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/metrics.js.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/application-dark.css
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/application-dark.css.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/application-rtl.css
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/application-rtl.css.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/application.css
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/application.css.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/bootstrap-rtl.min.css
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/bootstrap-rtl.min.css.gz
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/bootstrap.css
/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/bootstrap.css.gz
- Run
gitlab-ctl tail gitlab-workhorse - Navigate to
/admin/sidekiqand ensure the assets load. - The logs should show:
# gitlab-ctl tail gitlab-workhorse | grep assets
{"correlation_id":"01KC7NNFC3A31T2RKEFBBAZ173","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/application.css","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:23Z","uri":"/admin/sidekiq/stylesheets/application.css"}
{"correlation_id":"01KC7NNFC3A31T2RKEFD0A2SBD","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/application-dark.css","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:23Z","uri":"/admin/sidekiq/stylesheets/application-dark.css"}
{"correlation_id":"01KC7NNFC3A31T2RKEFNH2RMF8","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/chartjs-plugin-annotation.min.js","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:23Z","uri":"/admin/sidekiq/javascripts/chartjs-plugin-annotation.min.js"}
{"correlation_id":"01KC7NNFC3A31T2RKEFGXPT3YH","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/dashboard.js","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:23Z","uri":"/admin/sidekiq/javascripts/dashboard.js"}
{"correlation_id":"01KC7NNFC49K2TVTC2NS5BQYDK","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/base-charts.js","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:24Z","uri":"/admin/sidekiq/javascripts/base-charts.js"}
{"correlation_id":"01KC7NNFC3A31T2RKEFPTFF8SP","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/chart.min.js","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:24Z","uri":"/admin/sidekiq/javascripts/chart.min.js"}
{"correlation_id":"01KC7NNFC3A31T2RKEFCX84GN6","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/stylesheets/bootstrap.css","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:24Z","uri":"/admin/sidekiq/stylesheets/bootstrap.css"}
{"correlation_id":"01KC7NNFC49K2TVTC2NTX08BHS","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/dashboard-charts.js","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:24Z","uri":"/admin/sidekiq/javascripts/dashboard-charts.js"}
{"correlation_id":"01KC7NNFC3A31T2RKEFM1ZXDZ2","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/javascripts/application.js","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:24Z","uri":"/admin/sidekiq/javascripts/application.js"}
{"correlation_id":"01KC7NNGC7W0TV89XBQ0X6KZ68","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images/status.png","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:24Z","uri":"/admin/sidekiq/images/status.png"}
{"correlation_id":"01KC7NNGHFE093CCGAANBNGBBW","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images/apple-touch-icon.png","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:25Z","uri":"/admin/sidekiq/images/apple-touch-icon.png"}
{"correlation_id":"01KC7NNGHEBFWC098CW64F050K","file":"/opt/gitlab/embedded/service/gitlab-rails/public/assets/sidekiq/images/favicon.ico","level":"info","method":"GET","msg":"Send file","time":"2025-12-11T21:39:25Z","uri":"/admin/sidekiq/images/favicon.ico"}
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Edited by Stan Hu