From 8387dad3d8e1111d4fcd2cc973be7f3cd63da9bc Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Mon, 17 Feb 2025 11:28:01 +0100 Subject: [PATCH] ci: refs #6695 Docker build changes --- Jenkinsfile | 195 +++++++++++++++++++-------------------------- docker-compose.yml | 16 ---- 2 files changed, 84 insertions(+), 127 deletions(-) delete mode 100644 docker-compose.yml diff --git a/Jenkinsfile b/Jenkinsfile index bfadd34f39..b7e1c321e0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,6 +8,7 @@ def RUN_BUILD def BRANCH_ENV = [ test: 'test', master: 'production', + main: 'production', beta: 'production' ] @@ -20,12 +21,17 @@ node { 'dev', 'test', 'master', + 'main', 'beta' ].contains(env.BRANCH_NAME) FROM_GIT = env.JOB_NAME.startsWith('gitea/') RUN_TESTS = !PROTECTED_BRANCH && FROM_GIT RUN_BUILD = PROTECTED_BRANCH && FROM_GIT + IS_LATEST = ['master', 'main'].contains(env.BRANCH_NAME) + + // XXX: Delete me + RUN_BUILD = true // https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables echo "NODE_NAME: ${env.NODE_NAME}" @@ -73,6 +79,7 @@ pipeline { def packageJson = readJSON file: 'package.json' def version = "${packageJson.version}-build${env.BUILD_ID}" writeFile(file: 'VERSION.txt', text: version) + echo "VERSION.txt: ${version}" } } } @@ -105,124 +112,71 @@ pipeline { } } } - stage('Stack') { - parallel { - stage('Back') { - stages { - stage('Test') { - when { - expression { RUN_TESTS } - } - environment { - NODE_ENV = '' - } - steps { - sh 'node back/tests.js --junit' - } - post { - always { - junit( - testResults: 'junitresults.xml', - allowEmptyResults: true - ) - } - } - } - stage('Build') { - when { - expression { RUN_BUILD } - } - environment { - VERSION = readFile 'VERSION.txt' - } - steps { - sh 'docker-compose build back' - } - } - } - } - stage('Front') { - when { - expression { FROM_GIT } - } - stages { - stage('Test') { - when { - expression { RUN_TESTS } - } - environment { - NODE_ENV = '' - } - steps { - sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=10' - } - post { - always { - junit( - testResults: 'junit.xml', - allowEmptyResults: true - ) - } - } - } - stage('Build') { - when { - expression { RUN_BUILD } - } - environment { - VERSION = readFile 'VERSION.txt' - } - steps { - sh 'gulp build' - sh 'docker-compose build front' - } - } - } - } - stage('Db') { - when { - expression { FROM_GIT } - } - stages { - stage('Build') { - when { - expression { RUN_BUILD } - } - environment { - VERSION = readFile 'VERSION.txt' - } - steps { - sh 'npx myt run -t' - sh ''' - docker exec vn-database sh -c "cp -r /var/lib/mysql /data" - ''' - sh 'docker commit vn-database vn_db' - sh ''' - docker stop vn-database - docker rm vn-database - ''' - sh 'docker-compose build db' - } - } - } - } - } - } - stage('Push') { + stage('Build') { when { expression { RUN_BUILD } } environment { - CREDENTIALS = credentials('docker-registry') VERSION = readFile 'VERSION.txt' + CREDENTIALS = credentials('docker-registry') } - steps { - def services = ['front', 'back', 'db'] - services.each { service -> - sh "docker tag ${REGISTRY}/salix-${service}:${VERSION} ${REGISTRY}/salix-${service}:${env.NODE_ENV}" + parallel { + stage('Back') { + steps { + docker 'back', '.' + } + } + stage('Front') { + steps { + docker 'front', 'front' + } + } + stage('DB') { + steps { + sh 'npx myt run -t' + sh 'docker exec vn-database sh -c "cp -r /var/lib/mysql /data"' + sh 'docker commit vn-database vn_db' + sh 'docker stop vn-database' + sh 'docker rm vn-database' + docker 'db', 'db' + } + } + } + } + stage('Test') { + when { + expression { RUN_TESTS } + } + environment { + NODE_ENV = '' + } + parallel { + stage('Back') { + steps { + sh 'node back/tests.js --junit' + } + post { + always { + junit( + testResults: 'junitresults.xml', + allowEmptyResults: true + ) + } + } + } + stage('Front') { + steps { + sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=10' + } + post { + always { + junit( + testResults: 'junit.xml', + allowEmptyResults: true + ) + } + } } - sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' - sh 'docker-compose push' } } stage('Deploy') { @@ -295,3 +249,22 @@ pipeline { } } } + +def docker(service, context) { + def image = "${env.REGISTRY}/salix-${service}" + def versionImage = "${image}:${env.VERSION}" + def branchImage = "${image}:${env.BRANCH_NAME}" + + sh "docker build -t ${versionImage} ${context}" + sh 'docker login --username $CREDENTIALS_USR --password $CREDENTIALS_PSW $REGISTRY' + sh "docker push ${versionImage}" + + sh "docker tag ${versionImage} ${branchImage}" + sh "docker push ${branchImage}" + + if (IS_LATEST) { + def latestImage = "${image}:latest" + sh "docker tag ${versionImage} ${latestImage}" + sh "docker push ${latestImage}" + } +} diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 7434f28344..0000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: '3.7' -services: - front: - image: registry.verdnatura.es/salix-front:${VERSION:?} - build: - context: front - back: - image: registry.verdnatura.es/salix-back:${VERSION:?} - build: - context: . - dockerfile: back/Dockerfile - db: - image: registry.verdnatura.es/salix-db:${VERSION:?} - build: - context: . - dockerfile: db/Dockerfile