ci: refs #6695 Docker build changes
This commit is contained in:
parent
4aa56a71cb
commit
8387dad3d8
|
@ -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}"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue