ogcore/Jenkinsfile

92 lines
3.2 KiB
Groovy

pipeline {
agent {
label 'jenkins-slave'
}
environment {
DOCKER_REPO = "opengnsys"
DOCKER_CREDENTIALS = credentials('docker-hub-credentials')
DOCKER_TAG = "${env.BUILD_NUMBER}"
DOCKER_IMAGE_NAME = "ogcore"
BRANCH_NAME = "${env.BRANCH_NAME}"
DOCKER_IDENTITY = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}-php:${BRANCH_NAME}-${DOCKER_TAG}"
DOCKER_IDENTITY_NGINX = "${DOCKER_REPO}/${DOCKER_IMAGE_NAME}-nginx:${BRANCH_NAME}-${DOCKER_TAG}"
DOCKER_COMPOSE_TEMPLATE = 'docker-compose-ci-template.yaml'
DOCKER_COMPOSE_FILE = 'docker-compose-ci-tmp.yaml'
}
stages {
stage ("Checkout") {
steps {
checkout scm
}
}
stage('Build Environment') {
steps {
script {
docker.build("${DOCKER_IDENTITY}", '-f docker/Dockerfile-jenkins-php .')
docker.build("${DOCKER_IDENTITY_NGINX}", '-f docker/Dockerfile-nginx .')
}
}
}
stage(('Prepare Docker Composer')) {
steps {
sh """
sed 's|ogcore-php:static|${DOCKER_IDENTITY}|g; s|ogcore-nginx:static|${DOCKER_IDENTITY_NGINX}|g' ${DOCKER_COMPOSE_TEMPLATE} > ${DOCKER_COMPOSE_FILE}
cat ${DOCKER_COMPOSE_FILE}
"""
}
}
stage('Run containers') {
steps {
sh "docker compose -f ${DOCKER_COMPOSE_FILE} up -d"
}
}
stage('Install dependencies') {
steps {
// Install dependencies
sh """
rm -rf ./report
docker compose exec php composer install
docker compose exec php php bin/console lexik:jwt:generate-keypair --overwrite
docker compose exec php php bin/console doctrine:migrations:migrate --no-interaction
docker compose exec php php bin/console doctrine:fixtures:load --no-interaction
"""
}
}
stage('Tests') {
steps {
// Run tests
sh """
docker compose exec php bin/phpunit --log-junit /report/phpunit.xml
"""
}
}
stage ("Publish Image") {
steps {
script {
docker.withRegistry('https://index.docker.io/v1/', "${DOCKER_CREDENTIALS}") {
docker.image("${DOCKER_IDENTITY}").push()
docker.image("${DOCKER_IDENTITY_NGINX}").push()
}
}
}
}
}
post {
always {
// Publish JUnit test results
xunit (
thresholds: [ skipped(failureThreshold: '0') , failed(failureThreshold: '0') ],
tools: [ PHPUnit(pattern: 'phpunit.xml') ]
)
// Remove containers
sh "docker compose -f ${DOCKER_COMPOSE_FILE} down"
sh "docker compose -f ${DOCKER_COMPOSE_FILE} rm -f"
sh "docker rmi ${DOCKER_IDENTITY}"
sh "docker rmi ${DOCKER_IDENTITY_NGINX}"
}
}
}