oggui/ogWebconsole/Jenkinsfile

72 lines
2.6 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') {
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"
}
}
}