DescribeThis Shared Library hosts a Custom Step which is an example implementation of the Compliance step of a MettleCI Pipeline. It provides parameterised set of steps which…
Checks out the specified Compliance repository
Invokes the MettleCI compliance test command test your repository's DataStage assets against your Compliance rules
Publishes the generated JUnit Compliance results back to your Jenkins Controller.
Here’s the pseudocode for the Shared Library:
Code Block | ||
---|---|---|
| ||
def call( def COMPLIANCE_REPO_CREDENTIALS, def COMPLIANCE_REPO_URL, def RULESDIR, def TESTSUITENAME, def CONTINUEONFAIL ) { try { // Perform a 'git checkout' of a remote repository which is NOT the repository from which this pipeline code was sourced checkout([ $class: 'GitSCM', branches: [[name: 'refs/heads/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'compliance2']], submoduleCfg: [], userRemoteConfigs: [[ credentialsId: "${COMPLIANCE_REPO_CREDENTIALS}", url: "${URL using COMPLIANCE_REPO_URL}" ]]CREDENTIALS ]) /*// Executes the 'mettleci compliance test' command to test your repository's DataStage jobs against your Compliance rules. // Note that 'mettleci compliance test' is mnotnot the same as 'mettleci compliance query' - See the documentation for more details. */ mettleci compliance test $RULESDIR $TESTSUITENAME } bat label: "Compliance Test - ${TESTSUITENAME}",finally { script: """ %AGENTMETTLECMD% compliance test ^ -assets datastage ^// Whether the above is successfult or not... junit testResults -report \"compliance_report_${TESTSUITENAME}.xml\" ^ // Publish CCMT output as JUnit Test Results -junit -test-suite \"${TESTSUITENAME}\" ^ allowEmptyResults: true ${((CONTINUEONFAIL as boolean) == true)? '-ignore-test-failures':''} ^ // Don't fail the build on missing test result files or empty test results -rules compliance2\\${RULESDIR} ^ skipPublishingChecks: true -project-cache \"%AGENTMETTLEHOME%\\cache\\%IISENGINENAME%\\%DATASTAGE_PROJECT%\" """ // Don't automatically publish test results junit testResults: "compliance_report_${TESTSUITENAME}.xml",to Git allowEmptyResults: true, skipMarkingBuildUnstable: (CONTINUEONFAIL as boolean) } catch(e) { junit testResults: "compliance_report_${TESTSUITENAME}.xml", allowEmptyResults: true, skipMarkingBuildUnstable: (CONTINUEONFAIL as boolean) throw e// (Optionally) mark the build as successful,even if there are test failures reported } } |
Note that this Custom Step makes used of Jenkins' JUnit plugin.