From 3a82103b8686f83677bd13230745a994e6dfe04b Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Thu, 20 Feb 2025 16:46:26 +0100 Subject: [PATCH] ci: refs #6695 Docker & Jenkinsfile fixes/refactor --- Jenkinsfile | 43 +++++++++++++++++++++-------- docker-compose.yml | 7 ----- docs/{Dockerfile => Dockerfile.dev} | 10 ++++--- test/cypress/docker-compose.yml | 4 +-- 4 files changed, 39 insertions(+), 25 deletions(-) delete mode 100644 docker-compose.yml rename docs/{Dockerfile => Dockerfile.dev} (84%) diff --git a/Jenkinsfile b/Jenkinsfile index c96153204..7f35887e3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,7 @@ #!/usr/bin/env groovy def PROTECTED_BRANCH +def IS_LATEST def BRANCH_ENV = [ test: 'test', @@ -10,16 +11,18 @@ def BRANCH_ENV = [ node { stage('Setup') { - env.FRONT_REPLICAS = 1 env.NODE_ENV = BRANCH_ENV[env.BRANCH_NAME] ?: 'dev' PROTECTED_BRANCH = [ 'dev', 'test', 'master', + 'main', 'beta' ].contains(env.BRANCH_NAME) + IS_LATEST = ['master', 'main'].contains(env.BRANCH_NAME) + // https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables echo "NODE_NAME: ${env.NODE_NAME}" echo "WORKSPACE: ${env.WORKSPACE}" @@ -58,6 +61,16 @@ pipeline { PROJECT_NAME = 'lilium' } stages { + stage('Version') { + steps { + script { + def packageJson = readJSON file: 'package.json' + def version = "${packageJson.version}-build${env.BUILD_ID}" + writeFile(file: 'VERSION.txt', text: version) + echo "VERSION: ${version}" + } + } + } stage('Install') { environment { NODE_ENV = "" @@ -90,7 +103,8 @@ pipeline { stage('E2E') { environment { CREDENTIALS = credentials('docker-registry') - CI = "true" + CI = 'true' + DOCKER = 'true' TZ = 'Europe/Madrid' COMPOSE_PROJECT = "${PROJECT_NAME}-${env.BRANCH_NAME}-${env.BUILD_ID}".toLowerCase() COMPOSE_PARAMS = "--project-name ${env.COMPOSE_PROJECT} --project-directory . --file test/cypress/docker-compose.yml" @@ -99,8 +113,8 @@ pipeline { script { sh "docker-compose ${env.COMPOSE_PARAMS} up -d" - def image = docker.build('lilium-dev', '-f docs/Dockerfile docs') - image.inside("--network ${env.COMPOSE_PROJECT}_default -e TZ -e CI") { + def image = docker.build('lilium-dev', '-f docs/Dockerfile.dev docs') + image.inside("--network ${env.COMPOSE_PROJECT}_default -e TZ -e CI -e DOCKER") { sh 'cypress run --browser chromium --spec test/cypress/integration/claim/claimAction.spec.js' } } @@ -119,25 +133,30 @@ pipeline { } environment { CREDENTIALS = credentials('docker-registry') + VERSION = readFile 'VERSION.txt' } steps { - sh 'quasar build' script { - def packageJson = readJSON file: 'package.json' - env.VERSION = "${packageJson.version}-build${env.BUILD_ID}" + sh 'quasar build' + + def baseImage = "salix-frontend:${env.VERSION}" + def image = docker.build(baseImage, ".") + docker.withRegistry("https://${env.REGISTRY}", 'docker-registry') { + image.push() + image.push(env.BRANCH_NAME) + if (IS_LATEST) image.push('latest') + } } - dockerBuild() } } stage('Deploy') { when { expression { PROTECTED_BRANCH } } + environment { + VERSION = readFile 'VERSION.txt' + } steps { - script { - def packageJson = readJSON file: 'package.json' - env.VERSION = "${packageJson.version}-build${env.BUILD_ID}" - } withKubeConfig([ serverUrl: "$KUBERNETES_API", credentialsId: 'kubernetes', diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 86b9b204c..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,7 +0,0 @@ -version: '3.7' -services: - main: - image: registry.verdnatura.es/salix-frontend:${VERSION:?} - build: - context: . - dockerfile: ./Dockerfile diff --git a/docs/Dockerfile b/docs/Dockerfile.dev similarity index 84% rename from docs/Dockerfile rename to docs/Dockerfile.dev index 8727327c8..feeb0e967 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile.dev @@ -30,14 +30,16 @@ RUN apt-get update \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -RUN groupadd -r -g 1000 developer \ - && useradd -r -u 1000 -g developer -m -d /home/developer developer -USER developer +RUN groupadd -r -g 1000 app \ + && useradd -r -u 1000 -g developer -m -d /home/app app +USER app ENV SHELL bash -ENV PNPM_HOME="/home/developer/.local/share/pnpm" +ENV PNPM_HOME="/home/app/.local/share/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN pnpm setup \ && pnpm install --global cypress@13.6.6 \ && cypress install + +WORKDIR /app diff --git a/test/cypress/docker-compose.yml b/test/cypress/docker-compose.yml index e09f03273..f07b8d867 100644 --- a/test/cypress/docker-compose.yml +++ b/test/cypress/docker-compose.yml @@ -8,13 +8,13 @@ services: depends_on: - db front: - image: alexmorenovn/vndev:latest + image: lilium-dev:latest command: quasar dev volumes: - .:/app - working_dir: /app environment: - TZ - CI + - DOCKER db: image: registry.verdnatura.es/salix-db:25.10.0-build1343