From 616a28500ae0da61c88e1ee63af75e328953709a Mon Sep 17 00:00:00 2001 From: jorgep Date: Tue, 25 Jul 2023 09:40:22 +0200 Subject: [PATCH 01/10] refs #5834 icon added --- front/salix/components/bank-entity/index.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html index 211b773175..65f95fcc01 100644 --- a/front/salix/components/bank-entity/index.html +++ b/front/salix/components/bank-entity/index.html @@ -32,6 +32,11 @@ value-field="id" label="Country"> + + Date: Fri, 3 Nov 2023 09:15:41 +0100 Subject: [PATCH 02/10] check bank entity refs 5834 --- back/models/bank-entity.js | 16 ++++++++++++++++ front/salix/components/bank-entity/index.html | 3 ++- front/salix/components/bank-entity/index.js | 2 +- loopback/locale/en.json | 3 ++- loopback/locale/es.json | 4 +++- modules/client/front/billing-data/index.js | 3 --- modules/worker/front/create/index.js | 5 +++-- 7 files changed, 27 insertions(+), 9 deletions(-) diff --git a/back/models/bank-entity.js b/back/models/bank-entity.js index c89e0b3644..16a6e99249 100644 --- a/back/models/bank-entity.js +++ b/back/models/bank-entity.js @@ -10,4 +10,20 @@ module.exports = Self => { Self.validatesUniquenessOf('bic', { message: 'This BIC already exist.' }); + + Self.validateAsync('bic', checkBic, { + message: 'Bank entity id must be specified' + }); + async function checkBic(err, done) { + const filter = { + fields: ['code'], + where: {id: this.countryFk} + }; + const country = await Self.app.models.Country.findOne(filter); + const code = country ? country.code.toLowerCase() : null; + + if (code == 'es' && !this.id) + err(); + done(); + } }; diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html index 65f95fcc01..209994ae7a 100644 --- a/front/salix/components/bank-entity/index.html +++ b/front/salix/components/bank-entity/index.html @@ -41,7 +41,8 @@ vn-one ng-show="country.selection.code === 'ES'" label="Entity code" - ng-model="$ctrl.data.id"> + ng-model="$ctrl.data.id" + required="true"> diff --git a/front/salix/components/bank-entity/index.js b/front/salix/components/bank-entity/index.js index 2610180179..43653f1480 100644 --- a/front/salix/components/bank-entity/index.js +++ b/front/salix/components/bank-entity/index.js @@ -10,7 +10,7 @@ class Controller extends Dialog { if (!this.data.countryFk) throw new Error(`The country can't be empty`); - return this.$http.post(`bankEntities`, this.data) + return this.$http.post(`BankEntities`, this.data) .then(res => this.data.id = res.data.id) .then(() => super.responseHandler(response)) .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); diff --git a/loopback/locale/en.json b/loopback/locale/en.json index 26650175d6..593353ae21 100644 --- a/loopback/locale/en.json +++ b/loopback/locale/en.json @@ -196,6 +196,7 @@ "Negative basis of tickets: 23": "Negative basis of tickets: 23", "Booking completed": "Booking complete", "The ticket is in preparation": "The ticket [{{ticketId}}]({{{ticketUrl}}}) of the sales person {{salesPersonId}} is in preparation", - "You can only add negative amounts in refund tickets": "You can only add negative amounts in refund tickets" + "You can only add negative amounts in refund tickets": "You can only add negative amounts in refund tickets", + "Bank entity must be specified": "Bank entity must be specified" } diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 3cc9a96278..1b43c31a67 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -325,5 +325,7 @@ "Booking completed": "Reserva completada", "The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación", "The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mímina", - "quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mímina" + "quantityLessThanMin": "La cantidad no puede ser menor que la cantidad mímina", + "Bank entity must be specified": "La entidad bancaria es obligatoria" } + diff --git a/modules/client/front/billing-data/index.js b/modules/client/front/billing-data/index.js index 7056fa566e..fe46eabaed 100644 --- a/modules/client/front/billing-data/index.js +++ b/modules/client/front/billing-data/index.js @@ -51,15 +51,12 @@ export default class Controller extends Section { autofillBic() { if (!this.client || !this.client.iban) return; - let bankEntityId = parseInt(this.client.iban.substr(4, 4)); let filter = {where: {id: bankEntityId}}; if (this.ibanCountry != 'ES') return; - this.$http.get(`BankEntities`, {filter}).then(response => { const hasData = response.data && response.data[0]; - if (hasData) this.client.bankEntityFk = response.data[0].id; else if (!hasData) diff --git a/modules/worker/front/create/index.js b/modules/worker/front/create/index.js index e6d65221f2..9a993ae608 100644 --- a/modules/worker/front/create/index.js +++ b/modules/worker/front/create/index.js @@ -30,7 +30,8 @@ export default class Controller extends Section { } autofillBic() { - if (!this.worker || !this.worker.iban) return; + AutoFillBicComponent.controller.prototype.autofillBic(this.client); + /* if (!this.worker || !this.worker.iban) return; let bankEntityId = parseInt(this.worker.iban.substr(4, 4)); let filter = {where: {id: bankEntityId}}; @@ -42,7 +43,7 @@ export default class Controller extends Section { this.worker.bankEntityFk = response.data[0].id; else if (!hasData) this.worker.bankEntityFk = null; - }); + }); */ } generateCodeUser() { From 0536486b8c9d2a145fda867383efa55ea5891d30 Mon Sep 17 00:00:00 2001 From: jorgep Date: Fri, 3 Nov 2023 09:16:59 +0100 Subject: [PATCH 03/10] ref #5834 fix locale --- loopback/locale/es.json | 1 - 1 file changed, 1 deletion(-) diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 1b43c31a67..4b1d991ecb 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -321,7 +321,6 @@ "Select a different client": "Seleccione un cliente distinto", "Fill all the fields": "Rellene todos los campos", "The response is not a PDF": "La respuesta no es un PDF", - "Ticket without Route": "Ticket sin ruta", "Booking completed": "Reserva completada", "The ticket is in preparation": "El ticket [{{ticketId}}]({{{ticketUrl}}}) del comercial {{salesPersonId}} está en preparación", "The amount cannot be less than the minimum": "La cantidad no puede ser menor que la cantidad mímina", From fe4c529bfe8490d0f27756bc6064b4317b4d0cdf Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Fri, 12 Jan 2024 13:05:00 +0100 Subject: [PATCH 04/10] refs #5834 perf: remove front code --- front/salix/components/bank-entity/index.html | 8 +------- front/salix/components/bank-entity/index.js | 2 +- modules/client/front/billing-data/index.js | 3 +++ modules/worker/front/create/index.js | 5 ++--- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/front/salix/components/bank-entity/index.html b/front/salix/components/bank-entity/index.html index 209994ae7a..211b773175 100644 --- a/front/salix/components/bank-entity/index.html +++ b/front/salix/components/bank-entity/index.html @@ -32,17 +32,11 @@ value-field="id" label="Country"> - - + ng-model="$ctrl.data.id"> diff --git a/front/salix/components/bank-entity/index.js b/front/salix/components/bank-entity/index.js index 43653f1480..2610180179 100644 --- a/front/salix/components/bank-entity/index.js +++ b/front/salix/components/bank-entity/index.js @@ -10,7 +10,7 @@ class Controller extends Dialog { if (!this.data.countryFk) throw new Error(`The country can't be empty`); - return this.$http.post(`BankEntities`, this.data) + return this.$http.post(`bankEntities`, this.data) .then(res => this.data.id = res.data.id) .then(() => super.responseHandler(response)) .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); diff --git a/modules/client/front/billing-data/index.js b/modules/client/front/billing-data/index.js index fe46eabaed..7056fa566e 100644 --- a/modules/client/front/billing-data/index.js +++ b/modules/client/front/billing-data/index.js @@ -51,12 +51,15 @@ export default class Controller extends Section { autofillBic() { if (!this.client || !this.client.iban) return; + let bankEntityId = parseInt(this.client.iban.substr(4, 4)); let filter = {where: {id: bankEntityId}}; if (this.ibanCountry != 'ES') return; + this.$http.get(`BankEntities`, {filter}).then(response => { const hasData = response.data && response.data[0]; + if (hasData) this.client.bankEntityFk = response.data[0].id; else if (!hasData) diff --git a/modules/worker/front/create/index.js b/modules/worker/front/create/index.js index 9a993ae608..e6d65221f2 100644 --- a/modules/worker/front/create/index.js +++ b/modules/worker/front/create/index.js @@ -30,8 +30,7 @@ export default class Controller extends Section { } autofillBic() { - AutoFillBicComponent.controller.prototype.autofillBic(this.client); - /* if (!this.worker || !this.worker.iban) return; + if (!this.worker || !this.worker.iban) return; let bankEntityId = parseInt(this.worker.iban.substr(4, 4)); let filter = {where: {id: bankEntityId}}; @@ -43,7 +42,7 @@ export default class Controller extends Section { this.worker.bankEntityFk = response.data[0].id; else if (!hasData) this.worker.bankEntityFk = null; - }); */ + }); } generateCodeUser() { From b4bb9a48495652429270f38cc121c0a802112dbb Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Wed, 31 Jan 2024 10:46:16 +0100 Subject: [PATCH 05/10] refs #5834 feat: new validation --- back/models/bank-entity.js | 6 +++++- loopback/locale/es.json | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/back/models/bank-entity.js b/back/models/bank-entity.js index 16a6e99249..ac352f93ce 100644 --- a/back/models/bank-entity.js +++ b/back/models/bank-entity.js @@ -8,7 +8,11 @@ module.exports = Self => { }); Self.validatesUniquenessOf('bic', { - message: 'This BIC already exist.' + message: 'This BIC already exist' + }); + + Self.validatesPresenceOf('countryFk', { + message: 'CountryFK cannot be empty' }); Self.validateAsync('bic', checkBic, { diff --git a/loopback/locale/es.json b/loopback/locale/es.json index 4a452a6d75..3d25d6ab5c 100644 --- a/loopback/locale/es.json +++ b/loopback/locale/es.json @@ -72,7 +72,7 @@ "The secret can't be blank": "La contraseña no puede estar en blanco", "We weren't able to send this SMS": "No hemos podido enviar el SMS", "This client can't be invoiced": "Este cliente no puede ser facturado", - "You must provide the correction information to generate a corrective invoice": "Debes informar la información de corrección para generar una factura rectificativa", + "You must provide the correction information to generate a corrective invoice": "Debes informar la información de corrección para generar una factura rectificativa", "This ticket can't be invoiced": "Este ticket no puede ser facturado", "You cannot add or modify services to an invoiced ticket": "No puedes añadir o modificar servicios a un ticket facturado", "This ticket can not be modified": "Este ticket no puede ser modificado", @@ -180,7 +180,8 @@ "New ticket request has been created with price": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}* y un precio de *{{price}} €*", "New ticket request has been created": "Se ha creado una nueva petición de compra '{{description}}' para el día *{{shipped}}*, con una cantidad de *{{quantity}}*", "Swift / BIC cannot be empty": "Swift / BIC no puede estar vacío", - "This BIC already exist.": "Este BIC ya existe.", + "CountryFK cannot be empty": "El país no puede estar vacío", + "This BIC already exist": "Este BIC ya existe", "That item doesn't exists": "Ese artículo no existe", "There's a new urgent ticket:": "Hay un nuevo ticket urgente:", "Invalid account": "Cuenta inválida", @@ -337,6 +338,5 @@ "You already have the mailAlias": "Ya tienes este alias de correo", "The alias cant be modified": "Este alias de correo no puede ser modificado", "No tickets to invoice": "No hay tickets para facturar", - "Bank entity must be specified": "La entidad bancaria es obligatoria" + "Bank entity must be specified": "La entidad bancaria es obligatoria" } - From a67a347a9ef185ed809468d958c215aa00d4b4ee Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Tue, 6 Feb 2024 21:51:15 +0100 Subject: [PATCH 06/10] ci: refs#6706 CI fixes --- .dockerignore | 6 ++++-- Jenkinsfile | 23 ++++++++++++----------- back/tests.js | 41 ++++++++++++++++++++++++++++++----------- docker-compose.yml | 10 ++++++---- front/Dockerfile | 2 +- gulpfile.js | 2 +- package.json | 3 ++- pnpm-lock.yaml | 3 +++ webpack.config.js | 4 ++-- 9 files changed, 61 insertions(+), 33 deletions(-) diff --git a/.dockerignore b/.dockerignore index afe81bb0fc..1a47908abf 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,6 @@ node_modules print/node_modules -front/node_modules -services \ No newline at end of file +front +db +e2e +storage diff --git a/Jenkinsfile b/Jenkinsfile index 56e33f4aeb..4bacaa6d24 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -86,9 +86,6 @@ pipeline { } } stage('Stack') { - environment { - TZ = 'Europe/Madrid' - } parallel { stage('Back') { stages { @@ -104,14 +101,10 @@ pipeline { } post { always { - script { - try { - junit 'junitresults.xml' - junit 'junit.xml' - } catch (e) { - echo e.toString() - } - } + junit( + testResults: 'junitresults.xml', + allowEmptyResults: true + ) } } } @@ -144,6 +137,14 @@ pipeline { steps { sh 'jest --ci --reporters=default --reporters=jest-junit --maxWorkers=10' } + post { + always { + junit( + testResults: 'junit.xml', + allowEmptyResults: true + ) + } + } } stage('Build') { when { diff --git a/back/tests.js b/back/tests.js index 0fb4c76eaf..1848132f8e 100644 --- a/back/tests.js +++ b/back/tests.js @@ -1,19 +1,36 @@ /* eslint-disable no-console */ const path = require('path'); +const getopts = require('getopts'); const Myt = require('@verdnatura/myt/myt'); const Run = require('@verdnatura/myt/myt-run'); const helper = require('./tests-helper'); +const opts = getopts(process.argv.slice(2), { + string: [ + 'network' + ], + boolean: [ + 'ci', + 'junit' + ] +}); + let server; -const isCI = process.argv[2] === 'ci'; const PARALLEL = false; const TIMEOUT = 900000; -process.on('SIGINT', teardown); process.on('exit', teardown); process.on('uncaughtException', onError); process.on('unhandledRejection', onError); +const exitSignals = [ + 'SIGINT', + 'SIGUSR1', + 'SIGUSR2' +]; +for (const signal of exitSignals) + process.on(signal, () => process.exit()); + async function setup() { console.log('Building and running DB container.'); @@ -21,9 +38,9 @@ async function setup() { await myt.init({ workspace: path.join(__dirname, '..'), random: true, - ci: isCI, + ci: opts.ci, tmpfs: process.platform == 'linux', - network: isCI ? 'jenkins' : null + network: opts.network || null }); server = await myt.run(Run); await myt.deinit(); @@ -38,18 +55,19 @@ async function setup() { async function teardown() { if (!server) return; + const oldServer = server; + server = null; if (!PARALLEL) await helper.deinit(); console.log('Stopping and removing DB container.'); - await server.rm(); - server = null; + await oldServer.rm(); } async function onError(err) { - await teardown(); console.error(err); + process.exit(1); } async function test() { @@ -79,8 +97,8 @@ async function test() { const SpecReporter = require('jasmine-spec-reporter').SpecReporter; runner.addReporter(new SpecReporter({ spec: { - displaySuccessful: isCI, - displayPending: isCI + displaySuccessful: opts.ci, + displayPending: opts.ci }, summary: { displayPending: false, @@ -88,11 +106,12 @@ async function test() { })); } - if (isCI) { + if (opts.junit) { const JunitReporter = require('jasmine-reporters'); runner.addReporter(new JunitReporter.JUnitXmlReporter()); - runner.jasmine.DEFAULT_TIMEOUT_INTERVAL = TIMEOUT; } + if (opts.ci) + runner.jasmine.DEFAULT_TIMEOUT_INTERVAL = TIMEOUT; // runner.loadConfigFile('back/jasmine.json'); runner.loadConfig(config); diff --git a/docker-compose.yml b/docker-compose.yml index dda4187f29..8391a5e23a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,8 +3,9 @@ services: front: image: registry.verdnatura.es/salix-front:${VERSION:?} build: - context: . - dockerfile: front/Dockerfile + context: front + environment: + - TZ ports: - 80 deploy: @@ -18,11 +19,12 @@ services: back: image: registry.verdnatura.es/salix-back:${VERSION:?} build: . - ports: - - 3000 environment: - NODE_ENV - DEBUG + - TZ + ports: + - 3000 configs: - source: datasources target: /etc/salix/datasources.json diff --git a/front/Dockerfile b/front/Dockerfile index d0ee269041..c507d863cf 100644 --- a/front/Dockerfile +++ b/front/Dockerfile @@ -10,7 +10,7 @@ RUN apt-get update \ && ln -sf /dev/stderr /var/log/nginx/error.log WORKDIR /etc/nginx -COPY front/nginx.conf sites-available/salix +COPY nginx.conf sites-available/salix RUN rm sites-enabled/default && ln -s ../sites-available/salix sites-enabled/salix COPY dist /salix/dist diff --git a/gulpfile.js b/gulpfile.js index a4caa61966..1c6fe2a2d4 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -17,7 +17,7 @@ if (argv.NODE_ENV) let langs = ['es', 'en']; let srcDir = './front'; let modulesDir = './modules'; -let buildDir = 'dist'; +let buildDir = 'front/dist'; let backSources = [ '!node_modules', diff --git a/package.json b/package.json index 04c0e6d04d..ff8eca428b 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "eslint-plugin-jasmine": "^2.10.1", "fancy-log": "^1.3.2", "file-loader": "^6.2.0", + "getopts": "^2.3.0", "gulp": "^4.0.2", "gulp-concat": "^2.6.1", "gulp-env": "^0.4.0", @@ -107,7 +108,7 @@ "scripts": { "dbtest": "nodemon -q db/tests.js -w db/tests", "test:back": "nodemon -q back/tests.js --config back/nodemonConfig.json", - "test:back:ci": "node back/tests.js ci", + "test:back:ci": "node back/tests.js --ci --junit --network jenkins", "test:e2e": "node e2e/helpers/tests.js", "test:front": "jest --watch", "back": "nodemon --inspect -w modules ./node_modules/gulp/bin/gulp.js back", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2df0ae49c8..69528e3e29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -163,6 +163,9 @@ devDependencies: file-loader: specifier: ^6.2.0 version: 6.2.0(webpack@5.90.1) + getopts: + specifier: ^2.3.0 + version: 2.3.0 gulp: specifier: ^4.0.2 version: 4.0.2 diff --git a/webpack.config.js b/webpack.config.js index a102b838ed..7296a62d19 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -11,7 +11,7 @@ let baseConfig = { entry: {salix: 'salix'}, mode, output: { - path: path.join(__dirname, 'dist'), + path: path.join(__dirname, 'front/dist'), publicPath: '/' }, module: { @@ -139,7 +139,7 @@ let devConfig = { host: '0.0.0.0', port: 5000, publicPath: '/', - contentBase: 'dist', + contentBase: 'front/dist', quiet: false, noInfo: false, hot: true, From 46dee65e6886a5343d520fa6b314710c4440a113 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Tue, 6 Feb 2024 22:22:25 +0100 Subject: [PATCH 07/10] ci: refs#6706 Myt updated --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ff8eca428b..73fa5fc7a2 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@babel/plugin-syntax-dynamic-import": "^7.7.4", "@babel/preset-env": "^7.11.0", "@babel/register": "^7.7.7", - "@verdnatura/myt": "^1.6.3", + "@verdnatura/myt": "^1.6.5", "angular-mocks": "^1.7.9", "babel-jest": "^26.0.1", "babel-loader": "^8.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69528e3e29..83904cf416 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -128,8 +128,8 @@ devDependencies: specifier: ^7.7.7 version: 7.23.7(@babel/core@7.23.9) '@verdnatura/myt': - specifier: ^1.6.3 - version: 1.6.3 + specifier: ^1.6.5 + version: 1.6.5 angular-mocks: specifier: ^1.7.9 version: 1.8.3 @@ -2633,8 +2633,8 @@ packages: dev: false optional: true - /@verdnatura/myt@1.6.3: - resolution: {integrity: sha512-VRoTB5sEPL8a7VaX9l2afpaPNT6pBa+If1tP9tpaJ4enFQbNITlApcC0GK6XYmWMkJQjl2lgdN4/u0UCiNb2MQ==} + /@verdnatura/myt@1.6.5: + resolution: {integrity: sha512-0h7FvhSewd2W9EOymc59YymZJOBfCXmY5CWNFhol1yBfWSOOF9JAEE9DKRMbKaMqd/5Dy9LriS5PYOfeqm3HjA==} hasBin: true dependencies: '@sqltools/formatter': 1.2.5 From bdfbb8f6f7b05e1cec605a7591addd221a429931 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Wed, 7 Feb 2024 12:54:37 +0100 Subject: [PATCH 08/10] build: refs#6706 gulp install fixed, myt updated --- gulpfile.js | 44 +++++++++++++++++++++++++++++++++----------- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 1c6fe2a2d4..255b1ee05b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ require('require-yaml'); const gulp = require('gulp'); const PluginError = require('plugin-error'); @@ -67,19 +68,40 @@ back.description = `Starts backend and database service`; const defaultTask = gulp.parallel(front, back); defaultTask.description = `Starts all application services`; -function install() { - const install = require('gulp-install'); - const print = require('gulp-print'); +async function install() { + const spawn = require('child_process').spawn; - let npmArgs = []; - if (argv.ci) npmArgs = ['--no-audit', '--prefer-offline']; + console.log('-> Installing global packages...'); + await pnpmInstall(); - let packageFiles = ['front/package.json', 'print/package.json']; - return gulp.src(packageFiles) - .pipe(print(filepath => { - return `Installing packages in ${filepath}`; - })) - .pipe(install({npm: npmArgs})); + const modules = ['front', 'print']; + for (const module of modules) { + console.log(`-> Installing '${module}' packages...`); + await pnpmInstall(module); + } + + async function pnpmInstall(prefix) { + let args = ['install', '--prefer-offline']; + if (prefix) args = args.concat(['--prefix', prefix]); + + const options = { + stdio: [ + process.stdin, + process.stdout, + process.stderr + ] + }; + + await new Promise((resolve, reject) => { + const child = spawn('pnpm', args, options); + child.on('exit', code => { + if (code !== 0) + reject(new Error(`pnpm exit code ${code}`)); + else + resolve(code); + }); + }); + } } install.description = `Installs node dependencies in all directories`; diff --git a/package.json b/package.json index 73fa5fc7a2..197c1094d4 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "@babel/plugin-syntax-dynamic-import": "^7.7.4", "@babel/preset-env": "^7.11.0", "@babel/register": "^7.7.7", - "@verdnatura/myt": "^1.6.5", + "@verdnatura/myt": "^1.6.6", "angular-mocks": "^1.7.9", "babel-jest": "^26.0.1", "babel-loader": "^8.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 83904cf416..19f57caf9c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -128,8 +128,8 @@ devDependencies: specifier: ^7.7.7 version: 7.23.7(@babel/core@7.23.9) '@verdnatura/myt': - specifier: ^1.6.5 - version: 1.6.5 + specifier: ^1.6.6 + version: 1.6.6 angular-mocks: specifier: ^1.7.9 version: 1.8.3 @@ -2633,8 +2633,8 @@ packages: dev: false optional: true - /@verdnatura/myt@1.6.5: - resolution: {integrity: sha512-0h7FvhSewd2W9EOymc59YymZJOBfCXmY5CWNFhol1yBfWSOOF9JAEE9DKRMbKaMqd/5Dy9LriS5PYOfeqm3HjA==} + /@verdnatura/myt@1.6.6: + resolution: {integrity: sha512-5KHi9w1baEQ6Oe/pAR8pl0oD5yyJJuPirE+ZhygreUGGURfig4VekjhlGE3WEbWquDiIAMi89J1VQ+1Ba0+jQw==} hasBin: true dependencies: '@sqltools/formatter': 1.2.5 From eda85eda76337d1d1699bda12ef73d3fa97ead2f Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Wed, 7 Feb 2024 13:24:50 +0100 Subject: [PATCH 09/10] ci: refs#6706 Jenkinsfile fixes --- Jenkinsfile | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 4bacaa6d24..034bda0126 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -5,9 +5,15 @@ def FROM_GIT def RUN_TESTS def RUN_BUILD +def BRANCH_ENV = [ + test: 'test', + master: 'production' +] + node { stage('Setup') { - env.NODE_ENV = 'dev' + env.BACK_REPLICAS = 1 + env.NODE_ENV = BRANCH_ENV[env.BRANCH_NAME] ?: 'dev' PROTECTED_BRANCH = [ 'dev', @@ -23,24 +29,26 @@ node { echo "NODE_NAME: ${env.NODE_NAME}" echo "WORKSPACE: ${env.WORKSPACE}" - configFileProvider([ - configFile(fileId: 'salix.properties', - variable: 'PROPS_FILE') - ]) { - def props = readProperties file: PROPS_FILE - props.each {key, value -> env."${key}" = value } - props.each {key, value -> echo "${key}: ${value}" } - } - - if (PROTECTED_BRANCH) { + if (FROM_GIT) { configFileProvider([ - configFile(fileId: "salix.branch.${env.BRANCH_NAME}", - variable: 'BRANCH_PROPS_FILE') + configFile(fileId: 'salix.properties', + variable: 'PROPS_FILE') ]) { - def props = readProperties file: BRANCH_PROPS_FILE + def props = readProperties file: PROPS_FILE props.each {key, value -> env."${key}" = value } props.each {key, value -> echo "${key}: ${value}" } } + + if (PROTECTED_BRANCH) { + configFileProvider([ + configFile(fileId: "salix.branch.${env.BRANCH_NAME}", + variable: 'BRANCH_PROPS_FILE') + ]) { + def props = readProperties file: BRANCH_PROPS_FILE + props.each {key, value -> env."${key}" = value } + props.each {key, value -> echo "${key}: ${value}" } + } + } } } } From c4907d1a33ad9d9d2998512f4b430f10c26c3a15 Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Wed, 7 Feb 2024 13:56:21 +0100 Subject: [PATCH 10/10] ci: refs#6706 Jenkinsfile fixes --- Jenkinsfile | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 034bda0126..2c04bcf16f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -29,26 +29,24 @@ node { echo "NODE_NAME: ${env.NODE_NAME}" echo "WORKSPACE: ${env.WORKSPACE}" - if (FROM_GIT) { + configFileProvider([ + configFile(fileId: 'salix.properties', + variable: 'PROPS_FILE') + ]) { + def props = readProperties file: PROPS_FILE + props.each {key, value -> env."${key}" = value } + props.each {key, value -> echo "${key}: ${value}" } + } + + if (PROTECTED_BRANCH) { configFileProvider([ - configFile(fileId: 'salix.properties', - variable: 'PROPS_FILE') + configFile(fileId: "salix.branch.${env.BRANCH_NAME}", + variable: 'BRANCH_PROPS_FILE') ]) { - def props = readProperties file: PROPS_FILE + def props = readProperties file: BRANCH_PROPS_FILE props.each {key, value -> env."${key}" = value } props.each {key, value -> echo "${key}: ${value}" } } - - if (PROTECTED_BRANCH) { - configFileProvider([ - configFile(fileId: "salix.branch.${env.BRANCH_NAME}", - variable: 'BRANCH_PROPS_FILE') - ]) { - def props = readProperties file: BRANCH_PROPS_FILE - props.each {key, value -> env."${key}" = value } - props.each {key, value -> echo "${key}: ${value}" } - } - } } } }