diff --git a/Jenkinsfile b/Jenkinsfile index 1f99f2115..4688e5283 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -8,6 +8,9 @@ pipeline { PROJECT_NAME = 'salix' STACK_NAME = "${env.PROJECT_NAME}-${env.BRANCH_NAME}" } + tools { + nodejs 'node-v20' + } stages { stage('Checkout') { steps { @@ -30,8 +33,6 @@ pipeline { def packageJson = readJSON file: 'package.json' env.VERSION = packageJson.version - env.FROM_GIT = env.JOB_NAME.startsWith('gitea/') - env.PROTECTED_BRANCH = [ 'dev', 'test', @@ -42,6 +43,9 @@ pipeline { script: 'git log -1 --pretty=%B ${GIT_COMMIT}', returnStdout: true ).trim() + + env.FROM_GIT = env.JOB_NAME.startsWith('gitea/') + env.RUN_TESTS = !env.PROTECTED_BRANCH && env.FROM_GIT } setEnv() } @@ -53,31 +57,24 @@ pipeline { parallel { stage('Backend') { steps { - nodejs('node-v20') { - sh 'npm install --no-audit --prefer-offline' - } + sh 'npm install --no-audit --prefer-offline' } } stage('Frontend') { steps { - nodejs('node-v20') { - sh 'npm install --no-audit --prefer-offline --prefix=front' - } + sh 'npm install --no-audit --prefer-offline --prefix=front' } } stage('Print') { steps { - nodejs('node-v20') { - sh 'npm install --no-audit --prefer-offline --prefix=print' - } + sh 'npm install --no-audit --prefer-offline --prefix=print' } } } } stage('Test') { when { - expression { return env.FROM_GIT } - expression { return !env.PROTECTED_BRANCH } + expression { return env.RUN_TESTS } } environment { NODE_ENV = "" @@ -86,33 +83,25 @@ pipeline { parallel { stage('Backend') { steps { - nodejs('node-v20') { - sh 'npm run test:back:ci' - } + sh 'npm run test:back:ci' } } stage('Frontend') { steps { - nodejs('node-v20') { - sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=6' - } + sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=6' } } } } stage('Build') { when { - expression { return env.FROM_GIT } - expression { return env.PROTECTED_BRANCH } + expression { return env.PROTECTED_BRANCH && env.FROM_GIT } } environment { CREDENTIALS = credentials('docker-registry') } steps { - nodejs('node-v20') { - sh 'gulp build' - } - + sh 'gulp build' dockerBuild() } } @@ -130,9 +119,8 @@ pipeline { sh 'mkdir -p db/remotes' sh 'cp "$MYSQL_CONFIG" db/remotes/$NODE_ENV.ini' } - nodejs('node-v20') { - sh 'npx myt push $NODE_ENV --force --commit' - } + + sh 'npx myt push $NODE_ENV --force --commit' } } stage('Docker') { @@ -150,9 +138,21 @@ pipeline { } } post { + always { + script { + if (env.RUN_TESTS) { + try { + junit 'junitresults.xml' + junit 'junit.xml' + } catch (e) { + echo e.toString() + } + } + } + } success { script { - if (env.FROM_GIT && env.BRANCH_NAME == 'master') { + if (env.BRANCH_NAME == 'master' && env.FROM_GIT) { String message = env.GIT_COMMIT_MSG int index = message.indexOf('\n') if (index != -1) @@ -171,17 +171,5 @@ pipeline { unsuccessful { sendEmail() } - always { - script { - if (env.FROM_GIT && !env.PROTECTED_BRANCH) { - try { - junit 'junitresults.xml' - junit 'junit.xml' - } catch (e) { - echo e.toString() - } - } - } - } } }