jenkinsci / lockable-resources-plugin

Lock resources against concurrent use
https://plugins.jenkins.io/lockable-resources
MIT License
87 stars 182 forks source link

Authorization Matrix Permissions for JCasC changes based on host language #466

Open Mareron opened 1 year ago

Mareron commented 1 year ago

Jenkins and plugins versions report

Jenkins: 2.375.2 OS: Windows 10 - 10.0 Java: 11.0.18 - Azul Systems, Inc. (OpenJDK 64-Bit Server VM)

ace-editor:1.1 active-directory:2.30 ant:481.v7b_09e538fcca antisamy-markup-formatter:155.v795fb_8702324 apache-httpcomponents-client-4-api:4.5.13-138.v4e7d9a_7b_a_e61 artifactory:3.18.0 authentication-tokens:1.4 blueocean:1.27.1 blueocean-autofavorite:1.2.5 blueocean-bitbucket-pipeline:1.27.1 blueocean-commons:1.27.1 blueocean-config:1.27.1 blueocean-core-js:1.27.1 blueocean-dashboard:1.27.1 blueocean-display-url:2.4.1 blueocean-events:1.27.1 blueocean-git-pipeline:1.27.1 blueocean-github-pipeline:1.27.1 blueocean-i18n:1.27.1 blueocean-jwt:1.27.1 blueocean-personalization:1.27.1 blueocean-pipeline-api-impl:1.27.1 blueocean-pipeline-editor:1.27.1 blueocean-pipeline-scm-api:1.27.1 blueocean-rest:1.27.1 blueocean-rest-impl:1.27.1 blueocean-web:1.27.1 bootstrap5-api:5.2.1-3 bouncycastle-api:2.27 branch-api:2.1071.v1a_188a_562481 build-timeout:1.28 caffeine-api:2.9.3-65.v6a_47d0f4d1fe checks-api:1.8.1 cloudbees-bitbucket-branch-source:796.v6cb_1559e1673 cloudbees-folder:6.800.v71307ca_b_986b cobertura:1.17 code-coverage-api:3.5.0 command-launcher:90.v669d7ccb7c31 commons-lang3-api:3.12.0-36.vd97de6465d5b commons-text-api:1.10.0-27.vb_fa_3896786a_7 config-file-provider:3.11.1 configuration-as-code:1569.vb_72405b_80249 credentials:1214.v1de940103927 credentials-binding:523.vd859a_4b_122e6 data-tables-api:1.12.1-4 display-url-api:2.3.7 dtkit-api:3.0.2 durable-task:504.vb10d1ae5ba2f echarts-api:5.4.0-1 email-ext:2.94 envinject:2.892.v25453b_80e595 envinject-api:1.199.v3ce31253ed13 extensible-choice-parameter:1.8.0 favorite:2.4.1 font-awesome-api:6.2.1-1 forensics-api:1.17.0 git:5.0.0 git-client:4.1.0 gitea:1.4.5 github:1.37.0 github-api:1.303-400.v35c2d8258028 github-branch-source:1701.v00cc8184df93 gitlab-plugin:1.7.6 gradle:2.3 handlebars:3.0.8 handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953 htmlpublisher:1.31 instance-identity:142.v04572ca_5b_265 ionicons-api:31.v4757b_6987003 ivy:2.4 jackson2-api:2.14.2-319.v37853346a_229 jakarta-activation-api:2.0.1-3 jakarta-mail-api:2.0.1-3 javadoc:226.v71211feb_e7e9 javax-activation-api:1.2.0-6 javax-mail-api:1.6.2-9 jaxb:2.3.8-1 jdk-tool:63.v62d2fd4b_4793 jenkins-design-language:1.27.1 jersey2-api:2.38-1 jjwt-api:0.11.5-77.v646c772fddb_0 job-dsl:1.81 jobConfigHistory:1198.v4d5736c2308c jquery3-api:3.6.1-2 jsch:0.1.55.61.va_e9ee26616e7 junit:1177.v90374a_ef4d09 ldap:659.v8ca_b_a_fe79fa_d locale:226.v008e1b_58cb_b_0 lockable-resources:1123.v4002ee23c671 log-parser:2.3.0 mailer:448.v5b_97805e3767 matrix-auth:3.1.6 matrix-project:785.v06b_7f47b_c631 maven-plugin:3.20 mina-sshd-api-common:2.9.2-50.va_0e1f42659a_a mina-sshd-api-core:2.9.2-50.va_0e1f42659a_a momentjs:1.1.1 monitoring:1.91.0 nodelabelparameter:1.11.0 okhttp-api:4.10.0-125.v3593b_af8c97b pipeline-build-step:2.18.1 pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-groovy-lib:629.vb_5627b_ee2104 pipeline-input-step:466.v6d0a_5df34f81 pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2118.v31fd5b_9944b_5 pipeline-model-definition:2.2118.v31fd5b_9944b_5 pipeline-model-extensions:2.2118.v31fd5b_9944b_5 pipeline-rest-api:2.31 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2118.v31fd5b_9944b_5 pipeline-stage-view:2.31 pipeline-utility-steps:2.15.0 plain-credentials:143.v1b_df8b_d3b_e48 plugin-usage-plugin:4.0 plugin-util-api:2.20.0 popper-api:1.16.1-3 popper2-api:2.11.6-2 prism-api:1.29.0-2 pubsub-light:1.17 rebuild:1.34 resource-disposer:0.21 scm-api:631.v9143df5b_e4a_a script-security:1229.v4880b_b_e905a_6 sidebar-link:2.2.1 snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4 sse-gateway:1.26 ssh-credentials:305.v8f4381501156 sshd:3.275.v9e17c10f2571 structs:324.va_f5d6774f3a_d swarm:3.39 timestamper:1.22 token-macro:321.vd7cc1f2a_52c8 trilead-api:2.84.v72119de229b_7 variant:59.vf075fe829ccb workflow-aggregator:590.v6a_d052e5a_a_b_5 workflow-api:1208.v0cc7c6e0da_9e workflow-basic-steps:1010.vf7a_b_98e847c1 workflow-cps:3618.v13db_a_21f0fcf workflow-durable-task-step:1234.v019404b_3832a workflow-job:1268.v6eb_e2ee1a_85a workflow-multibranch:733.v109046189126 workflow-scm-step:400.v6b_89a1317c9a workflow-step-api:639.v6eca_cd8c04aa workflow-support:839.v35e2736cfd5c ws-cleanup:0.44 xunit:3.1.2

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

