From af0ac14acad1e49e8359cec260d6a505e0e6e361 Mon Sep 17 00:00:00 2001 From: Anupong Hompan Date: Tue, 28 Oct 2025 15:42:29 +0700 Subject: [PATCH] JK --- Jenkinsfile | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index d851b8a..2eabb12 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -23,6 +23,7 @@ pipeline { TEST_RESULTS_DIR = 'TestResults' COVERAGE_DIR = 'TestResults/Coverage' COVERAGE_FILE = 'TestResults/Coverage/coverage.opencover.xml' + COVERAGE_HTML_DIR = 'TestResults/Coverage/html' // Path ติดตั้ง dotnet ชั่วคราวใน pipeline DOTNET_ROOT = "${WORKSPACE}/.dotnet" @@ -85,13 +86,18 @@ pipeline { echo '### dotnet --info' dotnet --info - echo '### Install/Update dotnet-sonarscanner' + echo '### Install/Update dotnet tooling' dotnet tool install --global dotnet-sonarscanner || dotnet tool update --global dotnet-sonarscanner + dotnet tool install --global dotnet-reportgenerator-globaltool || dotnet tool update --global dotnet-reportgenerator-globaltool ''' script { if (!env.PATH.contains('/root/.dotnet/tools')) { env.PATH = "${env.PATH}:/root/.dotnet/tools" } + if (env.WORKSPACE && !env.PATH.contains("${env.WORKSPACE}/.dotnet")) { + env.PATH = "${env.WORKSPACE}/.dotnet:${env.PATH}" + env.DOTNET_ROOT = "${env.WORKSPACE}/.dotnet" + } } } } @@ -120,6 +126,7 @@ pipeline { sh '''#!/bin/bash -e rm -rf "${TEST_RESULTS_DIR}" mkdir -p "${COVERAGE_DIR}" + mkdir -p "${COVERAGE_HTML_DIR}" dotnet test AS400API.sln --configuration "${BUILD_CONFIGURATION}" --no-build \ /p:CollectCoverage=true \ /p:CoverletOutputFormat=opencover \ @@ -127,9 +134,20 @@ pipeline { --results-directory "${TEST_RESULTS_DIR}" \ --logger "trx;LogFileName=test-results.trx" \ --logger "junit;LogFileName=test-results.xml" + + reportgenerator \ + -reports:"${COVERAGE_FILE}" \ + -targetdir:"${COVERAGE_HTML_DIR}" \ + -reporttypes:"HtmlInline_AzurePipelines;Cobertura" ''' junit testResults: "${TEST_RESULTS_DIR}/**/*.xml", allowEmptyResults: false - publishCoverage adapters: [opencoverAdapter("${COVERAGE_FILE}")], sourceFileResolver: sourceFiles('STORE_LAST_BUILD'), failNoReports: true + publishHTML(target: [ + allowMissing : false, + keepAll : true, + reportDir : "${COVERAGE_HTML_DIR}", + reportFiles : 'index.html', + reportName : 'Code Coverage' + ]) } } @@ -197,6 +215,7 @@ pipeline { archiveArtifacts artifacts: "${PUBLISH_DIR}/**", fingerprint: true archiveArtifacts artifacts: "${TEST_RESULTS_DIR}/**/*.trx", allowEmptyArchive: true archiveArtifacts artifacts: "${COVERAGE_FILE}", allowEmptyArchive: true + archiveArtifacts artifacts: "${COVERAGE_HTML_DIR}/**", allowEmptyArchive: true } } }