forked from Ivasoft/geovisio-website
wip docker to CI
This commit is contained in:
@@ -10,7 +10,7 @@ variables:
|
||||
GITLAB_REGISTRY: registry.gitlab.com # We use docker.io for official images and gitlab's registry to store temporary images
|
||||
IMAGE_NAME: geovisio/api
|
||||
CI_IMAGE_CACHE: $GITLAB_REGISTRY/$IMAGE_NAME:build_cache
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_TLS_CERTDIR: ''
|
||||
|
||||
before_script:
|
||||
## chmod is unfortunately currently mandatory : https://github.com/nodejs/docker-node/issues/661
|
||||
@@ -36,14 +36,15 @@ test:unit:
|
||||
|
||||
test:e2e:
|
||||
stage: Test
|
||||
image: cypress/browsers:node-18.16.0-chrome-113.0.5672.92-1-ff-113.0-edge-113.0.1774.35-1
|
||||
image: alpine
|
||||
services:
|
||||
- docker:dind
|
||||
script:
|
||||
- yarn install
|
||||
- ./node_modules/.bin/cypress install
|
||||
- echo "VITE_API_URL=https://geovisio-proxy-dev.osc-fr1.scalingo.io/" > .env
|
||||
- echo "VITE_ENV=dev" >> .env
|
||||
- PORT=5173 yarn start &
|
||||
- yarn test:e2e
|
||||
- apk add --update --no-cache docker-cli docker-cli-compose git
|
||||
- PROJECT_DIR=$PWD docker compose -f cypress/docker-compose-geovisio.yml -f cypress/docker-compose-gitlab-override.yml run --rm integration-test-runner
|
||||
after_script:
|
||||
- PROJECT_DIR=$PWD docker compose -f cypress/docker-compose-geovisio.yml -f cypress/docker-compose-gitlab-override.yml logs || true
|
||||
- PROJECT_DIR=$PWD docker compose -f cypress/docker-compose-geovisio.yml -f cypress/docker-compose-gitlab-override.yml down || true
|
||||
coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
|
||||
artifacts:
|
||||
when: always
|
||||
@@ -74,7 +75,7 @@ deploy:develop:
|
||||
stage: Deploy
|
||||
image: docker:latest
|
||||
services:
|
||||
- docker:dind
|
||||
- docker:dind
|
||||
before_script:
|
||||
# login to the gitlab docker registry to use the cache and to publish
|
||||
- echo $CI_DEPLOY_PASSWORD | docker login -u $CI_DEPLOY_USER --password-stdin $GITLAB_REGISTRY
|
||||
@@ -106,7 +107,7 @@ deploy:latest:
|
||||
stage: Deploy
|
||||
image: docker:latest
|
||||
services:
|
||||
- docker:dind
|
||||
- docker:dind
|
||||
before_script:
|
||||
# login to the gitlab docker registry to use the cache and to publish
|
||||
- echo $CI_DEPLOY_PASSWORD | docker login -u $CI_DEPLOY_USER --password-stdin $GITLAB_REGISTRY
|
||||
|
||||
@@ -12,6 +12,6 @@ export default defineConfig({
|
||||
setupNodeEvents(on, config) {
|
||||
// implement node event listeners here
|
||||
},
|
||||
baseUrl: 'https://geovisio-proxy-dev.osc-fr1.scalingo.io/'
|
||||
baseUrl: 'http://localhost:5173/'
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"api_url": "https://geovisio-proxy-dev.osc-fr1.scalingo.io/"
|
||||
"api_url": "http://localhost:5000/"
|
||||
}
|
||||
|
||||
80
cypress/docker-compose-geovisio.yml
Normal file
80
cypress/docker-compose-geovisio.yml
Normal file
@@ -0,0 +1,80 @@
|
||||
services:
|
||||
geovisio-api:
|
||||
image: geovisio/api:develop
|
||||
command: api
|
||||
restart: always
|
||||
ports:
|
||||
- 5123:5000
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
auth:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
DB_URL: postgres://gvs:gvspwd@db/geovisio
|
||||
PICTURE_PROCESS_THREADS_LIMIT: 2
|
||||
PICTURE_PROCESS_DERIVATES_STRATEGY: ON_DEMAND
|
||||
API_FORCE_AUTH_ON_UPLOAD: 'true'
|
||||
OAUTH_CLIENT_ID: geovisio
|
||||
OAUTH_CLIENT_SECRET: what_a_secret
|
||||
OAUTH_OIDC_URL: http://keycloak.localtest.me:8182/realms/geovisio
|
||||
OAUTH_PROVIDER: oidc
|
||||
FLASK_SECRET_KEY: a_very_secret_key_never_to_be_used_in_production
|
||||
FLASK_SESSION_COOKIE_DOMAIN: localtest.me
|
||||
healthcheck:
|
||||
test: python -c "import requests; requests.get('http://localhost:5000/api').raise_for_status()"
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
networks:
|
||||
keycloak: {}
|
||||
db: {}
|
||||
geovisio:
|
||||
aliases:
|
||||
- api.geovisio.localtest.me
|
||||
|
||||
db:
|
||||
image: postgis/postgis:13-3.2
|
||||
environment:
|
||||
- POSTGRES_USER=gvs
|
||||
- POSTGRES_PASSWORD=gvspwd
|
||||
- POSTGRES_DB=geovisio
|
||||
healthcheck:
|
||||
test: pg_isready -q -d $$POSTGRES_DB -U $$POSTGRES_USER
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
db: {}
|
||||
|
||||
auth:
|
||||
command: start-dev --import-realm
|
||||
environment:
|
||||
GEOVISIO_BASE_URL: http://api.geovisio.localtest.me:5123
|
||||
GEOVISIO_CLIENT_SECRET: what_a_secret
|
||||
KEYCLOAK_ADMIN: admin
|
||||
KEYCLOAK_ADMIN_PASSWORD: password
|
||||
KEYCLOAK_FRONTEND_URL: http://geovisio-api:5000/api/auth/login
|
||||
KC_HTTP_PORT: 8182
|
||||
ports:
|
||||
- '8182:8182'
|
||||
healthcheck:
|
||||
test: curl --fail http://localhost:8182/realms/geovisio
|
||||
timeout: 5s
|
||||
interval: 2s
|
||||
retries: 20
|
||||
start_period: 5s
|
||||
image: quay.io/keycloak/keycloak:20.0.1
|
||||
volumes:
|
||||
- ./keycloak-realm.json:/opt/keycloak/data/import/geovisio_realm.json
|
||||
|
||||
networks:
|
||||
keycloak:
|
||||
aliases:
|
||||
- keycloak.localtest.me
|
||||
|
||||
networks:
|
||||
db: {}
|
||||
keycloak: {}
|
||||
geovisio: {}
|
||||
34
cypress/docker-compose-gitlab-override.yml
Normal file
34
cypress/docker-compose-gitlab-override.yml
Normal file
@@ -0,0 +1,34 @@
|
||||
# Docker-compose used in gitlab-ci to run a container having access to all the other containers
|
||||
services:
|
||||
web:
|
||||
image: node:18.16.0-alpine
|
||||
volumes:
|
||||
- $PROJECT_DIR:/src
|
||||
working_dir: /src
|
||||
command: >
|
||||
sh -c "yarn install
|
||||
&& echo "VITE_API_URL=http://api.geovisio.localtest.me:5000" > .env
|
||||
&& echo "VITE_ENV=dev" >> .env
|
||||
&& yarn start"
|
||||
environment:
|
||||
PORT: 5173
|
||||
depends_on:
|
||||
geovisio-api:
|
||||
condition: service_healthy
|
||||
auth:
|
||||
condition: service_healthy
|
||||
integration-test-runner:
|
||||
image: cypress/included:cypress-12.17.3-node-18.16.1-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1
|
||||
volumes:
|
||||
- $PROJECT_DIR:/src
|
||||
working_dir: /src
|
||||
environment:
|
||||
- CYPRESS_baseUrl=http://web
|
||||
command: yarn add --dev cypress && ./node_modules/.bin/cypress install && yarn test:e2e
|
||||
depends_on:
|
||||
web:
|
||||
condition: service_started
|
||||
networks:
|
||||
db: {}
|
||||
keycloak: {}
|
||||
geovisio: {}
|
||||
1987
cypress/keycloak-realm.json
Normal file
1987
cypress/keycloak-realm.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
"name": "geovisio-website",
|
||||
"version": "2.3.0",
|
||||
"engines": {
|
||||
"node": "18.16.0"
|
||||
"node": "18.16.1"
|
||||
},
|
||||
"private": true,
|
||||
"scripts": {
|
||||
@@ -53,7 +53,7 @@
|
||||
"@vue/eslint-config-typescript": "^11.0.0",
|
||||
"@vue/test-utils": "^2.2.4",
|
||||
"@vue/tsconfig": "^0.1.3",
|
||||
"cypress": "^12.12.0",
|
||||
"cypress": "^13.1.0",
|
||||
"eslint": "^8.29.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-import-resolver-typescript": "^3.5.5",
|
||||
|
||||
28
yarn.lock
28
yarn.lock
@@ -208,10 +208,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
|
||||
integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
|
||||
|
||||
"@cypress/request@2.88.12":
|
||||
version "2.88.12"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590"
|
||||
integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==
|
||||
"@cypress/request@^3.0.0":
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.1.tgz#72d7d5425236a2413bd3d8bb66d02d9dc3168960"
|
||||
integrity sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==
|
||||
dependencies:
|
||||
aws-sign2 "~0.7.0"
|
||||
aws4 "^1.8.0"
|
||||
@@ -226,7 +226,7 @@
|
||||
json-stringify-safe "~5.0.1"
|
||||
mime-types "~2.1.19"
|
||||
performance-now "^2.1.0"
|
||||
qs "~6.10.3"
|
||||
qs "6.10.4"
|
||||
safe-buffer "^5.1.2"
|
||||
tough-cookie "^4.1.3"
|
||||
tunnel-agent "^0.6.0"
|
||||
@@ -2078,12 +2078,12 @@ csstype@^3.1.2:
|
||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
|
||||
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
|
||||
|
||||
cypress@^12.12.0:
|
||||
version "12.17.4"
|
||||
resolved "https://registry.yarnpkg.com/cypress/-/cypress-12.17.4.tgz#b4dadf41673058493fa0d2362faa3da1f6ae2e6c"
|
||||
integrity sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==
|
||||
cypress@^13.1.0:
|
||||
version "13.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.1.0.tgz#18f268e66662cd91b1766db18bd1f63a66592205"
|
||||
integrity sha512-LUKxCYlB973QBFls1Up4FAE9QIYobT+2I8NvvAwMfQS2YwsWbr6yx7y9hmsk97iqbHkKwZW3MRjoK1RToBFVdQ==
|
||||
dependencies:
|
||||
"@cypress/request" "2.88.12"
|
||||
"@cypress/request" "^3.0.0"
|
||||
"@cypress/xvfb" "^1.2.4"
|
||||
"@types/node" "^16.18.39"
|
||||
"@types/sinonjs__fake-timers" "8.1.1"
|
||||
@@ -5597,10 +5597,10 @@ punycode@^2.1.0, punycode@^2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
|
||||
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
|
||||
|
||||
qs@~6.10.3:
|
||||
version "6.10.5"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4"
|
||||
integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ==
|
||||
qs@6.10.4:
|
||||
version "6.10.4"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.4.tgz#6a3003755add91c0ec9eacdc5f878b034e73f9e7"
|
||||
integrity sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==
|
||||
dependencies:
|
||||
side-channel "^1.0.4"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user