From c570199d10f77da750fed5366d208f6f3b5def80 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Thu, 2 Oct 2025 14:12:56 +0100 Subject: [PATCH 1/3] Modernise UI --- docs/features/configExport.md | 14 +++---- .../casc/ConfigurationAsCode/index.jelly | 37 ++++++++----------- .../casc/ConfigurationAsCode/index.properties | 3 -- .../casc/ConfigurationAsCode/reference.jelly | 35 ++++-------------- .../casc/ConfigurationAsCode/viewExport.jelly | 18 +++++++-- .../ConfigurationAsCode/viewExport.properties | 2 + .../io/jenkins/plugins/casc/assets/index.css | 26 ------------- plugin/src/main/webapp/css/reference.css | 8 ++-- 8 files changed, 52 insertions(+), 91 deletions(-) delete mode 100644 plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/index.properties create mode 100644 plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.properties delete mode 100644 plugin/src/main/resources/io/jenkins/plugins/casc/assets/index.css diff --git a/docs/features/configExport.md b/docs/features/configExport.md index 6e3e3f8d21..6f872bc5a2 100644 --- a/docs/features/configExport.md +++ b/docs/features/configExport.md @@ -3,7 +3,7 @@ The plugin supports exporting existing configurations as YAML. This can be achieved with the following options: -* Accessing the `http://[your_jenkins_url]/configuration-as-code/` URL as a Jenkins administrators and pressing `Download Configuration` +* Accessing the `http://[your_jenkins_url]/configuration-as-code/` URL as a Jenkins administrator, and clicking `Export configuration` * Running the following in a Groovy script (not recommended, uses internal APIs): import io.jenkins.plugins.casc.ConfigurationAsCode @@ -11,9 +11,8 @@ This can be achieved with the following options: ConfigurationAsCode.get().export(stream) println stream.toString() -Export feature is **NOT** intended to offer a directly usable jenkins.yaml configuration. -It can be used for inspiration writing your own production-ready YAML, but be aware that export can be partial, -or fail for some components. +Export may not offer a directly usable jenkins.yaml configuration. +It is normally better when you copy the relevant sections you need instead of the entire file. ## Security notice @@ -21,14 +20,14 @@ Jenkins configuration may include various sensitive information, including, but not limited to, credentials, secrets, administrative information about the instance and user personal data. The Configuration-as-Code plugin tracks secrets and represents them safely in the exported YAMLs, but it cannot prevent secrets from being exported in all cases. -Ultimately, it is a responsibility of Jenkins administrators to ensure that the generated YAML files +Ultimately, it is the responsibility of Jenkins administrators to ensure that the generated YAML files do not include sensitive information. See more information about the masking logic below. ## Data to be exported -Currently the plugin does not have a way to define which data should be exported. +The plugin does not have a way to define which data should be exported. The following data is exported: * System configuration under the _Manage Jenkins_ link @@ -36,8 +35,9 @@ The following data is exported: * Agent configurations * Views * Credentials +* Users - Only if using the security realm "Jenkins’ own user database" -Jobs and users are NOT exported by the plugin. +The plugin does NOT export Jobs. ## Secret masking diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/index.jelly b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/index.jelly index 1516b64753..a4bdebcd48 100644 --- a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/index.jelly +++ b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/index.jelly @@ -2,8 +2,20 @@ - -

${%Configuration as Code}

+ + + + + + + + + + + + + @@ -17,7 +29,7 @@ -

${%Last time applied :}

+

${%Last time applied:}

@@ -25,7 +37,7 @@

${%Replace configuration source with:}

- + @@ -33,25 +45,8 @@
-

${%Actions}

- - - - - - - - - - - -
- - ${%exportWarning} -
-

${%Reference}

${%Documentation}
diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/index.properties b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/index.properties deleted file mode 100644 index 9d9269e32c..0000000000 --- a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/index.properties +++ /dev/null @@ -1,3 +0,0 @@ -exportWarning=Export is not intended to offer a directly usable jenkins.yaml configuration. \ - It can be used for inspiration writing your own, be aware export can be partial, \ - or fail for some components. diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/reference.jelly b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/reference.jelly index fed0487bac..9e7a5e8ef2 100644 --- a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/reference.jelly +++ b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/reference.jelly @@ -1,26 +1,10 @@ - - - - - - - - - - - - - - - - - - -
-
-
-

${%Jenkins Configuration as Code Reference}

+ + + + + +
@@ -28,10 +12,7 @@
-
-
-
- - + +
diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.jelly b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.jelly index 5b16ccd1eb..e1e407df6b 100644 --- a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.jelly +++ b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.jelly @@ -1,10 +1,22 @@ - - - + + + + + + + + + + +
+ ${%exportWarning} +
+
       ${export}
diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.properties b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.properties
new file mode 100644
index 0000000000..8707e36483
--- /dev/null
+++ b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.properties
@@ -0,0 +1,2 @@
+exportWarning=Export may not offer a directly usable jenkins.yaml configuration. \
+  It is normally better when you copy the relevant sections you need instead of the entire file.
diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/assets/index.css b/plugin/src/main/resources/io/jenkins/plugins/casc/assets/index.css
deleted file mode 100644
index 68b19091bc..0000000000
--- a/plugin/src/main/resources/io/jenkins/plugins/casc/assets/index.css
+++ /dev/null
@@ -1,26 +0,0 @@
-form[name='replace'] input[name='_.newSource'] {
-  width: 32em;
-}
-
-form[name='reload'] {
-  margin-bottom: 10px;
-}
-
-form[name='export'] {
-  float: left;
-  margin-right: 20px;
-  margin-bottom: 10px;
-}
-
-form[name='viewExport'] {
-  float: left;
-}
-
-td {
-  vertical-align: middle;
-}
-
-.clear-action-forms {
-  margin-top: 10px;
-  clear: both;
-}
diff --git a/plugin/src/main/webapp/css/reference.css b/plugin/src/main/webapp/css/reference.css
index c1645bf6ed..82c1c81922 100644
--- a/plugin/src/main/webapp/css/reference.css
+++ b/plugin/src/main/webapp/css/reference.css
@@ -8,13 +8,13 @@
 
 .configurator-pointer {
   font-size: 0.5em;
-  color: #454545;
+  color: var(--text-color-secondary);
   font-weight: 100;
 }
 
 .root-configurator-pointer {
   font-size: 0.5em;
-  color: #7f5200;
+  color: var(--orange);
   font-weight: 100;
 }
 
@@ -27,7 +27,7 @@
   display: flex;
   flex-grow: 1;
   margin-left: 25px;
-  border-left: 1px solid #ccc;
+  border-left: var(--jenkins-border);
   line-height: 24px;
 }
 
@@ -70,7 +70,7 @@
 }
 
 .attribute-type {
-  color: #454545;
+  color: var(--text-color-secondary);
 }
 
 .attribute-type__list {

From a21a3216094aeee632c371e50ce6983c4312fdae Mon Sep 17 00:00:00 2001
From: Tim Jacomb 
Date: Thu, 2 Oct 2025 14:18:11 +0100
Subject: [PATCH 2/3] Format reference page

---
 .../casc/ConfigurationAsCode/reference.jelly  | 29 +++++++++----------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/reference.jelly b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/reference.jelly
index 9e7a5e8ef2..522014e4d6 100644
--- a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/reference.jelly
+++ b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/reference.jelly
@@ -1,18 +1,17 @@
 
-  
-    
-      
-      
-        
-        
-
-  
- - - - -
-
-
+ + + + + + +
+ + + + +
+
+
From 9b018a173ecfcb302b65a82432614f3dc9b1bd5e Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Thu, 2 Oct 2025 15:38:57 +0100 Subject: [PATCH 3/3] Fix tests --- .../test/java/io/jenkins/plugins/casc/permissions/Action.java | 3 +-- .../io/jenkins/plugins/casc/permissions/PermissionsTest.java | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/permissions/Action.java b/plugin/src/test/java/io/jenkins/plugins/casc/permissions/Action.java index c612a72b50..3a49c98e11 100644 --- a/plugin/src/test/java/io/jenkins/plugins/casc/permissions/Action.java +++ b/plugin/src/test/java/io/jenkins/plugins/casc/permissions/Action.java @@ -1,8 +1,7 @@ package io.jenkins.plugins.casc.permissions; public enum Action { - VIEW_CONFIGURATION("View Configuration"), - DOWNLOAD_CONFIGURATION("Download Configuration"), + VIEW_CONFIGURATION("Export configuration"), APPLY_NEW_CONFIGURATION("Apply new configuration"), RELOAD_EXISTING_CONFIGURATION("Reload existing configuration"), ; diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/permissions/PermissionsTest.java b/plugin/src/test/java/io/jenkins/plugins/casc/permissions/PermissionsTest.java index fe72aa9316..181f194d8a 100644 --- a/plugin/src/test/java/io/jenkins/plugins/casc/permissions/PermissionsTest.java +++ b/plugin/src/test/java/io/jenkins/plugins/casc/permissions/PermissionsTest.java @@ -1,7 +1,6 @@ package io.jenkins.plugins.casc.permissions; import static io.jenkins.plugins.casc.permissions.Action.APPLY_NEW_CONFIGURATION; -import static io.jenkins.plugins.casc.permissions.Action.DOWNLOAD_CONFIGURATION; import static io.jenkins.plugins.casc.permissions.Action.RELOAD_EXISTING_CONFIGURATION; import static io.jenkins.plugins.casc.permissions.Action.VIEW_CONFIGURATION; import static java.lang.String.format; @@ -62,7 +61,6 @@ void checkPermissionsForSystemReader(JenkinsRule j) throws Exception { SYSTEM_READER, ImmutableMap.builder() .put(VIEW_CONFIGURATION, true) - .put(DOWNLOAD_CONFIGURATION, true) .put(APPLY_NEW_CONFIGURATION, false) .put(RELOAD_EXISTING_CONFIGURATION, false) .build()); @@ -106,7 +104,6 @@ void checkPermissionsForAdmin(JenkinsRule j) throws Exception { ADMIN, ImmutableMap.builder() .put(VIEW_CONFIGURATION, true) - .put(DOWNLOAD_CONFIGURATION, true) .put(APPLY_NEW_CONFIGURATION, true) .put(RELOAD_EXISTING_CONFIGURATION, true) .build());