Skip to content

Commit

Permalink
Merge pull request #156 from timja/move-to-appearance-page
Browse files Browse the repository at this point in the history
Move configuration to appearance page
  • Loading branch information
TobiX authored Sep 11, 2023
2 parents da54cc4 + 14c2dd6 commit 4b8766c
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 22 deletions.
17 changes: 8 additions & 9 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
#!groovy
def recentLTS = '2.375.2'
/*
See the documentation for more options:
https://github.com/jenkins-infra/pipeline-library/
*/
buildPlugin(
// Container agents start faster and are easier to administer
useContainerAgent: true,
useContainerAgent: true, // Set to `false` if you need to use Docker for containerized tests
configurations: [
[platform: 'linux', jdk: '11'],
[platform: 'linux', jdk: '17', jenkins: recentLTS],
[platform: 'windows', jdk: '17', jenkins: recentLTS],
]
)
[platform: 'linux', jdk: 21],
[platform: 'windows', jdk: 17],
])
20 changes: 15 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,30 +34,40 @@

<scm>
<connection>scm:git:ssh://github.com/${gitHubRepo}.git</connection>
<developerConnection>scm:git:ssh://git@github.com/${gitHubRepo}.git</developerConnection>
<developerConnection>scm:git:git@github.com:${gitHubRepo}.git</developerConnection>
<tag>${scmTag}</tag>
<url>https://github.com/${gitHubRepo}</url>
</scm>

<properties>
<changelist>999999-SNAPSHOT</changelist>
<gitHubRepo>jenkinsci/simple-theme-plugin</gitHubRepo>
<jenkins.version>2.361.1</jenkins.version>
<configuration-as-code.version>1569.vb_72405b_80249</configuration-as-code.version>
<jenkins.version>2.421</jenkins.version>
<hpi.compatibleSinceVersion>171</hpi.compatibleSinceVersion>
<spotless.check.skip>false</spotless.check.skip>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.jenkins.tools.bom</groupId>
<artifactId>bom-2.414.x</artifactId>
<version>2357.v1043f8578392</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>io.jenkins</groupId>
<artifactId>configuration-as-code</artifactId>
<version>${configuration-as-code.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.jenkins.configuration-as-code</groupId>
<artifactId>test-harness</artifactId>
<version>${configuration-as-code.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand Down
11 changes: 10 additions & 1 deletion src/main/java/org/codefirst/SimpleThemeDecorator.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package org.codefirst;

import edu.umd.cs.findbugs.annotations.NonNull;
import hudson.Extension;
import hudson.model.PageDecorator;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import jenkins.appearance.AppearanceCategory;
import jenkins.model.GlobalConfigurationCategory;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.jenkinsci.Symbol;
Expand All @@ -20,7 +23,7 @@
import org.kohsuke.stapler.StaplerRequest;

@Extension
@Symbol("simple-theme-plugin")
@Symbol("simpleTheme")
public class SimpleThemeDecorator extends PageDecorator {

private List<ThemeElement> elements = new ArrayList<>();
Expand Down Expand Up @@ -50,6 +53,12 @@ public boolean configure(StaplerRequest req, JSONObject formData) throws FormExc
return true;
}

@NonNull
@Override
public GlobalConfigurationCategory getCategory() {
return GlobalConfigurationCategory.get(AppearanceCategory.class);
}

public List<ThemeElement> getElements() {
return elements;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import lib.FormTagLib

def f = namespace(FormTagLib)

f.section(title: _("Theme")) {
f.section(title: _("Customizable theme")) {
f.entry(title: _("Theme elements")) {
f.repeatableHeteroProperty(field: "elements", hasHeader: true)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.jenkinsci.plugins.simpletheme;

import static io.jenkins.plugins.casc.misc.Util.getUnclassifiedRoot;
import static io.jenkins.plugins.casc.misc.Util.toStringFromYamlFile;
import static io.jenkins.plugins.casc.misc.Util.toYamlString;
import static org.hamcrest.MatcherAssert.assertThat;
Expand All @@ -11,11 +10,17 @@
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertNotNull;

import hudson.ExtensionList;
import io.jenkins.plugins.casc.ConfigurationContext;
import io.jenkins.plugins.casc.ConfiguratorRegistry;
import io.jenkins.plugins.casc.impl.configurators.GlobalConfigurationCategoryConfigurator;
import io.jenkins.plugins.casc.misc.ConfiguredWithCode;
import io.jenkins.plugins.casc.misc.JenkinsConfiguredWithCodeRule;
import io.jenkins.plugins.casc.model.CNode;
import io.jenkins.plugins.casc.model.Mapping;
import java.util.Objects;
import jenkins.appearance.AppearanceCategory;
import jenkins.model.GlobalConfigurationCategory;
import org.codefirst.SimpleThemeDecorator;
import org.junit.ClassRule;
import org.junit.Test;
Expand Down Expand Up @@ -44,12 +49,20 @@ public void testConfig() {
@Test
public void testExport() throws Exception {
ConfigurationContext context = new ConfigurationContext(ConfiguratorRegistry.get());
CNode yourAttribute = getUnclassifiedRoot(context).get("simple-theme-plugin");
CNode yourAttribute = getAppearanceRoot(context).get("simpleTheme");

String exported = toYamlString(yourAttribute);

String expected = toStringFromYamlFile(this, "ConfigurationAsCodeExport.yml");

assertThat(exported, is(expected));
}

private static Mapping getAppearanceRoot(ConfigurationContext context) throws Exception {
GlobalConfigurationCategory category =
ExtensionList.lookup(AppearanceCategory.class).get(0);
GlobalConfigurationCategoryConfigurator configurator = new GlobalConfigurationCategoryConfigurator(category);
return Objects.requireNonNull(configurator.describe(configurator.getTargetComponent(context), context))
.asMapping();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,20 +27,24 @@ public void testConfigRoundTrip() throws Exception {
SimpleThemeDecorator decorator = j.jenkins.getDescriptorByType(SimpleThemeDecorator.class);
fill(decorator);

j.configRoundtrip();
configRoundTrip();

decorator = j.jenkins.getDescriptorByType(SimpleThemeDecorator.class);

assertNotNull(decorator.getElements());
assertThat(decorator.getElements(), hasSize(4));
}

private void configRoundTrip() throws Exception {
j.submit(j.createWebClient().goTo("manage/appearance").getFormByName("config"));
}

@Test
public void testConfigCreatesHtml() throws Exception {
SimpleThemeDecorator decorator = j.jenkins.getDescriptorByType(SimpleThemeDecorator.class);
fill(decorator);

HtmlPage configPage = j.createWebClient().goTo("configure");
HtmlPage configPage = j.createWebClient().goTo("manage/appearance");
HtmlForm form = configPage.getFormByName("config");

urlThemeInput(form, CssUrlThemeElement.class).setValue("SOMECSSFILE.css");
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
unclassified:
simple-theme-plugin:
appearance:
simpleTheme:
elements:
- cssUrl:
url: "https://example.bogus/test.css"
Expand Down

0 comments on commit 4b8766c

Please sign in to comment.