112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Groovy
		
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Groovy
		
	
	
| pipeline {
 | |
|     agent { label 'jenkins-slave' }
 | |
|     environment {
 | |
|         DOCKER_REPO = "opengnsys"
 | |
|         DOCKER_CREDENTIALS = credentials('docker-hub-credentials') 
 | |
|         DOCKER_IMAGE_NAME = "oggui"
 | |
|     }
 | |
|     stages {
 | |
|         stage ('Checkout') {
 | |
|             steps {
 | |
|                 checkout scm
 | |
|             }
 | |
|         }   
 | |
|         stage('Build Testing Image') {
 | |
|             steps {
 | |
|                 sh "printenv"
 | |
|                 echo 'Building....'
 | |
|                 script {
 | |
|                     def DOCKER_TAG = "${env.BUILD_NUMBER}"
 | |
|                     
 | |
|                     dir('ogWebconsole') {
 | |
|                         IMAGE_ID = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:${BRANCH_NAME}-${DOCKER_TAG}"
 | |
|                         IMAGE_ID_TESTING = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:${BRANCH_NAME}-${DOCKER_TAG}-testing"
 | |
|                         if (BRANCH_NAME == 'main') {
 | |
|                             LATEST_ID = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:latest"
 | |
|                         }  else {
 | |
|                             LATEST_ID = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:${BRANCH_NAME}-latest"
 | |
|                         }
 | |
| 
 | |
|                         env.IMAGE_ID_TESTING = IMAGE_ID_TESTING
 | |
|                         env.IMAGE_ID = IMAGE_ID 
 | |
|                         env.LATEST_ID = LATEST_ID
 | |
|                         docker.build("${IMAGE_ID_TESTING}", "-f Dockerfile-testing .")
 | |
|                         if (env.TAG_NAME) {
 | |
|                             TAG_ID = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:${env.TAG_NAME}"
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('Testing') {
 | |
|             steps {
 | |
|                 echo 'Running Tests....'
 | |
|                 sh '''
 | |
|                     cd ogWebconsole
 | |
|                     docker run -p 4200:4200 --name oggui-testing -e CHROME_BIN=/usr/bin/chromium -v $(pwd)/karma.conf.js:/app/karma.conf.js -v $(pwd)/.env:/app/.env -d $IMAGE_ID_TESTING
 | |
|                     docker exec oggui-testing ng test --watch=false --source-map=false --karma-config=karma.conf.js
 | |
|                 '''
 | |
|             }
 | |
|         }
 | |
|         stage('Build') {
 | |
|             steps {
 | |
|                 echo 'Building....'
 | |
|                 script {
 | |
|                     dir('ogWebconsole') {
 | |
|                         docker.build("${IMAGE_ID}", "-f Dockerfile .")
 | |
|                         docker.build("${LATEST_ID}", "-f Dockerfile .")
 | |
|                         if (env.TAG_NAME) {
 | |
|                             docker.build("${TAG_ID}", "-f Dockerfile .")
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('Push') {
 | |
|             steps {
 | |
|                 echo 'Pushing....'
 | |
|                 script {
 | |
|                     docker.withRegistry('https://index.docker.io/v1/', 'docker-hub-credentials') {
 | |
|                         docker.image("${IMAGE_ID}").push()
 | |
|                         docker.image("${LATEST_ID}").push()
 | |
|                         if (env.TAG_NAME) {
 | |
|                             docker.image("${TAG_ID}").push()
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     post {
 | |
|         always {
 | |
|             echo 'Get test results....'
 | |
|             sh "mkdir -p test-results"
 | |
|             sh "docker cp oggui-testing:/app/test-results/ogGui-junit-report.xml ./test-results/ogGui-junit-report.xml"
 | |
|             junit '**/test-results/*.xml'
 | |
|             echo 'Cleaning up....'
 | |
|             sh "docker stop oggui-testing"
 | |
|             sh "docker rm oggui-testing"
 | |
|             sh "docker rmi ${IMAGE_ID} || true"
 | |
|             sh "docker rmi ${LATEST_ID} || true"
 | |
|             sh "docker rmi ${IMAGE_ID_TESTING} || true"
 | |
|             script {
 | |
|                 def committerEmail = sh (
 | |
|                     script: "git show -s --pretty=%ae",
 | |
|                     returnStdout: true
 | |
|                 ).trim()
 | |
|                 def buildResult = currentBuild.currentResult
 | |
|                 mail to: committerEmail, 
 | |
|                 subject: "Opengnsys CI Build ${env.JOB_NAME} - ${env.BRANCH_NAME} - ${buildResult}", 
 | |
|                 body: """
 | |
|                 <h1>Opengnsys CI Build ${JOB_NAME} - ${BRANCH_NAME} - ${buildResult}</h1>
 | |
|                 <p>Build Number: ${BUILD_NUMBER}</p>
 | |
|                 <p>Build URL: ${BUILD_URL}</p>º
 | |
| 
 | |
|                 Saludos cordiales,
 | |
|                 Opengnsys CI
 | |
|                 """
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |