Initial commit
Add infrastructure jobs for sandbox
Related-PROD: RE-336
Change-Id: I2140d47e3fc360ab05f92175b29b31e69b2ec10b
diff --git a/common/pipelines/codenarc.groovy b/common/pipelines/codenarc.groovy
new file mode 100644
index 0000000..c4ae040
--- /dev/null
+++ b/common/pipelines/codenarc.groovy
@@ -0,0 +1,94 @@
+#!groovy
+
+def main() {
+ String gitUrl = "${env.GERRIT_SCHEME}://${env.GERRIT_HOST}:${env.GERRIT_PORT}/${env.GERRIT_PROJECT}"
+ String gitRef = env.GERRIT_REFSPEC
+
+ stage('SCM checkout') {
+ echo "Checking out git repository from ${gitUrl} @ ${gitRef}"
+
+ checkout \
+ $class: 'GitSCM',
+ branches: [[
+ name: 'FETCH_HEAD'
+ ]],
+ userRemoteConfigs: [[
+ url: gitUrl,
+ refspec: gitRef,
+ credentialsId: env.GIT_CREDENTIALS_ID
+ ]],
+ extensions: [[
+ $class: 'WipeWorkspace'
+ ]]
+ }
+
+ stage('Codenarc') {
+ String corenarcRulesFile = 'codenarcRules.groovy'
+ if (!fileExists(corenarcRulesFile)) {
+ writeFile \
+ file: corenarcRulesFile,
+ text: env.DEFAULT_RULES
+ }
+ sh '''#!/bin/bash -ex
+ codenarc \
+ -maxPriority1Violations=0 \
+ -maxPriority2Violations=0 \
+ -maxPriority3Violations=0 \
+ -excludes='**/codenarcRules.groovy' \
+ -rulesetfiles=file:codenarcRules.groovy \
+ -report=console \
+ -report=html:report.html \
+ | tee report.log
+ if [ "${PIPESTATUS[0]}" != '0' ]; then
+ exit 1
+ fi
+ if grep -q 'Compilation failed' report.log ; then
+ exit 1
+ fi
+ if grep -q 'Error processing' report.log ; then
+ exit 1
+ fi
+ '''
+ }
+
+ stage('Report') {
+ archiveArtifacts \
+ artifacts: 'report.html',
+ allowEmptyArchive: true
+ }
+}
+
+String podTpl = """
+ apiVersion: "v1"
+ kind: "Pod"
+ spec:
+ securityContext:
+ runAsUser: 1000
+ containers:
+ - name: "codenarc"
+ image: "${env.DOCKER_IMAGE}"
+ command:
+ - "cat"
+ securityContext:
+ privileged: false
+ tty: true
+"""
+if (env.K8S_CLUSTER == 'unset') {
+ node(env.NODE_LABEL) {
+ docker.image(env.DOCKER_IMAGE).inside('--entrypoint=""') {
+ main()
+ }
+ }
+} else {
+ podTemplate(
+ cloud: env.K8S_CLUSTER,
+ yaml: podTpl,
+ showRawYaml: false
+ ) {
+ node(POD_LABEL) {
+ container('codenarc') {
+ main()
+ }
+ }
+ }
+}