From 0f83b57066e165c100a1f1a31b388f2450b3ec03 Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Thu, 20 Feb 2025 06:40:07 +0000 Subject: [PATCH] add withChecks into pipeline --- Jenkinsfile | 61 ++++++++++++++++++++++++++++++++++---------- app/build.gradle.kts | 45 ++++++++++++++++---------------- 2 files changed, 69 insertions(+), 37 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0b60f73..c419f7c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -2,25 +2,58 @@ pipeline { agent any stages { - stage('app') { + stage('Build') { steps { withChecks(name: 'build', includeStage: false) { - sh './gradlew clean testClasses' + withGradle { + sh """ + ./gradlew clean testClasses --no-daemon + """ + } } + } + } // Build + + stage('Test') { + steps { withChecks(name: 'test-coverage', includeStage: false) { - sh './gradlew test jacocoTestReport jacocoTestCoverageVerification' - junit '**/build/test-results/test/TEST-*.xml' - recordCoverage(tools: [[parser: 'JACOCO']], - id: 'jacoco', name: 'jacoco-coverage', - sourceCodeRetention: 'EVERY_BUILD' -// , qualityGates: [ -// [threshold: 40.0, metric: 'LINE', baseline: 'PROJECT', unstable: true], -// [threshold: 40.0, metric: 'BRANCH', baseline: 'PROJECT', unstable: true]] + withGradle { + sh """ + ./gradlew test jacocoTestReport jacocoTestCoverageVerification --no-daemon + """ + } + recordCoverage(tools: [[parser: 'JACOCO', pattern: '**/build/reports/jacoco/test/jacoco*.xml']], + id: 'jacoco', + name: 'Jacoco Coverage', + sourceCodeRetention: 'EVERY_BUILD', + qualityGates: [ + [threshold: 40.0, metric: 'CLASS', baseline: 'PROJECT', unstable: true], + [threshold: 40.0, metric: 'METHOD', baseline: 'PROJECT', unstable: true], + [threshold: 40.0, metric: 'LINE', baseline: 'PROJECT', unstable: true], + [threshold: 40.0, metric: 'BRANCH', baseline: 'PROJECT', unstable: true]] + ) } } - } + } // Test + + stage('Post') { + steps { + script { + junit '**/build/test-results/test/TEST-*.xml' + // archiveArtifacts artifacts: '**/coverage-sources.zip', allowEmptyArchive: false, fingerprint: false, onlyIfSuccessful: false + publishHTML (target: [ + allowMissing: true, + alwaysLinkToLastBuild: false, + keepAll: true, + reportDir: 'app/build/reports/jacoco/test/html', + reportFiles: 'index.html', + reportName: 'Coverage Report' + ]) + // def pmd = scanForIssues tool: [$class: 'Pmd'], pattern: 'lib/build/reports/pmd/*.xml' + // publishIssues issues: [pmd] + } + } + } // Post } -} - - +} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 86a9052..8df3e47 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -40,33 +40,32 @@ jacoco { tasks.jacocoTestReport { reports { xml.required.set(true) - xml.outputLocation.set(file("build/reports/jacoco/test/jacoco.xml")) csv.required.set(false) - html.required.set(false) + html.required.set(true) } } -tasks.jacocoTestCoverageVerification { - violationRules { - rule { - limit { - minimum = "0.2".toBigDecimal() - } - } - - rule { - isEnabled = false - element = "CLASS" - includes = listOf("jenkins.test.*") - - limit { - counter = "LINE" - value = "TOTALCOUNT" - minimum = "0.3".toBigDecimal() - } - } - } -} +//tasks.jacocoTestCoverageVerification { +// violationRules { +// rule { +// limit { +// minimum = "0.2".toBigDecimal() +// } +// } +// +// rule { +// isEnabled = false +// element = "CLASS" +// includes = listOf("jenkins.test.*") +// +// limit { +// counter = "LINE" +// value = "TOTALCOUNT" +// minimum = "0.3".toBigDecimal() +// } +// } +// } +//} application { // Define the main class for the application.