wip docker to CI

This commit is contained in:
Andreani Jean
2023-09-11 17:43:59 +02:00
parent 56e2908f70
commit e580887969
8 changed files with 2130 additions and 28 deletions

View File

@@ -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

View File

@@ -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/'
}
})

View File

@@ -1,3 +1,3 @@
{
"api_url": "https://geovisio-proxy-dev.osc-fr1.scalingo.io/"
"api_url": "http://localhost:5000/"
}

View 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: {}

View 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

File diff suppressed because it is too large Load Diff

View File

@@ -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",

View File

@@ -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"