Skip to content

Instantly share code, notes, and snippets.

@Jaff
Created May 8, 2023 21:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Jaff/d577601c68fd59b2101b13dd9fb2c4bd to your computer and use it in GitHub Desktop.
Save Jaff/d577601c68fd59b2101b13dd9fb2c4bd to your computer and use it in GitHub Desktop.
Groovy pipeline fragment illustrating file-write issues with JSON blob
Groovy code:
def jsonObject = JsonOutput.toJson(myMeasures)
if (args.verbose) {
println 'JSON output is ' + jsonObject
}
def fileResult = sh (label: 'output', returnStatus: true, script:"echo ${jsonObject} > 'output.json'")
if (args.verbose) {
println 'Shell response from writing file ' + fileResult
}
}
Jenkins output:
jsonObject is {"job_name":"foo-config-importer/PR-34","key":"foo-config-importer","name":"Foo Config Importer","measures":{"alert_status":"ERROR","bugs":"18","code_smells":"343","coverage":"64.3","duplicated_blocks":"6","duplicated_lines_density":"1.7","line_coverage":"63.5","lines":"6255","lines_to_cover":"2205","ncloc":"4749","new_bugs":"18","new_code_smells":"343","new_coverage":"64.3","new_duplicated_lines_density":"1.0742","new_line_coverage":"63.5","new_lines":"10054","new_lines_to_cover":"2205","new_maintainability_rating":"1.0","new_reliability_rating":"5.0","new_security_hotspots":"20","new_security_hotspots_to_review_status":"20","new_security_rating":"4.0","new_security_review_rating":"5.0","new_technical_debt":"2221","new_vulnerabilities":"26","reliability_rating":"5.0","security_hotspots":"20","security_hotspots_to_review_status":"20","security_rating":"4.0","security_review_rating":"5.0","sqale_index":"2221","sqale_rating":"1.0","tests":"81","vulnerabilities":"26"},"pullRequest":"34"}
Passing jsonObject back to Jenkinsfile, then using:
writeJSON file: 'project_measures.json', json: jsonObject
Yields file containing:
{"job_name":"foo-config-importer/PR-34","key":"foo-config-importer","name":"Foo Config Importer","measures":{"alert_status":"ERROR","bugs":"18","code_smells":"343","coverage":"64.3","duplicated_blocks":"6","duplicated_lines_density":"1.7","line_coverage":"63.5","lines":"6255","lines_to_cover":"2205","ncloc":"4749","new_bugs":"18","new_code_smells":"343","new_coverage":"64.3","new_duplicated_lines_density":"1.0742","new_line_coverage":"63.5","new_lines":"10054","new_lines_to_cover":"2205","new_maintainability_rating":"1.0","new_reliability_rating":"5.0","new_security_hotspots":"20","new_security_hotspots_to_review_status":"20","new_security_rating":"4.0","new_security_review_rating":"5.0","new_technical_debt":"2221","new_vulnerabilities":"26","reliability_rating":"5.0","security_hotspots":"20","security_hotspots_to_review_status":"20","security_rating":"4.0","security_review_rating":"5.0","sqale_index":"2221","sqale_rating":"1.0","tests":"81","vulnerabilities":"26"},"pullRequest":"34"}
Contents of output.json from:
def fileResult = sh (label: 'output', returnStatus: true, script:"echo ${jsonObject} > 'output.json'")
Yields file containing:
job_name:Foo-config-importer/PR-34 key:Foo-config-importer name:UDF Tivo Config Importer measures:alert_status:ERROR measures:bugs:18 measures:code_smells:343 measures:coverage:64.3 measures:duplicated_blocks:6 measures:duplicated_lines_density:1.7 measures:line_coverage:63.5 measures:lines:6255 measures:lines_to_cover:2205 measures:ncloc:4749 measures:new_bugs:18 measures:new_code_smells:343 measures:new_coverage:64.3 measures:new_duplicated_lines_density:1.0742 measures:new_line_coverage:63.5 measures:new_lines:10054 measures:new_lines_to_cover:2205 measures:new_maintainability_rating:1.0 measures:new_reliability_rating:5.0 measures:new_security_hotspots:20 measures:new_security_hotspots_to_review_status:20 measures:new_security_rating:4.0 measures:new_security_review_rating:5.0 measures:new_technical_debt:2221 measures:new_vulnerabilities:26 measures:reliability_rating:5.0 measures:security_hotspots:20 measures:security_hotspots_to_review_status:20 measures:security_rating:4.0 measures:security_review_rating:5.0 measures:sqale_index:2221 measures:sqale_rating:1.0 measures:tests:81 measures:vulnerabilities:26 pullRequest:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment