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') { steps { echo 'Building....' script { def DOCKER_TAG = "${env.BUILD_NUMBER}" def BRANCH_NAME = "${env.GIT_BRANCH.split('/')[1]}" dir('ogWebconsole') { IMAGE_ID = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:${BRANCH_NAME}-${DOCKER_TAG}" if (BRANCH_NAME == 'main') { LATEST_ID = 'latest' } else { LATEST_ID = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}:${BRANCH_NAME}-latest" } docker.build("${IMAGE_ID}", "-f Dockerfile .") docker.build("${LATEST_ID}", "-f Dockerfile .") } } } } stage('Testing') { steps { echo 'Running Tests....' sh ''' mkdir -p test-results 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} docker exec oggui-testing ng test --watch=false --browsers=ChromeHeadless docker cp oggui-testing:/app/test-results/ogGui-junit-report.xml ./test-results/ogGui-junit-report.xml docker stop oggui-testing docker rm oggui-testing ''' } } 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() } } } } } post { always { echo 'Get test results....' xunit ( thresholds: [ skipped(failureThreshold: '0'), failed(failureThreshold: '0') ], tools: [ JUnit(pattern: './test-results/ogGui-junit-report.xml') ] ) echo 'Cleaning up....' sh "docker rmi ${IMAGE_ID} || true" sh "docker rmi ${LATEST_ID} || true" } } }