Skip to content
Jenkinsfile 2.79 KiB
Newer Older
Luca Verardo's avatar
Luca Verardo committed
pipeline {
Luca Verardo's avatar
Luca Verardo committed
    agent {
        docker {
            image 'docker:dind'
Luca Verardo's avatar
Luca Verardo committed
            args '-v /var/run/docker.sock:/var/run/docker.sock'
Luca Verardo's avatar
Luca Verardo committed
        }
    }
Luca Verardo's avatar
Luca Verardo committed
    stages {
        stage('Build') { 
            steps {
Luca Verardo's avatar
Luca Verardo committed
                script {
Luca Verardo's avatar
Luca Verardo committed
                    docker.image('maven:3-alpine').inside { c ->
Luca Verardo's avatar
Luca Verardo committed
                        checkout scm
Luca Verardo's avatar
Luca Verardo committed
                        sh 'mv src/main/resources/application.properties.production src/main/resources/application.properties'
Luca Verardo's avatar
Luca Verardo committed
                        sh 'mvn -B -DskipTests clean package' 
                    }
                }

                
Luca Verardo's avatar
Luca Verardo committed
            }
Zegorax's avatar
Zegorax committed
        }
Luca Verardo's avatar
Luca Verardo committed
        stage('Test') {
            steps{
                script {
Luca Verardo's avatar
Luca Verardo committed
                    docker.image('mysql').withRun('-e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mentorarc -e MYSQL_USER=mentorarc -e MYSQL_PASSWORD=mentorarc') { c ->
Luca Verardo's avatar
Luca Verardo committed
                        docker.image('mysql').inside("--link ${c.id}:db") {
Luca Verardo's avatar
Luca Verardo committed
                            /* Wait until mysql service is up */
                            sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done'
Luca Verardo's avatar
Luca Verardo committed
                        }
Luca Verardo's avatar
Luca Verardo committed

Luca Verardo's avatar
Luca Verardo committed
                        docker.image('maven:3-alpine').inside("--link ${c.id}:db") {
                            checkout scm
                            sh 'mv src/main/resources/application.properties.production src/main/resources/application.properties'
Luca Verardo's avatar
Luca Verardo committed
                            sh 'mvn test'
                        }
                        
Luca Verardo's avatar
Luca Verardo committed
                    }
Luca Verardo's avatar
Luca Verardo committed
                }
Luca Verardo's avatar
Luca Verardo committed
            }
            
            post {
                always {
                    junit 'target/surefire-reports/*.xml'
Luca Verardo's avatar
Luca Verardo committed
                }
            }
        }
        stage('Quality'){
            steps{
Luca Verardo's avatar
Luca Verardo committed
                script{
                    withCredentials([usernamePassword(credentialsId: 'SonarCloud_Zegorax_Token', passwordVariable: 'SONARCLOUD_API_TOKEN', usernameVariable: 'SONARCLOUD_API_USER')]) {
                        docker.image('mysql').withRun('-e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mentorarc -e MYSQL_USER=mentorarc -e MYSQL_PASSWORD=mentorarc') { c ->
                            docker.image('mysql').inside("--link ${c.id}:db") {
                                /* Wait until mysql service is up */
                                sh 'while ! mysqladmin ping -hdb --silent; do sleep 1; done'
                            }
Luca Verardo's avatar
Luca Verardo committed
                            docker.image('maven:3-alpine').inside("--link ${c.id}:db") {
                                    checkout scm
                                    sh 'mv src/main/resources/application.properties.production src/main/resources/application.properties'
                                    sh 'mvn verify sonar:sonar'
                            }
                            
Luca Verardo's avatar
Luca Verardo committed
                        }
Zegorax's avatar
Zegorax committed
    }
Luca Verardo's avatar
Luca Verardo committed
}