From eb952ecfb9f4c1794745dbb9c40e830a546e5955 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 08:58:55 +0100 Subject: [PATCH 01/13] Update parent project version --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 93db1f0..bfa8ff0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ org.jenkins-ci.plugins plugin - 2.13 - + 4.49 + cucumber-slack-notifier @@ -114,4 +114,4 @@ - \ No newline at end of file + From cf315707f41e192a7ff651c26428588523806112 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 09:00:21 +0100 Subject: [PATCH 02/13] Update minimum Jenkins version requirement --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index bfa8ff0..44c816b 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ UTF-8 UTF-8 + 2.346.3 2.13 From 7bba678fc3dc020d5313969a5f6cf095d38398b5 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 09:05:48 +0100 Subject: [PATCH 03/13] Fix unsecure links to resources --- pom.xml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 44c816b..7a370d0 100644 --- a/pom.xml +++ b/pom.xml @@ -30,18 +30,11 @@ Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt + https://www.apache.org/licenses/LICENSE-2.0.txt repo - - - repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ - - - com.google.code.gson @@ -75,10 +68,16 @@ + + + repo.jenkins-ci.org + https://repo.jenkins-ci.org/public/ + + repo.jenkins-ci.org - http://repo.jenkins-ci.org/public/ + https://repo.jenkins-ci.org/public/ @@ -86,7 +85,7 @@ scm:git:ssh://github.com/jenkinsci/cucumber-slack-notifier-plugin.git scm:git:ssh://git@github.com/jenkinsci/cucumber-slack-notifier-plugin.git https://github.com/jenkinsci/cucumber-slack-notifier-plugin - cucumber-slack-notifier-0.9.0 + HEAD From 666776b62a49b58af401dea2adea77dc7a7fdfb1 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 09:09:14 +0100 Subject: [PATCH 04/13] Uses Jenkins BOM for plugin dependencies --- pom.xml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 7a370d0..22e1768 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,6 @@ UTF-8 UTF-8 2.346.3 - 2.13 @@ -35,6 +34,17 @@ + + + + io.jenkins.tools.bom + bom-2.346.x + 1670.v7f165fc7a_079 + pom + import + + + com.google.code.gson @@ -45,25 +55,21 @@ org.jenkins-ci.plugins.workflow workflow-step-api - ${workflow.version} org.jenkins-ci.plugins.workflow workflow-cps - ${workflow.version} test org.jenkins-ci.plugins.workflow workflow-job - ${workflow.version} test org.jenkins-ci.plugins.workflow workflow-step-api tests - ${workflow.version} test From 13287c9ab8d72ec3397c8ec72f741ac54c1a1355 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 09:10:37 +0100 Subject: [PATCH 05/13] Update plugin build configuration --- pom.xml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/pom.xml b/pom.xml index 22e1768..c136072 100644 --- a/pom.xml +++ b/pom.xml @@ -99,7 +99,6 @@ org.apache.maven.plugins maven-release-plugin - 2.5.3 org.apache.maven.scm @@ -108,16 +107,6 @@ - - org.codehaus.mojo - findbugs-maven-plugin - 3.0.5 - - false - Low - - - From 1aea7fa900c4f09dc6dd1dfa28703b6c0a54d764 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 09:17:50 +0100 Subject: [PATCH 06/13] Fix project versioning --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c136072..505f2f1 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ cucumber-slack-notifier - 0.9.0 + 0.10.0-SNAPSHOT hpi https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Slack+Notifier+Plugin From 603a2502f9b82d26c4bcfb6c412d307e573dbeba Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 09:18:52 +0100 Subject: [PATCH 07/13] Incrementalify project --- .mvn/extensions.xml | 7 +++++++ .mvn/maven.config | 2 ++ pom.xml | 13 ++++++++----- 3 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 .mvn/extensions.xml create mode 100644 .mvn/maven.config diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml new file mode 100644 index 0000000..9ac2968 --- /dev/null +++ b/.mvn/extensions.xml @@ -0,0 +1,7 @@ + + + io.jenkins.tools.incrementals + git-changelist-maven-extension + 1.4 + + diff --git a/.mvn/maven.config b/.mvn/maven.config new file mode 100644 index 0000000..2a0299c --- /dev/null +++ b/.mvn/maven.config @@ -0,0 +1,2 @@ +-Pconsume-incrementals +-Pmight-produce-incrementals diff --git a/pom.xml b/pom.xml index 505f2f1..ae0baab 100644 --- a/pom.xml +++ b/pom.xml @@ -9,11 +9,14 @@ cucumber-slack-notifier - 0.10.0-SNAPSHOT + ${revision}${changelist} hpi https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Slack+Notifier+Plugin + 0.10.0 + -SNAPSHOT + jenkinsci/cucumber-slack-notifier-plugin UTF-8 UTF-8 2.346.3 @@ -88,10 +91,10 @@ - scm:git:ssh://github.com/jenkinsci/cucumber-slack-notifier-plugin.git - scm:git:ssh://git@github.com/jenkinsci/cucumber-slack-notifier-plugin.git - https://github.com/jenkinsci/cucumber-slack-notifier-plugin - HEAD + scm:git:ssh://github.com/${gitHubRepo}.git + scm:git:ssh://git@github.com/${gitHubRepo}.git + https://github.com/${gitHubRepo} + ${scmTag} From cfac748e7592369cadf1459254f38510f72c0add Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 09:21:31 +0100 Subject: [PATCH 08/13] Automate dependency updates --- .github/dependabot.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..88dd156 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: +- package-ecosystem: maven + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 From adec3778d1bd9dfebe8c3f67f989e74656c1981d Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 09:37:24 +0100 Subject: [PATCH 09/13] Migrates plugin documentation away from wiki --- CHANGELOG.md | 37 ++++++++++++++++++++++++++++++++++ README.md | 29 ++++++++++++++++---------- docs/images/global_config.png | Bin 0 -> 19647 bytes docs/images/job_config.png | Bin 0 -> 26154 bytes pom.xml | 2 +- 5 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 docs/images/global_config.png create mode 100644 docs/images/job_config.png diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..e2d70f6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,37 @@ +## Change Log + +Starting with release 0.9.0, release notes can be found on [GitHub Releases page](https://github.com/jenkinsci/cucumber-slack-notifier-plugin/releases) + +### Version 0.8.3 (19th July 2016) + +- Adds option to report only failures ([#2](https://github.com/jenkinsci/cucumber-slack-notifier-plugin/pull/2)) + +### Version 0.8.2 (4th July 2016) + +- Added ability to add custom text a message + +### Version 0.8.1 (4th July 2016) + +- Fixed issue with link generation in slack message + +### Version 0.8 (3th July 2016) + +- Added Jenkins Pipeline Support + +### Version 0.7 (17th Dec 2015) + +- Added Build Step & Post Build Notifiers +- Added Global Config Validation +- Implemented common service for sending notifications + +### Version 0.6.1 (17th Dec 2015) + +- Fixed invalid check for configuration + +### Version 0.6 (16th Dec 2015) + +- Correctly reading json report file from the workspace directory + +### Version 0.4 (15th Dec 2015) + +- Initial Release diff --git a/README.md b/README.md index 0e20de4..b977591 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,30 @@ -# cucumber-slack-notifier-plugin +# Cucumber Slack Notifier plugin Jenkins plugin to push summarised Cucumber reports to Slack [![Build Status](https://travis-ci.org/garethjevans/cucumber-slack-notifier-plugin.svg)](https://travis-ci.org/garethjevans/cucumber-slack-notifier-plugin) -## Installation +## Jenkins Pipeline Usage -Coming Soon... +Use within a node block as the example below shows: -## Configuration +``` syntaxhighlighter-pre +node { + stage 'Cucumber Reports' + + // process cucumber reports + step([$class: 'CucumberReportPublisher', jsonReportDirectory: 'target/', fileIncludePattern: '*.json']) -The following options are available: + // send report to slack + cucumberSendSlack: channel: 'test-results-channel', json: 'target/test-results.json' +} +``` -### Global Configuration +## Installation Instructions -* webHookEndpoint +### Global Configuration -TODO: add a screen shot here +![](docs/images/global_config.png) -* Channel Webhook URL - slack channel Webhook URL to post result to -* JSON Result File - json file containing the cucumber results, e.g. target/cucumber.json +### Job Configuration -![config](https://i.ibb.co/sj6X6T8/Screenshot-from-2019-04-23-14-46-47.png) +![](docs/images/job_config.png) diff --git a/docs/images/global_config.png b/docs/images/global_config.png new file mode 100644 index 0000000000000000000000000000000000000000..9d111764706833f9032535be7d2e037102d5534d GIT binary patch literal 19647 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 T{H4cucumber-slack-notifier ${revision}${changelist} hpi - https://wiki.jenkins-ci.org/display/JENKINS/Cucumber+Slack+Notifier+Plugin + https://github.com/${gitHubRepo} 0.10.0 From d42203b7b54a3cfe3fd9b37a591911020f5fb4ed Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 12:29:15 +0100 Subject: [PATCH 10/13] Builds plugin on ci.jenkins.io --- Jenkinsfile | 5 +++++ README.md | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..fc7762d --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,5 @@ +buildPlugin(configurations: [ + [ platform: 'linux', jdk: '11' ], + [ platform: 'windows', jdk: '11' ], + [ platform: 'linux', jdk: '17' ], +]) diff --git a/README.md b/README.md index b977591..e1cfbc1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # Cucumber Slack Notifier plugin Jenkins plugin to push summarised Cucumber reports to Slack -[![Build Status](https://travis-ci.org/garethjevans/cucumber-slack-notifier-plugin.svg)](https://travis-ci.org/garethjevans/cucumber-slack-notifier-plugin) - ## Jenkins Pipeline Usage Use within a node block as the example below shows: From 300b95b3322cd144d5571fb3ba5138639a4b45b9 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 12:32:51 +0100 Subject: [PATCH 11/13] Fixes spotbugs reported issues --- .../slacknotifier/CucumberSlackBuildStepNotifier.java | 10 +++++++--- .../slacknotifier/CucumberSlackPostBuildNotifier.java | 10 +++++++--- .../plugins/slacknotifier/CucumberSlackService.java | 3 ++- .../jenkinsci/plugins/slacknotifier/SlackClient.java | 4 ++-- .../slacknotifier/workflow/CucumberSlackStep.java | 2 +- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackBuildStepNotifier.java b/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackBuildStepNotifier.java index 13a5141..8950978 100644 --- a/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackBuildStepNotifier.java +++ b/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackBuildStepNotifier.java @@ -1,6 +1,7 @@ package org.jenkinsci.plugins.slacknotifier; import hudson.Extension; +import hudson.FilePath; import hudson.Launcher; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; @@ -55,9 +56,12 @@ public boolean perform(AbstractBuild build, Launcher launcher, BuildListener lis } CucumberSlackService service = new CucumberSlackService(webhookUrl); - service.sendCucumberReportToSlack(build, build.getWorkspace(), json, channel, null, hideSuccessfulResults); - - return true; + final FilePath workspace = build.getWorkspace(); + if (workspace != null) { + service.sendCucumberReportToSlack(build, workspace, json, channel, null, hideSuccessfulResults); + return true; + } + return false; } @Override diff --git a/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackPostBuildNotifier.java b/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackPostBuildNotifier.java index 2e7ed65..f34547a 100644 --- a/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackPostBuildNotifier.java +++ b/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackPostBuildNotifier.java @@ -1,6 +1,7 @@ package org.jenkinsci.plugins.slacknotifier; import hudson.Extension; +import hudson.FilePath; import hudson.Launcher; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; @@ -61,9 +62,12 @@ public boolean perform(AbstractBuild build, Launcher launcher, BuildListen LOG.info("hideSuccessfulResults = ***" + hideSuccessfulResults + "***"); CucumberSlackService service = new CucumberSlackService(webhookUrl); - service.sendCucumberReportToSlack(build, build.getWorkspace(), json, channel, null, hideSuccessfulResults); - - return true; + final FilePath workspace = build.getWorkspace(); + if (workspace != null) { + service.sendCucumberReportToSlack(build, workspace, json, channel, null, hideSuccessfulResults); + return true; + } + return false; } @Override diff --git a/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackService.java b/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackService.java index d7aaee9..30d1742 100644 --- a/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackService.java +++ b/src/main/java/org/jenkinsci/plugins/slacknotifier/CucumberSlackService.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.logging.Logger; public class CucumberSlackService { @@ -35,7 +36,7 @@ private JsonElement getResultFileAsJsonElement(FilePath workspace, String json) final Gson gson = new Gson(); try { - final JsonReader jsonReader = new JsonReader(new InputStreamReader(jsonPath.read())); + final JsonReader jsonReader = new JsonReader(new InputStreamReader(jsonPath.read(), StandardCharsets.UTF_8)); return gson.fromJson(jsonReader, JsonElement.class); } catch (IOException | InterruptedException e) { LOG.severe("Exception occurred while reading test results: " + e); diff --git a/src/main/java/org/jenkinsci/plugins/slacknotifier/SlackClient.java b/src/main/java/org/jenkinsci/plugins/slacknotifier/SlackClient.java index 57702b8..4c6f307 100644 --- a/src/main/java/org/jenkinsci/plugins/slacknotifier/SlackClient.java +++ b/src/main/java/org/jenkinsci/plugins/slacknotifier/SlackClient.java @@ -91,12 +91,12 @@ public CucumberResult processResults(JsonElement resultElement) { } } totalScenarios = totalScenarios + scenariosTotal; - final int scenarioPassPercent = Math.round(((scenariosTotal - failed) * 100) / scenariosTotal); + final int scenarioPassPercent = ((scenariosTotal - failed) * 100) / scenariosTotal; if (scenarioPassPercent != 100 || !hideSuccessfulResults) { results.add(new FeatureResult(feature.get("uri").getAsString(), feature.get("name").getAsString(), scenarioPassPercent)); } } - passPercent = Math.round(((totalScenarios - failedScenarios) * 100) / totalScenarios); + passPercent = ((totalScenarios - failedScenarios) * 100) / totalScenarios; return new CucumberResult(results, totalScenarios, passPercent); } diff --git a/src/main/java/org/jenkinsci/plugins/slacknotifier/workflow/CucumberSlackStep.java b/src/main/java/org/jenkinsci/plugins/slacknotifier/workflow/CucumberSlackStep.java index 6314351..07dc7b2 100644 --- a/src/main/java/org/jenkinsci/plugins/slacknotifier/workflow/CucumberSlackStep.java +++ b/src/main/java/org/jenkinsci/plugins/slacknotifier/workflow/CucumberSlackStep.java @@ -53,7 +53,7 @@ public boolean getHideSuccessfulResults() { @DataBoundSetter public void setHideSuccessfulResults(String hideSuccessfulResults) { - this.hideSuccessfulResults = Boolean.getBoolean(Util.fixEmpty(hideSuccessfulResults)); + this.hideSuccessfulResults = Boolean.getBoolean(hideSuccessfulResults); } public String getExtra() { From 16dc8138015b5f6dc113a638d6bd22b18e1362b7 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 12:35:05 +0100 Subject: [PATCH 12/13] Import httpclient3 api plugin This is to prepare the removal of the library from core --- pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pom.xml b/pom.xml index b153609..1a91d83 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,11 @@ gson 2.5 + + io.jenkins.plugins + commons-httpclient3-api + 3.1-3 + org.jenkins-ci.plugins.workflow From 1090dc6111ee4d019c38c57585672b660ac5cc70 Mon Sep 17 00:00:00 2001 From: Adrien Lecharpentier Date: Thu, 3 Nov 2022 12:37:59 +0100 Subject: [PATCH 13/13] Setup automatic release draft generation --- .github/dependabot.yml | 15 ++++++++++----- .github/release-drafter.yml | 1 + .github/workflows/release-drafter.yml | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 .github/release-drafter.yml create mode 100644 .github/workflows/release-drafter.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 88dd156..eae4272 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,7 +1,12 @@ version: 2 updates: -- package-ecosystem: maven - directory: "/" - schedule: - interval: weekly - open-pull-requests-limit: 10 + - package-ecosystem: maven + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..0d0b1c9 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1 @@ +_extends: .github diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 0000000..9a70f59 --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,18 @@ +name: Release Drafter + +on: + push: + branches: + - main + +# Only allow 1 release-drafter build at a time to avoid creating multiple "next" releases +concurrency: "release-drafter" + +jobs: + update_release_draft: + runs-on: ubuntu-22.04 + steps: + - uses: release-drafter/release-drafter@v5.21.1 + env: + # This token is generated automatically by default in GitHub Actions: no need to create it manually + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}