feat: docker pull back image #740
|
@ -2,5 +2,5 @@ FROM node:stretch-slim
|
|||
RUN corepack enable pnpm
|
||||
RUN pnpm install -g @quasar/cli
|
||||
WORKDIR /app
|
||||
COPY dist/spa ./
|
||||
COPY dist/spa proxy.mjs ./
|
||||
CMD ["quasar", "serve", "./", "--history", "--hostname", "0.0.0.0"]
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
FROM node:lts-bookworm
|
||||
ENV SHELL bash
|
||||
ENV PNPM_HOME="/pnpm"
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
RUN npm install -g pnpm@8.15.1
|
||||
RUN pnpm setup
|
||||
|
||||
RUN pnpm install -g @quasar/cli@2.2.1
|
||||
|
||||
RUN apt-get -y --fix-missing update
|
||||
RUN apt-get -y --fix-missing upgrade
|
||||
RUN apt-get -y --no-install-recommends install apt-utils
|
||||
RUN apt-get install --fix-missing -y libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth xvfb
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY \
|
||||
package.json \
|
||||
.npmrc \
|
||||
pnpm-lock.yaml \
|
||||
./
|
||||
|
||||
RUN pnpm install
|
||||
RUN pnpm install cypress
|
||||
RUN npx cypress install
|
||||
|
||||
COPY \
|
||||
quasar.config.js \
|
||||
index.html \
|
||||
jsconfig.json \
|
||||
quasar.extensions.json \
|
||||
.eslintignore \
|
||||
.eslintrc.cjs \
|
||||
postcss.config.js \
|
||||
cypress.config.js \
|
||||
./
|
||||
|
||||
COPY src src
|
||||
COPY test/cypress test/cypress
|
||||
COPY public public
|
||||
|
||||
# RUN npx quasar build
|
||||
|
||||
CMD ["npx", "cypress", "run"]
|
|
@ -66,15 +66,67 @@ pipeline {
|
|||
sh 'pnpm install --prefer-offline'
|
||||
}
|
||||
}
|
||||
stage('Test') {
|
||||
// UNCOMMENT ME!
|
||||
// stage('Test') {
|
||||
// when {
|
||||
// expression { !PROTECTED_BRANCH }
|
||||
// }
|
||||
// environment {
|
||||
// NODE_ENV = ""
|
||||
// }
|
||||
// steps {
|
||||
// sh 'pnpm run test:unit:ci'
|
||||
// }
|
||||
// post {
|
||||
// always {
|
||||
// junit(
|
||||
// testResults: 'junitresults.xml',
|
||||
// allowEmptyResults: true
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
stage('E2E') {
|
||||
when {
|
||||
expression { !PROTECTED_BRANCH }
|
||||
}
|
||||
environment {
|
||||
NODE_ENV = ""
|
||||
CREDENTIALS = credentials('docker-registry')
|
||||
IMAGE = "$REGISTRY/salix-back"
|
||||
}
|
||||
steps {
|
||||
sh 'pnpm run test:unit:ci'
|
||||
script {
|
||||
def packageJson = readJSON file: 'package.json'
|
||||
env.VERSION = "${packageJson.version}-e2e${env.BUILD_ID}"
|
||||
}
|
||||
// // sh 'docker pull $IMAGE:dev'
|
||||
// sh 'git clone https://gitea.verdnatura.es/verdnatura/salix.git'
|
||||
// // sh 'docker ps -a'
|
||||
// sh 'docker network create salix_default'
|
||||
// sh 'docker-compose -f docker-compose.yml build db'
|
||||
// sh 'docker-compose -f docker-compose.yml up db'
|
||||
// sh 'docker run --name back $IMAGE:dev'
|
||||
sh 'rm -rf salix'
|
||||
sh 'docker-compose down'
|
||||
sh 'docker-compose rm'
|
||||
// sh 'docker rm -f back'
|
||||
// sh 'docker rm -f db'
|
||||
// sh 'docker rm -f front'
|
||||
// sh 'docker rm -f e2e'
|
||||
sh 'git clone --branch dev https://gitea.verdnatura.es/verdnatura/salix.git'
|
||||
// sh 'cd front'
|
||||
// sh '# export VERSION=e2e-try'
|
||||
// sh 'docker build -f salix/back/Dockerfile -t back ./salix'
|
||||
sh 'docker-compose version'
|
||||
// // // sh 'quasar build'
|
||||
// // // sh 'docker compose -f docker-compose.e2e.yml build front'
|
||||
// // // sh 'docker compose -f docker-compose.e2e.yml up front'
|
||||
// sh 'pnpm i @verdnatura/myt'
|
||||
// sh 'cd salix && npx myt run -t --ci -d -n front_default'
|
||||
// // sh 'docker-compose -f docker-compose.e2e.yml up --build db'
|
||||
// sh 'docker run --net=host -v ./test/cypress/storage:/salix/storage -d back'
|
||||
// sh 'docker-compose -f docker-compose.e2e.yml up e2e'
|
||||
|
||||
}
|
||||
post {
|
||||
always {
|
||||
|
|
|
@ -12,7 +12,7 @@ module.exports = defineConfig({
|
|||
supportFile: 'test/cypress/support/index.js',
|
||||
videosFolder: 'test/cypress/videos',
|
||||
video: false,
|
||||
specPattern: 'test/cypress/integration/**/*.spec.js',
|
||||
specPattern: 'test/cypress/integration/claim/*.spec.js',
|
||||
experimentalRunAllSpecs: true,
|
||||
watchForFileChanges: true,
|
||||
reporter: 'cypress-mochawesome-reporter',
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
docker stop dind-container || true && docker rm dind-container || true
|
||||
docker run --privileged -d \
|
||||
-p 2376:2376 \
|
||||
-e DOCKER_TLS_CERTDIR="" \
|
||||
--name dind-container \
|
||||
-v /home/alexm/Projects/salix-front:/front \
|
||||
docker:dind \
|
||||
dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
|
||||
|
||||
docker exec -it dind-container sh
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
services:
|
||||
front:
|
||||
image: registry.verdnatura.es/salix-frontend:${VERSION:?}
|
||||
command: quasar serve --history --proxy ./proxy.mjs --hostname localhost --port 9000
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./Dockerfile
|
||||
network_mode: host
|
||||
e2e:
|
||||
image: registry.verdnatura.es/salix-frontend:${VERSION:?}
|
||||
command: npx cypress run
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./Dockerfile.e2e
|
||||
network_mode: host
|
||||
# db:
|
||||
# image: db
|
||||
# command: npx myt run -t --ci -d -n front_default
|
||||
# build:
|
||||
# context: .
|
||||
# dockerfile: test/cypress/db/Dockerfile
|
||||
# network_mode: host
|
||||
# volumes:
|
||||
# - /var/run/docker.sock:/var/run/docker.sock
|
||||
|
||||
# back:
|
||||
# image: back
|
||||
# build:
|
||||
# context: ./salix
|
||||
# dockerfile: salix/back/Dockerfile
|
||||
# # depends_on:
|
||||
# # - db
|
||||
# ports:
|
||||
# - 3000:3000
|
||||
# - 5000:5000
|
||||
# volumes:
|
||||
# - ./test/cypress/storage:/salix/storage
|
||||
|
||||
# e2e-2:
|
||||
# image: registry.verdnatura.es/salix-frontend:${VERSION:?}
|
||||
# command: npx cypress run --config-file test/cypress/configs/cypress.config.2.js
|
||||
# build:
|
||||
# context: .
|
||||
# dockerfile: ./Dockerfile.e2e
|
|
@ -1,7 +1,7 @@
|
|||
version: '3.7'
|
||||
services:
|
||||
main:
|
||||
image: registry.verdnatura.es/salix-frontend:${VERSION:?}
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./Dockerfile
|
||||
main:
|
||||
image: registry.verdnatura.es/salix-frontend:${VERSION:?}
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./Dockerfile
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
git clone --branch dev https://gitea.verdnatura.es/verdnatura/salix.git
|
||||
cd front
|
||||
export VERSION=e2e-try
|
||||
export SHELL=/bin/sh
|
||||
export ENV=~/.profile
|
||||
touch ~/.profile
|
||||
apk add --no-cache curl
|
||||
apk add --no-cache ca-certificates
|
||||
update-ca-certificates
|
||||
curl -fsSL https://nodejs.org/dist/v20.18.1/node-v20.18.1.tar.gz -o node.tar.gz
|
||||
tar -xzf node.tar.gz -C /usr/local --strip-components=1
|
||||
apk add --no-cache python3 make gcc g++ libgcc libstdc++ linux-headers musl-dev
|
||||
./configure
|
||||
make -j$(nproc)
|
||||
make install
|
||||
|
||||
curl -fsSL https://get.pnpm.io/install.sh | env PNPM_VERSION=8.15.1 sh -
|
||||
|
||||
# DB
|
||||
pnpm i @verdnatura/myt
|
||||
cd salix && npx myt run -t --ci -d -n front_default
|
||||
|
||||
# Back
|
||||
docker buildx build -f salix/back/Dockerfile -t back ./salix
|
||||
docker run --net=host -v ./test/cypress/storage:/salix/storage -d back
|
||||
|
||||
|
||||
# docker-compose -f docker-compose.e2e.yml -d up front
|
||||
# docker-compose -f docker-compose.e2e.yml up e2e --build
|
||||
|
||||
docker-compose -f docker-compose.e2e.yml up front --build -d
|
||||
docker-compose -f docker-compose.e2e.yml up e2e --build
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
export default [
|
||||
{
|
||||
path: '/api',
|
||||
rule: { target: 'http://localhost:3000' },
|
||||
},
|
||||
];
|
|
@ -109,7 +109,7 @@ module.exports = configure(function (/* ctx */) {
|
|||
},
|
||||
proxy: {
|
||||
'/api': {
|
||||
target: 'http://0.0.0.0:3000',
|
||||
target: 'http://localhost:3000',
|
||||
logLevel: 'debug',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
reports/*
|
||||
videos/*
|
||||
screenshots/*
|
||||
storage/*
|
||||
reports/*
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
FROM node:lts-bookworm
|
||||
ENV SHELL bash
|
||||
ENV PNPM_HOME="/pnpm"
|
||||
ENV PATH="$PNPM_HOME:$PATH"
|
||||
RUN npm install -g pnpm@8.15.1
|
||||
RUN pnpm setup
|
||||
RUN apt install libkrb5-dev libssl-dev
|
||||
RUN npm i -g pnpm
|
||||
|
||||
WORKDIR /salix
|
||||
|
||||
COPY salix/db db
|
||||
COPY salix/myt.config.yml .
|
||||
COPY salix/.git .git
|
||||
|
||||
# COPY node_modules node_modules
|
||||
RUN pnpm i @verdnatura/myt
|
||||
|
|
@ -22,14 +22,12 @@ describe('ClaimPhoto', () => {
|
|||
});
|
||||
|
||||
it('should open first image dialog change to second and close', () => {
|
||||
cy.get(
|
||||
':nth-child(1) > .q-card > .q-img > .q-img__container > .q-img__image'
|
||||
).click();
|
||||
cy.get(':nth-last-child(1) > .q-card').click();
|
||||
cy.get('.q-carousel__slide > .q-img > .q-img__container > .q-img__image').should(
|
||||
'be.visible'
|
||||
);
|
||||
|
||||
cy.get('.q-carousel__control > .q-btn > .q-btn__content > .q-icon').click();
|
||||
cy.get('.q-carousel__control > button').click();
|
||||
|
||||
cy.get(
|
||||
'.q-dialog__inner > .q-toolbar > .q-btn > .q-btn__content > .q-icon'
|
||||
|
@ -41,7 +39,7 @@ describe('ClaimPhoto', () => {
|
|||
|
||||
it('should remove third and fourth file', () => {
|
||||
cy.get(
|
||||
'.multimediaParent > :nth-child(3) > .q-btn > .q-btn__content > .q-icon'
|
||||
'.multimediaParent > :nth-last-child(1) > .q-btn > .q-btn__content > .q-icon'
|
||||
).click();
|
||||
cy.get(
|
||||
'.q-card__actions > .q-btn--unelevated > .q-btn__content > .block'
|
||||
|
@ -49,7 +47,7 @@ describe('ClaimPhoto', () => {
|
|||
cy.get('.q-notification__message').should('have.text', 'Data deleted');
|
||||
|
||||
cy.get(
|
||||
'.multimediaParent > :nth-child(3) > .q-btn > .q-btn__content > .q-icon'
|
||||
'.multimediaParent > :nth-last-child(1) > .q-btn > .q-btn__content > .q-icon'
|
||||
).click();
|
||||
cy.get(
|
||||
'.q-card__actions > .q-btn--unelevated > .q-btn__content > .block'
|
||||
|
|
|
@ -24,7 +24,7 @@ describe('Recover Password', () => {
|
|||
it('should change password to user', () => {
|
||||
// Get token from mail
|
||||
cy.request(
|
||||
`http://localhost:3000/api/Mails?filter=%7B%22where%22%3A%20%7B%22receiver%22%3A%20%22${username}%40mydomain.com%22%7D%2C%20%22order%22%3A%20%5B%22id%20DESC%22%5D%7D&access_token=DEFAULT_TOKEN`
|
||||
`/api/Mails?filter=%7B%22where%22%3A%20%7B%22receiver%22%3A%20%22${username}%40mydomain.com%22%7D%2C%20%22order%22%3A%20%5B%22id%20DESC%22%5D%7D&access_token=DEFAULT_TOKEN`
|
||||
).then((response) => {
|
||||
const regex = /access_token=([a-zA-Z0-9]+)/;
|
||||
const [match] = response.body[0].body.match(regex);
|
||||
|
|
|
@ -11,7 +11,7 @@ describe('Two Factor', () => {
|
|||
it('should enable two factor to sysadmin', () => {
|
||||
cy.request(
|
||||
'PATCH',
|
||||
`http://localhost:3000/api/VnUsers/${userId}/update-user?access_token=DEFAULT_TOKEN`,
|
||||
`/api/VnUsers/${userId}/update-user?access_token=DEFAULT_TOKEN`,
|
||||
{ twoFactor: 'email' }
|
||||
);
|
||||
});
|
||||
|
@ -41,7 +41,7 @@ describe('Two Factor', () => {
|
|||
|
||||
// Get code from mail
|
||||
cy.request(
|
||||
`http://localhost:3000/api/Mails?filter=%7B%22where%22%3A%20%7B%22receiver%22%3A%20%22${username}%40mydomain.com%22%7D%2C%20%22order%22%3A%20%5B%22id%20DESC%22%5D%7D&access_token=DEFAULT_TOKEN`
|
||||
`/api/Mails?filter=%7B%22where%22%3A%20%7B%22receiver%22%3A%20%22${username}%40mydomain.com%22%7D%2C%20%22order%22%3A%20%5B%22id%20DESC%22%5D%7D&access_token=DEFAULT_TOKEN`
|
||||
).then((response) => {
|
||||
const tempDiv = document.createElement('div');
|
||||
tempDiv.innerHTML = response.body[0].body;
|
||||
|
|
Loading…
Reference in New Issue