}
stage('Verify') {
Verify().call()
+ if (currentBuild.result == 'FAILURE') {
+ Error('Failed at verification stage').call()
+ }
}
stage('Docker login') {
- withCredentials([usernamePassword(credentialsId: 'nordix-cicd-harbor-credentials', passwordVariable: 'HARBOR_PASSWORD', usernameVariable: 'HARBOR_USERNAME')]) {
- sh '''#!/bin/bash -eu
+ if (env.DRY_RUN != 'true') {
+ withCredentials([usernamePassword(credentialsId: 'nordix-cicd-harbor-credentials', passwordVariable: 'HARBOR_PASSWORD', usernameVariable: 'HARBOR_USERNAME')]) {
+ sh '''#!/bin/bash -eu
echo $HARBOR_PASSWORD | docker login --username $HARBOR_USERNAME --password-stdin $IMAGE_REGISTRY
'''
+ }
+ } else {
+ Utils.markStageSkippedForConditional('Docker login')
}
}
stage('Base Image') {
}
stage('Images') {
Images(image_names, version, build_steps, image_registry, local_version).call()
+ if (currentBuild.result == 'FAILURE') {
+ Error('Failed to build image(s)').call()
+ }
}
stage('E2E') {
- E2e(e2e_enabled).call()
+ if (e2e_enabled == 'true' && env.DRY_RUN != 'true') {
+ E2e(e2e_enabled).call()
+ } else {
+ Utils.markStageSkippedForConditional('E2E')
+ }
}
}
stage('Cleanup') {
SetBuildStatus(completed, context, success)
} catch (Exception e) {
SetBuildStatus(failed, context, failure)
- Error(exception_message_exec + command).call()
+ unstable "${exception_message_exec} ${command}"
+ currentBuild.result = 'FAILURE'
}
}
}
SetBuildStatus(completed, context, success)
} catch (Exception e) {
SetBuildStatus(failed, context, failure)
- Error(exception_message_exec + command).call()
+ unstable "${exception_message_exec} ${command}"
+ currentBuild.result = 'FAILURE'
}
}
}
stage('Proto') {
// TODO: protoc version could be different
Utils.markStageSkippedForConditional('Proto')
- // try {
- // sh 'make proto'
- // if (GetModifiedFiles() != '') {
- // throw new Exception(exception_message)
- // }
- // } catch (Exception e) {
- // SetBuildStatus(failed, context, failure)
- // sh 'git diff'
- // sh 'git status -s'
- // Error(e).call()
- // }
}
SetBuildStatus(completed, context, success)
}
SetBuildStatus(completed_message, context, success)
} catch (Exception e) {
SetBuildStatus(failed_message, context, failure)
- Error(exception_message_exec + command).call()
+ unstable "${exception_message_exec} ${command}"
+ currentBuild.result = 'FAILURE'
}
}
}
// Run the E2e Tests
// Currently skipped
def E2e(e2e_enabled) {
- if (e2e_enabled == 'true') {
- return {
- echo 'make e2e' // todo
- }
- } else {
- return {
- Utils.markStageSkippedForConditional('E2E')
- }
+ return {
+ echo 'make e2e' // todo
}
}
// Execute command
def ExecSh(command) {
return {
- sh """
- . \${HOME}/.profile
- ${command}
- """
+ if (env.DRY_RUN != 'true') {
+ sh """
+ . \${HOME}/.profile
+ ${command}
+ """
+ } else {
+ echo "${command}"
+ }
}
}
// Set the commit status on Github
// https://plugins.jenkins.io/github/#plugin-content-pipeline-examples
def SetBuildStatus(String message, String context, String state) {
- step([
- $class: 'GitHubCommitStatusSetter',
- reposSource: [$class: 'ManuallyEnteredRepositorySource', url: 'https://github.com/Nordix/Meridio'],
- commitShaSource: [$class: 'ManuallyEnteredShaSource', sha: GetCommitSha()],
- contextSource: [$class: 'ManuallyEnteredCommitContextSource', context: context],
- errorHandlers: [[$class: 'ShallowAnyErrorHandler']], // Prevent GitHubCommitStatusSetter to set the job status to unstable
- statusResultSource: [ $class: 'ConditionalStatusResultSource', results: [[$class: 'AnyBuildResult', message: message, state: state]] ]
- ])
+ if (env.DRY_RUN != 'true') {
+ step([
+ $class: 'GitHubCommitStatusSetter',
+ reposSource: [$class: 'ManuallyEnteredRepositorySource', url: 'https://github.com/Nordix/Meridio'],
+ commitShaSource: [$class: 'ManuallyEnteredShaSource', sha: GetCommitSha()],
+ contextSource: [$class: 'ManuallyEnteredCommitContextSource', context: context],
+ errorHandlers: [[$class: 'ShallowAnyErrorHandler']], // Prevent GitHubCommitStatusSetter to set the job status to unstable
+ statusResultSource: [ $class: 'ConditionalStatusResultSource', results: [[$class: 'AnyBuildResult', message: message, state: state]] ]
+ ])
+ }
}
// Return the current commit sha