Compare commits
23 Commits
main
...
develop-je
Author | SHA1 | Date |
---|---|---|
|
5801cec5a3 | |
|
d38e99d7eb | |
|
bb22d5b421 | |
|
f9c4da875e | |
|
e8fd9e6472 | |
|
2aabf5b188 | |
|
85a8ad86c6 | |
|
8ecf148ca6 | |
|
ca5b33fe25 | |
|
7a31acd93d | |
|
3e8cdbb86e | |
|
d5a93b9cfe | |
|
dab09640a0 | |
|
600f990020 | |
|
cf2844676c | |
|
6c8af6825e | |
|
8bda2bbde5 | |
|
82c61a8caf | |
|
b0ec7ee6f0 | |
|
0280923633 | |
|
b1c59266e3 | |
|
adce8f4d24 | |
|
202b29ea6a |
|
@ -1,46 +1,92 @@
|
|||
pipeline {
|
||||
agent {
|
||||
node {
|
||||
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('Build Environmen') {
|
||||
stage ("Checkout") {
|
||||
steps {
|
||||
//Build environment
|
||||
sh 'docker compose -f docker-compose-ci.yaml up --build -d'
|
||||
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 'docker exec ogcore-php composer install'
|
||||
sh 'docker exec ogcore-php php bin/console lexik:jwt:generate-keypair --overwrite'
|
||||
sh 'docker exec ogcore-php php bin/console doctrine:migrations:migrate --no-interaction'
|
||||
sh 'docker exec ogcore-php php bin/console doctrine:fixtures:load --no-interaction'
|
||||
// Create report directory
|
||||
sh 'docker exec ogcore-php mkdir -p /report'
|
||||
sh """
|
||||
docker compose exec php mkdir -p /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'
|
||||
sh 'docker cp ogcore-php:/report/phpunit.xml .'
|
||||
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 {
|
||||
sh "docker compose -f ${DOCKER_COMPOSE_FILE} cp php:/report/phpunit.xml phpunit.xml"
|
||||
// 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-ci.yaml down'
|
||||
sh 'docker compose -f docker-compose-ci.yaml rm -f'
|
||||
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}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
services:
|
||||
database:
|
||||
container_name: ogcore-database
|
||||
image: mariadb:10.11
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
MYSQL_DATABASE: ogcore
|
||||
MYSQL_PASSWORD: root
|
||||
MYSQL_USER: admin
|
||||
ports:
|
||||
- 3336:3306
|
||||
volumes:
|
||||
- database_data:/var/lib/mysql
|
||||
networks:
|
||||
- ogcore-network
|
||||
|
||||
nginx:
|
||||
container_name: ogcore-nginx
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/Dockerfile-nginx
|
||||
depends_on:
|
||||
- php
|
||||
ports:
|
||||
- 8080:80
|
||||
volumes:
|
||||
- ./public:/var/www/html/public:cached
|
||||
networks:
|
||||
- ogcore-network
|
||||
image: ogcore-nginx:static
|
||||
|
||||
php:
|
||||
container_name: ogcore-php
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/Dockerfile-jenkins-php
|
||||
depends_on:
|
||||
- database
|
||||
environment:
|
||||
XDEBUG_CLIENT_HOST: 127.17.0.1
|
||||
XDEBUG_CLIENT_PORT: 9003
|
||||
PHP_IDE_CONFIG: serverName=ogcore
|
||||
networks:
|
||||
- ogcore-network
|
||||
image: ogcore-php:static
|
||||
volumes:
|
||||
- ./report:/root/
|
||||
|
||||
volumes:
|
||||
database_data:
|
||||
|
||||
networks:
|
||||
ogcore-network:
|
Loading…
Reference in New Issue