jenkinsci / dark-theme-plugin

Jenkins Dark Theme
https://plugins.jenkins.io/dark-theme/
MIT License
72 stars 37 forks source link

Does not work with latest 2.346.1 LTS #206

Closed norrisjeremy closed 2 years ago

norrisjeremy commented 2 years ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.346.1 OS: Linux - xxx --- ace-editor:1.1 analysis-model-api:10.12.0 ansicolor:1.0.1 ant:475.vf34069fef73c antisamy-markup-formatter:2.7 apache-httpcomponents-client-4-api:4.5.13-1.0 authentication-tokens:1.4 basic-branch-build-strategies:1.3.2 blueocean:1.25.5 blueocean-autofavorite:1.2.5 blueocean-bitbucket-pipeline:1.25.5 blueocean-commons:1.25.5 blueocean-config:1.25.5 blueocean-core-js:1.25.5 blueocean-dashboard:1.25.5 blueocean-display-url:2.4.1 blueocean-events:1.25.5 blueocean-git-pipeline:1.25.5 blueocean-github-pipeline:1.25.5 blueocean-i18n:1.25.5 blueocean-jira:1.25.5 blueocean-jwt:1.25.5 blueocean-personalization:1.25.5 blueocean-pipeline-api-impl:1.25.5 blueocean-pipeline-editor:1.25.5 blueocean-pipeline-scm-api:1.25.5 blueocean-rest:1.25.5 blueocean-rest-impl:1.25.5 blueocean-web:1.25.5 bootstrap4-api:4.6.0-5 bootstrap5-api:5.1.3-7 bouncycastle-api:2.26 branch-api:2.1046.v0ca_37783ecc5 build-timeout:1.21 build-token-root:1.9 caffeine-api:2.9.3-65.v6a_47d0f4d1fe checks-api:1.7.4 cloudbees-bitbucket-branch-source:773.v4b_9b_005b_562b_ cloudbees-folder:6.729.v2b_9d1a_74d673 clover:4.13.0 cobertura:1.17 code-coverage-api:2.0.4 command-launcher:84.v4a_97f2027398 credentials:1129.vef26f5df883c credentials-binding:523.vd859a_4b_122e6 dark-theme:185.v276b_5a_8966a_e data-tables-api:1.12.1-1 display-url-api:2.3.6 docker-commons:1.19 docker-workflow:1.28 dtkit-api:3.0.1 durable-task:496.va67c6f9eefa7 echarts-api:5.3.3-1 email-ext:2.89 favorite:2.4.1 font-awesome-api:6.1.1-1 forensics-api:1.15.1 git:4.11.3 git-client:3.11.0 git-forensics:1.9.0 git-server:1.11 github:1.34.3 github-api:1.303-400.v35c2d8258028 github-branch-source:1637.vd833b_7ca_7654 global-slack-notifier:1.5 gradle:1.39.1 handlebars:3.0.8 handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953 htmlpublisher:1.30 jackson2-api:2.13.3-285.vc03c0256d517 jacoco:3.3.2 javadoc:217.v905b_86277a_2a_ javax-activation-api:1.2.0-3 javax-mail-api:1.6.2-6 jaxb:2.3.6-1 jdk-tool:1.5 jenkins-design-language:1.25.5 jira:3.7.1 jjwt-api:0.11.5-77.v646c772fddb_0 jnr-posix-api:3.1.7-3 jquery:1.12.4-1 jquery-detached:1.2.1 jquery3-api:3.6.0-4 jsch:0.1.55.2 junit:1119.1121.vc43d0fc45561 last-changes:2.7.11 ldap:2.10 lockable-resources:2.15 login-theme:1.1 mailer:414.vcc4c33714601 mapdb-api:1.0.9.0 matrix-auth:3.1.3 matrix-project:771.v574584b_39e60 mercurial:2.16.2 mina-sshd-api-common:2.8.0-21.v493b_6b_db_22c6 mina-sshd-api-core:2.8.0-21.v493b_6b_db_22c6 momentjs:1.1.1 monitoring:1.91.0 okhttp-api:4.9.3-105.vb96869f8ac3a pam-auth:1.8 phabricator-plugin:2.1.5 pipeline-build-step:2.18 pipeline-github-lib:38.v445716ea_edda_ pipeline-graph-analysis:195.v5812d95a_a_2f9 pipeline-groovy-lib:593.va_a_fc25d520e9 pipeline-input-step:449.v77f0e8b_845c4 pipeline-milestone-step:101.vd572fef9d926 pipeline-model-api:2.2097.v33db_b_de764b_e pipeline-model-definition:2.2097.v33db_b_de764b_e pipeline-model-extensions:2.2097.v33db_b_de764b_e pipeline-rest-api:2.24 pipeline-stage-step:293.v200037eefcd5 pipeline-stage-tags-metadata:2.2097.v33db_b_de764b_e pipeline-stage-view:2.24 pipeline-utility-steps:2.13.0 plain-credentials:1.8 plugin-util-api:2.17.0 popper-api:1.16.1-3 popper2-api:2.11.5-2 prism-api:1.28.0-2 pubsub-light:1.16 resource-disposer:0.19 scm-api:608.vfa_f971c5a_a_e9 script-security:1175.v4b_d517d6db_f0 slack:608.v19e3b_44b_b_9ff snakeyaml-api:1.30.1 sse-gateway:1.25 ssh-agent:295.v9ca_a_1c7cc3a_a_ ssh-credentials:277.v95c2fec1c047 ssh-slaves:1.821.vd834f8a_c390e sshd:3.242.va_db_9da_b_26a_c3 structs:318.va_f3ccb_729b_71 subversion:2.15.5 theme-manager:1.4 throttle-concurrents:2.8 timestamper:1.18 token-macro:293.v283932a_0a_b_49 trilead-api:1.57.v6e90e07157e1 variant:1.4 warnings-ng:9.13.0 workflow-aggregator:581.v0c46fa_697ffd workflow-api:1164.v760c223ddb_32 workflow-basic-steps:948.v2c72a_091b_b_68 workflow-cps:2725.v7b_c717eb_12ce workflow-durable-task-step:1146.v1a_d2e603f929 workflow-job:1186.v8def1a_5f3944 workflow-multibranch:716.vc692a_e52371b_ workflow-scm-step:400.v6b_89a_1317c9a_ workflow-step-api:625.vd896b_f445a_f8 workflow-support:820.vd1a_6cc65ef33 ws-cleanup:0.42 xunit:3.1.0 ```

What Operating System are you using (both controller, and any agents involved in the problem)?

Ubuntu 20.04

Reproduction steps

  1. Install Jenkins 2.346.1.
  2. Install Dark Theme 185.v276b_5a_8966a_e plugin.
  3. Select Dark theme (either globally or via user settings).

Expected Results

Expected Dark theme.

Actual Results

Got non-Dark theme.

Anything else?

Screen Shot 2022-06-24 at 09 16 45
timja commented 2 years ago

Works for me.

image

Can you check your browser console and network tools? possibly system logs too?

norrisjeremy commented 2 years ago

The problem is because the Dark Mode theme is being sent as an absolute href instead of a relative href:

<link type="text/css" rel="stylesheet" href="http://127.0.0.1:8080/theme-dark/theme.css"/>

Our Jenkins instance runs behind an NGINX proxy, therefore it needs to be this in order to work:

<link type="text/css" rel="stylesheet" href="/theme-dark/theme.css"/>
norrisjeremy commented 2 years ago

Less than ideal workaround with NGINX:

proxy_set_header Accept-Encoding "";
sub_filter http://127.0.0.1:8080 https://the_public_url;
sub_filter_once off;
timja commented 2 years ago

you need to configure Jenkins so that it knows what url it's running on.

see also https://github.com/jenkinsci/theme-manager-plugin/pull/76

timja commented 2 years ago

Set the Jenkins URL

image
norrisjeremy commented 2 years ago

It would seem that jenkinsci/theme-manager-plugin#76 is a regression, since it breaks setups like ours in which we had correctly configured our NGINX reverse proxy.

But so be it, we'll live with the sub_filter hack in NGINX.

timja commented 2 years ago

If you configure your Jenkins url it should work just fine with your nginx

norrisjeremy commented 2 years ago

If you configure your Jenkins url it should work just fine with your nginx

There are reasons why we have our Jenkins configured the way it is.

As it stands, the changes from jenkinsci/theme-manager-plugin#76 now make it such that themes no longer respect the X-Forwarded headers passed on by a correctly configured upstream proxy (unlike the rest of Jenkins).

But so be it: it seems that you will no longer utilize those X-Forwarded headers when building its <link> URLs. We'll simply have to live with using sub_filter in our NGINX to search and replace them.

timja commented 2 years ago

Sure I guess it could be configurable as people want it both ways…