Skip to content

Commit

Permalink
Use Docker for Node.js SonarCloud scanning (#297)
Browse files Browse the repository at this point in the history
  • Loading branch information
johnwatson484 authored Apr 4, 2024
1 parent 621386e commit 35b2793
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 51 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v-9.41.18
v-9.42.0
50 changes: 13 additions & 37 deletions src/uk/gov/defra/ffc/Tests.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -111,14 +111,14 @@ class Tests implements Serializable {

static void analyseNodeJsCode(ctx, sonarQubeEnv, sonarScanner, params) {
ctx.gitStatusWrapper(credentialsId: 'github-token', sha: Utils.getCommitSha(ctx), repo: Utils.getRepoName(ctx), gitHubContext: GitHubStatus.CodeAnalysis.Context, description: GitHubStatus.CodeAnalysis.Description) {
def scannerHome = ctx.tool sonarScanner
ctx.withSonarQubeEnv(sonarQubeEnv) {
ctx.withCredentials([
ctx.string(credentialsId: 'sonarcloud-token', variable: 'token'),
]) {
def args = ''
params.each { param ->
args = args + " -D$param.key=$param.value"
args = args + " -e $param.key=$param.value"
}

ctx.sh("$scannerHome/bin/sonar-scanner$args")
ctx.sh("docker run -v \$(pwd)/:/home/node/project -e SONAR_TOKEN=$ctx.token $args defradigital/ffc-node-sonar:1.0.2-node20")
}
}
}
Expand Down Expand Up @@ -146,50 +146,26 @@ class Tests implements Serializable {
}
}

static def buildCodeAnalysisNodeJsParams(projectName, branch, defaultBranch, pr) {
def params = [
'sonar.organization': 'defra',
'sonar.projectKey': projectName,
'sonar.sources': '.'
];

if (pr != '') {
params = params + buildCodeAnalysisNodeJsPRParams(projectName, branch, defaultBranch, pr)
}

return params
}

static def buildCodeAnalysisNodeJsPRParams(projectName, branch, defaultBranch, pr) {
return [
'sonar.pullrequest.base': defaultBranch,
'sonar.pullrequest.branch': branch,
'sonar.pullrequest.key': pr,
'sonar.pullrequest.provider': 'GitHub',
'sonar.pullrequest.github.repository': "defra/${projectName}"
];
}

static def buildCodeAnalysisDotNetParams(projectName, branch, defaultBranch, pr) {
static def buildCodeAnalysisParams(projectName, branch, defaultBranch, pr) {
def params = [
'SONAR_ORGANIZATION': 'defra',
'SONAR_PROJECT_KEY': projectName
];

if (pr != '') {
params = params + buildCodeAnalysisDotNetPRParams(projectName, branch, defaultBranch, pr)
params = params + buildCodeAnalysisPRParams(projectName, branch, defaultBranch, pr)
}

return params
}

static def buildCodeAnalysisDotNetPRParams(projectName, branch, defaultBranch, pr) {
static def buildCodeAnalysisPRParams(projectName, branch, defaultBranch, pr) {
return [
'SONAR_PR_BASE': defaultBranch,
'SONAR_PR_BRANCH': branch,
'SONAR_PR_KEY': pr,
'SONAR_PR_PROVIDER': 'GitHub',
'SONAR_PR_REPOSITORY': "defra/${projectName}"
'SONAR_PR_BASE': defaultBranch,
'SONAR_PR_BRANCH': branch,
'SONAR_PR_KEY': pr,
'SONAR_PR_PROVIDER': 'GitHub',
'SONAR_PR_REPOSITORY': "defra/${projectName}"
];
}

Expand Down
5 changes: 0 additions & 5 deletions vars/buildNodeJs.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ void call(Map config=[:]) {
String containerSrcFolder = '\\/home\\/node'
String nodeDevelopmentImage = 'defradigital/node-development'
String localSrcFolder = '.'
String lcovFile = './test-output/lcov.info'
String repoName = ''
String pr = ''
String tag = ''
Expand Down Expand Up @@ -95,10 +94,6 @@ void call(Map config=[:]) {
test.createJUnitReport()
}

stage('Fix lcov report') {
utils.replaceInFile(containerSrcFolder, localSrcFolder, lcovFile)
}

if (pr == '') {
stage('Publish pact broker') {
pact.publishContractsToPactBroker(repoName, version.getPackageJsonVersion(), utils.getCommitSha())
Expand Down
12 changes: 4 additions & 8 deletions vars/test.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,15 @@ void changeOwnershipOfWorkspace(String containerImage, String containerWorkDir)
}

void analyseNodeJsCode(String sonarQubeEnv, String sonarScanner, String repoName, String branch, String defaultBranch, String pr) {
Tests.analyseNodeJsCode(this, sonarQubeEnv, sonarScanner, buildCodeAnalysisNodeJsParams(repoName, branch, defaultBranch, pr))
Tests.analyseNodeJsCode(this, sonarQubeEnv, sonarScanner, buildCodeAnalysisParams(repoName, branch, defaultBranch, pr))
}

void analyseDotNetCode(String repoName, String projectName, String branch, String defaultBranch, String pr) {
Tests.analyseDotNetCode(this, projectName, buildCodeAnalysisDotNetParams(repoName, branch, defaultBranch, pr))
Tests.analyseDotNetCode(this, projectName, buildCodeAnalysisParams(repoName, branch, defaultBranch, pr))
}

def buildCodeAnalysisNodeJsParams(String projectName, String branch, String defaultBranch, String pr) {
return Tests.buildCodeAnalysisNodeJsParams(projectName, branch, defaultBranch, pr)
}

def buildCodeAnalysisDotNetParams(String projectName, String branch, String defaultBranch, String pr) {
return Tests.buildCodeAnalysisDotNetParams(projectName, branch, defaultBranch, pr)
def buildCodeAnalysisParams(String projectName, String branch, String defaultBranch, String pr) {
return Tests.buildCodeAnalysisParams(projectName, branch, defaultBranch, pr)
}

void runAcceptanceTests(String pr, String environment, String repoName) {
Expand Down

0 comments on commit 35b2793

Please sign in to comment.