From 72edb8559177432001e9c4ca884a152f9e2304c9 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sun, 9 Jan 2022 07:37:17 -0800 Subject: [PATCH 01/11] Use detached plugin --- pom.xml | 12 ++++-------- src/test/java/hudson/tasks/MailerTest.java | 7 ++++++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 966855a4..2bd252e6 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ 999999-SNAPSHOT 8 - 2.289.1 + 2.329-rc31978.fa_f50a_a_d3e46 jenkinsci/${project.artifactId}-plugin @@ -31,8 +31,8 @@ io.jenkins.tools.bom - bom-2.289.x - 1075.v14bef33e5d7b + bom-weekly + 1090.v0a_33df40457a_ import pom @@ -53,10 +53,6 @@ org.hamcrest hamcrest-core - - javax.annotation - javax.annotation-api - @@ -79,7 +75,7 @@ io.jenkins.plugins javax-mail-api - 1.6.2-2 + 1.6.2-5 org.mockito diff --git a/src/test/java/hudson/tasks/MailerTest.java b/src/test/java/hudson/tasks/MailerTest.java index 9f1e3fd1..64ee3b4b 100644 --- a/src/test/java/hudson/tasks/MailerTest.java +++ b/src/test/java/hudson/tasks/MailerTest.java @@ -62,6 +62,7 @@ import jenkins.model.JenkinsLocationConfiguration; import java.io.IOException; +import java.io.UncheckedIOException; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Optional; @@ -297,7 +298,11 @@ public CleanJenkinsLocationConfiguration() { @Override public synchronized void load() { - getConfigFile().delete(); + try { + getConfigFile().delete(); + } catch (IOException e) { + throw new UncheckedIOException(e); + } super.load(); } }; From 818d13a000d8ea028d971dc488e56efdd3506aad Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 21 Jan 2022 09:58:01 -0800 Subject: [PATCH 02/11] Bump plugin BOM from 1090.v0a_33df40457a_ to 1117.v62a_f6a_01de98 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2bd252e6..7064b362 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ io.jenkins.tools.bom bom-weekly - 1090.v0a_33df40457a_ + 1117.v62a_f6a_01de98 import pom From 7deeda155287f04384088e250f40c59ef151d305 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Fri, 21 Jan 2022 09:58:12 -0800 Subject: [PATCH 03/11] Use released version of Jenkins core --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7064b362..73f533bd 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ 999999-SNAPSHOT 8 - 2.329-rc31978.fa_f50a_a_d3e46 + 2.331 jenkinsci/${project.artifactId}-plugin From c1d7a4764d01bf262d855e607224e8efd4a48d41 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Sun, 13 Mar 2022 16:09:24 -0700 Subject: [PATCH 04/11] Remove `javaLevel` --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2eaf83ed..79437690 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,5 @@ buildPlugin(configurations: [ [ platform: "linux", jdk: "8", jenkins: null ], [ platform: "windows", jdk: "8", jenkins: null ], - [ platform: "linux", jdk: "11", jenkins: null, javaLevel: 8 ] + [ platform: "linux", jdk: "11", jenkins: null ] ]) From 809d6a6a1757a17dda202655bd2b9aac69f60a78 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 26 Apr 2022 20:07:29 -0700 Subject: [PATCH 05/11] Update plugin parent POM --- pom.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 966855a4..be5f3d93 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ org.jenkins-ci.plugins plugin - 4.32 + 4.40 @@ -22,7 +22,6 @@ 999999-SNAPSHOT - 8 2.289.1 jenkinsci/${project.artifactId}-plugin @@ -147,7 +146,7 @@ - scm:git:git://github.com/${gitHubRepo}.git + scm:git:https://github.com/${gitHubRepo}.git scm:git:git@github.com:${gitHubRepo}.git https://github.com/${gitHubRepo} ${scmTag} From 1ab2e11178afd9ce1a07b9c01450676cd85d42dd Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 26 Apr 2022 22:21:13 -0700 Subject: [PATCH 06/11] Adapt to method signature change --- src/test/java/hudson/tasks/MailerTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/test/java/hudson/tasks/MailerTest.java b/src/test/java/hudson/tasks/MailerTest.java index 0f7f739c..5b8b9717 100644 --- a/src/test/java/hudson/tasks/MailerTest.java +++ b/src/test/java/hudson/tasks/MailerTest.java @@ -62,6 +62,7 @@ import jenkins.model.JenkinsLocationConfiguration; import java.io.IOException; +import java.io.UncheckedIOException; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Optional; @@ -298,7 +299,12 @@ public CleanJenkinsLocationConfiguration() { @Override public synchronized void load() { - getConfigFile().delete(); + try { + getConfigFile().delete(); + } catch (Exception e) { + // TODO 2.325+ catch IOException and throw UncheckedIOException + throw new RuntimeException(e); + } super.load(); } }; From 3c92610129a52cc04e583e76c8309bb25c287303 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 26 Apr 2022 23:35:34 -0700 Subject: [PATCH 07/11] PCT compatibility with email-ext --- src/test/java/hudson/tasks/MailerTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/hudson/tasks/MailerTest.java b/src/test/java/hudson/tasks/MailerTest.java index 5b8b9717..4fd2cb3c 100644 --- a/src/test/java/hudson/tasks/MailerTest.java +++ b/src/test/java/hudson/tasks/MailerTest.java @@ -72,6 +72,7 @@ import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; @@ -260,6 +261,8 @@ public void testGlobalConfigRoundtrip() throws Exception { @Test public void globalConfig() throws Exception { + Assume.assumeThat("TODO the form elements for email-ext have the same names", rule.getPluginManager().getPlugin("email-ext"), is(nullValue())); + WebClient webClient = rule.createWebClient(); HtmlPage cp = webClient.goTo("configure"); HtmlForm form = cp.getFormByName("config"); From 3ccdaa1df551ea8728a005b98deff0a86754b5ba Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Wed, 27 Apr 2022 07:07:17 -0700 Subject: [PATCH 08/11] Update pom.xml --- pom.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 151610f0..3282992e 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ 999999-SNAPSHOT - 2.289.1 + 2.332.1 jenkinsci/${project.artifactId}-plugin @@ -30,8 +30,8 @@ io.jenkins.tools.bom - bom-weekly - 1117.v62a_f6a_01de98 + bom-2.332.x + 1155.v77b_fd92a_26fc import pom @@ -74,7 +74,6 @@ io.jenkins.plugins javax-mail-api - 1.6.2-5 org.mockito From 2c6e890ad2452b608f834f9010756c397b668745 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Wed, 27 Apr 2022 08:21:32 -0700 Subject: [PATCH 09/11] Remove unnecessary use of reflection (#157) --- pom.xml | 1 + src/main/java/hudson/cli/MailCommand.java | 2 +- src/main/java/hudson/tasks/Mailer.java | 22 ++++------------------ src/test/java/hudson/tasks/MailerTest.java | 20 +------------------- 4 files changed, 7 insertions(+), 38 deletions(-) diff --git a/pom.xml b/pom.xml index be5f3d93..c32b579a 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ 999999-SNAPSHOT 2.289.1 jenkinsci/${project.artifactId}-plugin + true diff --git a/src/main/java/hudson/cli/MailCommand.java b/src/main/java/hudson/cli/MailCommand.java index 432e9f9f..fbf9e946 100644 --- a/src/main/java/hudson/cli/MailCommand.java +++ b/src/main/java/hudson/cli/MailCommand.java @@ -45,7 +45,7 @@ public String getShortDescription() { } protected int run() throws Exception { - Jenkins.get().checkPermission(Mailer.DescriptorImpl.getJenkinsManageOrAdmin()); + Jenkins.get().checkPermission(Jenkins.MANAGE); Transport.send(new MimeMessage(Mailer.descriptor().createSession(), stdin)); return 0; } diff --git a/src/main/java/hudson/tasks/Mailer.java b/src/main/java/hudson/tasks/Mailer.java index 0644dabf..8145c943 100644 --- a/src/main/java/hudson/tasks/Mailer.java +++ b/src/main/java/hudson/tasks/Mailer.java @@ -27,7 +27,6 @@ import edu.umd.cs.findbugs.annotations.CheckForNull; import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import hudson.Util; import hudson.BulkChange; import hudson.EnvVars; @@ -41,7 +40,6 @@ import jenkins.plugins.mailer.tasks.i18n.Messages; import hudson.security.Permission; import hudson.util.FormValidation; -import hudson.util.ReflectionUtils; import hudson.util.Secret; import hudson.util.XStream2; @@ -53,7 +51,6 @@ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.lang.reflect.InvocationTargetException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Date; @@ -325,20 +322,9 @@ public DescriptorImpl() { } @NonNull - // TODO: Add @Override when Jenkins core baseline is 2.222+ + @Override public Permission getRequiredGlobalConfigPagePermission() { - return getJenkinsManageOrAdmin(); - } - - // TODO: remove when Jenkins core baseline is 2.222+ - public static Permission getJenkinsManageOrAdmin() { - Permission manage; - try { // Manage is available starting from Jenkins 2.222 (https://jenkins.io/changelog/#v2.222). See JEP-223 for more info - manage = (Permission) ReflectionUtils.getPublicProperty(Jenkins.get(), "MANAGE"); - } catch (IllegalArgumentException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) { - manage = Jenkins.ADMINISTER; - } - return manage; + return Jenkins.MANAGE; } public String getDisplayName() { @@ -670,7 +656,7 @@ public FormValidation doAddressCheck(@QueryParameter String value) { @RequirePOST public FormValidation doCheckSmtpHost(@QueryParameter String value) { - Jenkins.get().checkPermission(getJenkinsManageOrAdmin()); + Jenkins.get().checkPermission(Jenkins.MANAGE); try { if (Util.fixEmptyAndTrim(value)!=null) InetAddress.getByName(value); @@ -709,7 +695,7 @@ public FormValidation doSendTestMail( @QueryParameter boolean useSsl, @QueryParameter boolean useTls, @QueryParameter String smtpPort, @QueryParameter String charset, @QueryParameter String sendTestMailTo) throws IOException { try { - Jenkins.get().checkPermission(DescriptorImpl.getJenkinsManageOrAdmin()); + Jenkins.get().checkPermission(Jenkins.MANAGE); if (!authentication) { username = null; password = null; diff --git a/src/test/java/hudson/tasks/MailerTest.java b/src/test/java/hudson/tasks/MailerTest.java index 4fd2cb3c..8f555933 100644 --- a/src/test/java/hudson/tasks/MailerTest.java +++ b/src/test/java/hudson/tasks/MailerTest.java @@ -30,10 +30,8 @@ import hudson.model.*; import hudson.security.ACL; import hudson.security.ACLContext; -import hudson.security.Permission; import hudson.slaves.DumbSlave; import hudson.tasks.Mailer.DescriptorImpl; -import hudson.util.ReflectionUtils; import hudson.util.Secret; import org.hamcrest.MatcherAssert; import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition; @@ -62,8 +60,6 @@ import jenkins.model.JenkinsLocationConfiguration; import java.io.IOException; -import java.io.UncheckedIOException; -import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Optional; import java.util.concurrent.atomic.AtomicLong; @@ -449,13 +445,6 @@ public void testMigrateOldData() { @Test public void managePermissionShouldAccessGlobalConfig() { - Permission jenkinsManage; - try { - jenkinsManage = getJenkinsManage(); - } catch (Exception e) { - Assume.assumeTrue("Jenkins baseline is too old for this test (requires Jenkins.MANAGE)", false); - return; - } final String USER = "user"; final String MANAGER = "manager"; rule.jenkins.setSecurityRealm(rule.createDummySecurityRealm()); @@ -465,7 +454,7 @@ public void managePermissionShouldAccessGlobalConfig() { // Read and Manage .grant(Jenkins.READ).everywhere().to(MANAGER) - .grant(jenkinsManage).everywhere().to(MANAGER) + .grant(Jenkins.MANAGE).everywhere().to(MANAGER) ); try (ACLContext c = ACL.as(User.getById(USER, true))) { @@ -513,13 +502,6 @@ public void doCheckSmtpServerShouldNotThrowForUserWithManagePermissions() { } } - // TODO: remove when Jenkins core baseline is 2.222+ - private Permission getJenkinsManage() throws NoSuchMethodException, IllegalAccessException, - InvocationTargetException { - // Jenkins.MANAGE is available starting from Jenkins 2.222 (https://jenkins.io/changelog/#v2.222). See JEP-223 for more info - return (Permission) ReflectionUtils.getPublicProperty(Jenkins.get(), "MANAGE"); - } - private final class TestProject { private final FakeChangeLogSCM scm = new FakeChangeLogSCM(); private final FreeStyleProject project; From 1d668f60490214a83e9c025dccc97ae0ebf5df58 Mon Sep 17 00:00:00 2001 From: Joseph Petersen Date: Tue, 14 Jun 2022 23:34:49 +0200 Subject: [PATCH 10/11] chore: use jenkins infra maven cd reusable workflow --- .github/workflows/cd.yaml | 54 ++++----------------------------------- 1 file changed, 5 insertions(+), 49 deletions(-) diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index d1dafdd0..0279984d 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -8,52 +8,8 @@ on: - completed jobs: - validate: - runs-on: ubuntu-latest - outputs: - should_release: ${{ steps.verify-ci-status.outputs.result == 'success' && steps.interesting-categories.outputs.interesting == 'true' }} - steps: - - name: Verify CI status - uses: jenkins-infra/verify-ci-status-action@v1.2.0 - id: verify-ci-status - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - output_result: true - - - name: Release Drafter - uses: release-drafter/release-drafter@v5 - if: steps.verify-ci-status.outputs.result == 'success' - with: - name: next - tag: next - version: next - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Check interesting categories - uses: jenkins-infra/interesting-category-action@v1.0.0 - id: interesting-categories - if: steps.verify-ci-status.outputs.result == 'success' - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - release: - runs-on: ubuntu-latest - needs: [validate] - if: needs.validate.outputs.should_release == 'true' - steps: - - name: Check out - uses: actions/checkout@v2.3.4 - with: - fetch-depth: 0 - - name: Set up JDK 8 - uses: actions/setup-java@v2 - with: - distribution: 'adopt' - java-version: 8 - - name: Release - uses: jenkins-infra/jenkins-maven-cd-action@v1.1.0 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} - MAVEN_TOKEN: ${{ secrets.MAVEN_TOKEN }} + maven-cd: + uses: jenkins-infra/github-reusable-workflows/.github/workflows/maven-cd.yml@v1 + secrets: + MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} + MAVEN_TOKEN: ${{ secrets.MAVEN_TOKEN }} From 4cee55b6201c79c975c37f2cad5492ceda1ab486 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 19 Jul 2022 10:16:07 -0400 Subject: [PATCH 11/11] Missing import --- src/test/java/hudson/tasks/MailerTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/hudson/tasks/MailerTest.java b/src/test/java/hudson/tasks/MailerTest.java index 14e58ec0..ab489fc0 100644 --- a/src/test/java/hudson/tasks/MailerTest.java +++ b/src/test/java/hudson/tasks/MailerTest.java @@ -60,6 +60,7 @@ import jenkins.model.JenkinsLocationConfiguration; import java.io.IOException; +import java.io.UncheckedIOException; import java.util.Collection; import java.util.Optional; import java.util.concurrent.atomic.AtomicLong;