Windows 10, with english and german display language

Reproduction steps

Step 1: Run the Jenkins Server while the hosts display language is set to english Step 2: In Manage Jenkins -> Global Security -> Authorization Matrix; Enable the Permissions for Lockable Resources Note: Here the Permissions will be named in english (View, Steal, etc) Step 3: Shut down Jenkins and change the display language to german Step 4: Restart Jenkins, it will now be unable to start due to incorrect Permissions being assigned.

Additional Steps for clarification: Step 5: Undo Steps 4-2 (Shutdown Jenkins, change display language back to english, disable Permissions) Step 6: Shut down Jenkins again and switch display language to german (with the permissions not being set) Step 7: Restart Jenkins and check the Permissions in the UI again, this time they will be named in german (Ansehen, Stehlen)

Expected Results

I expected the Permissions to be universally usable, independent from the host language as it is the case with every other plugin we're using. This would allow the user to switch systems with backups without running into issues.

Actual Results

The permissions are named differently based on the hosts display language, which is not ideal as that makes the JCasC file not be interchangeable between systems.

Anything else?

I attempted to force the Jenkins Language through a Locale Plugin and workaround this issue, but this did not work as the Language setting was dependant on the Host systems Language.

I would see two possible solutions here 1) Changing the permission names to be universally english despite the host language 2) A setting for the plugin allowing the user to force the plugins locale to be a specific language

mPokornyETM commented 1 year ago

I think about that few weeks ago, that it might be a issue. And yes, it is. 😇. But I think it is more related to JCAc as to this plugin. But anyway we shall try to solve it. Thx for your feedback.