Select Git revision
gitlab_CI.jenkinsfile
NXCALS-6679 Use nxcals-ci labeled nodes to run gitlab_CI
Rafal Mucha authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
gitlab_CI.jenkinsfile 4.55 KiB
pipeline {
agent { label 'nxcals-ci' }
options {
gitlabBuilds(builds: ['Build', 'Test', 'Coverage', 'Sonar', 'Gate', 'Clean'])
timeout(time: 40, unit: 'MINUTES')
}
environment {
GITLAB_MR_USER_NAME = "${env.gitlabMergedByUser}"
spring_profiles_active = "gitlab-ci"
JAVA_HOME="${tool 'jdk1.11'}"
}
stages {
stage ("Build") {
steps {
echo "Environment variables available on start of this build:"
sh 'printenv | sort'
sh '$JAVA_HOME/bin/java --version'
updateGitlabCommitStatus name: 'Build', state: 'running'
sh './gradlew clean build -x test --no-daemon --parallel --stacktrace'
}
post {
success {
updateGitlabCommitStatus name: 'Build', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'Build', state: 'failed'
}
aborted {
updateGitlabCommitStatus name: 'Build', state: 'canceled'
}
}
}
stage ("Test") {
steps {
updateGitlabCommitStatus name: 'Test', state: 'running'
sh './gradlew test -q --no-daemon --parallel'
}
post {
always {
//publish junits to jenkins plan
junit '**/build/test-results/test/*.xml'
}
success {
updateGitlabCommitStatus name: 'Test', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'Test', state: 'failed'
}
aborted {
updateGitlabCommitStatus name: 'Test', state: 'canceled'
}
}
}
stage ("Coverage") {
steps {
updateGitlabCommitStatus name: 'Coverage', state: 'running'
sh './gradlew jacocoTestReport --no-daemon --parallel'
}
post {
success {
updateGitlabCommitStatus name: 'Coverage', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'Coverage', state: 'failed'
}
aborted {
updateGitlabCommitStatus name: 'Coverage', state: 'canceled'
}
}
}
stage ("Sonar") {
steps {
updateGitlabCommitStatus name: 'Sonar', state: 'running'
withSonarQubeEnv('CERN-NXCALS sonar') {
withCredentials([string(credentialsId: 'jwozniak-gitlab-api-token', variable: 'api_token')]){
sh './gradlew sonarqube -Dapi_token=${api_token} --no-daemon --parallel'
}
}
}
post {
success {
updateGitlabCommitStatus name: 'Sonar', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'Sonar', state: 'failed'
}
aborted {
updateGitlabCommitStatus name: 'Sonar', state: 'canceled'
}
}
}
stage ("Gate") {
steps {
updateGitlabCommitStatus name: 'Gate', state: 'running'
timeout(time: 10, unit: 'MINUTES') {
waitForQualityGate abortPipeline: true
}
}
post {
success {
updateGitlabCommitStatus name: 'Gate', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'Gate', state: 'failed'
}
aborted {
updateGitlabCommitStatus name: 'Gate', state: 'canceled'
}
}
}
stage ("Clean") {
steps {
updateGitlabCommitStatus name: 'Clean', state: 'running'
sh './gradlew clean --no-daemon'
}
post {
success {
updateGitlabCommitStatus name: 'Clean', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'Clean', state: 'failed'
}
aborted {
updateGitlabCommitStatus name: 'Clean', state: 'canceled'
}
}
}
}
}