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-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} """ } } stage('Run containers') { steps { sh "docker compose -f ${DOCKER_COMPOSE_FILE} up -d" } } stage('Install dependencies') { steps { // Install dependencies sh """ 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 // Create report directory docker compose exec php mkdir -p /report """ } } stage ("Delete Image") { steps { script { sh "docker rmi ${DOCKER_IDENTITY}" sh "docker rmi ${DOCKER_IDENTITY_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} // """ // } // } // stage('Run containers') { // steps { // sh "docker compose -f ${DOCKER_COMPOSE_FILE} up -d" // } // } // stage('Install dependencies') { // steps { // // Install dependencies // sh """ // 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 // // Create report directory // docker compose exec php mkdir -p /report // """ // } // } // stage('Tests') { // steps { // // Run tests // sh """ // docker compose exec php bin/phpunit --log-junit /report/phpunit.xml // docker compose cp php:/report/phpunit.xml ./phpunit.xml // """ // } // // post { // // success { // // script { // // docker.withRegistry('https://index.docker.io/v1/', "${DOCKER_CREDENTIALS}") { // // docker.image("${DOCKER_IDENTITY}").push() // // docker.image("${DOCKER_IDENTITY_NGINX}").push() // // } // // } // // } // // } // } // } // post { // always { // // Publicar los resultados de las pruebas de PHPUnit // 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' // } // } }