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

  1. 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
  2. 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
  1. Run gitlab-ctl tail gitlab-workhorse
  2. Navigate to /admin/sidekiq and ensure the assets load.
  3. 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

Merge request reports

Loading