feat: split runNodeTest into runNodeInstall + runNodeTest, add lcov to sonar

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-02 16:08:23 +07:00
parent 22c8593d23
commit de2dc4da2d
3 changed files with 18 additions and 3 deletions

View File

@@ -0,0 +1,13 @@
/**
* Runs npm install inside current container.
* Must be called inside container('node') block.
*
* config keys (all optional):
* workDir - directory to run in, default: '.'
*/
def call(Map config = [:]) {
def workDir = config.workDir ?: '.'
dir(workDir) {
sh 'npm install'
}
}

View File

@@ -1,5 +1,5 @@
/** /**
* Runs npm install + npm test inside current container. * Runs npm test inside current container. Expects npm install already done.
* Must be called inside container('node') block. * Must be called inside container('node') block.
* *
* config keys (all optional): * config keys (all optional):
@@ -11,7 +11,6 @@ def call(Map config = [:]) {
def testCmd = config.testCmd ?: 'test' def testCmd = config.testCmd ?: 'test'
dir(workDir) { dir(workDir) {
sh 'npm install'
sh "npm ${testCmd}" sh "npm ${testCmd}"
} }
} }

View File

@@ -8,7 +8,8 @@
* sonarUrl (optional) - SonarQube server URL, default: http://sonarqube-sonarqube.sonarqube.svc.cluster.local:9000 * sonarUrl (optional) - SonarQube server URL, default: http://sonarqube-sonarqube.sonarqube.svc.cluster.local:9000
* credId (optional) - Jenkins secret-text credential id, default: sonarqube-token * credId (optional) - Jenkins secret-text credential id, default: sonarqube-token
* sources (optional) - sources to scan, default: . * sources (optional) - sources to scan, default: .
* exclusions (optional) - comma-separated paths to exclude * exclusions (optional) - comma-separated paths to exclude
* lcovReport (optional) - path to lcov.info for coverage, default: coverage/lcov.info
*/ */
def call(Map config) { def call(Map config) {
def projectKey = config.projectKey def projectKey = config.projectKey
@@ -18,6 +19,7 @@ def call(Map config) {
def credId = config.credId ?: 'sonarqube-token' def credId = config.credId ?: 'sonarqube-token'
def sources = config.sources ?: '.' def sources = config.sources ?: '.'
def exclusions = config.exclusions ?: '' def exclusions = config.exclusions ?: ''
def lcovReport = config.lcovReport ?: 'coverage/lcov.info'
def exclusionsArg = exclusions ? "-Dsonar.exclusions=${exclusions}" : '' def exclusionsArg = exclusions ? "-Dsonar.exclusions=${exclusions}" : ''
@@ -28,6 +30,7 @@ def call(Map config) {
-Dsonar.sources=${sources} \ -Dsonar.sources=${sources} \
-Dsonar.host.url=${sonarUrl} \ -Dsonar.host.url=${sonarUrl} \
-Dsonar.token=\${SONAR_TOKEN} \ -Dsonar.token=\${SONAR_TOKEN} \
-Dsonar.javascript.lcov.reportPaths=${lcovReport} \
${exclusionsArg} ${exclusionsArg}
""" """
} }