573 lines
15 KiB
YAML
573 lines
15 KiB
YAML
# workflow
|
|
stages:
|
|
- build
|
|
- test
|
|
- integration
|
|
- acceptance
|
|
- release
|
|
- deployment
|
|
|
|
# default image for jobs
|
|
default:
|
|
image: node:11
|
|
|
|
# cache modules between jobs
|
|
cache:
|
|
key: ${CI_COMMIT_REF_SLUG}
|
|
paths:
|
|
- .npm/
|
|
|
|
## BUILD ##
|
|
|
|
build:
|
|
stage: build
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- cp config.sample.json config.json
|
|
- npm run build
|
|
artifacts:
|
|
when: on_success
|
|
expire_in: 1 day
|
|
paths:
|
|
- dist/
|
|
tags:
|
|
- test
|
|
|
|
## TESTING ##
|
|
|
|
test:e2e:
|
|
stage: test
|
|
image: cypress/included:4.5.0
|
|
services:
|
|
- name: ${CI_REGISTRY_IMAGE}/server:0.1
|
|
before_script:
|
|
# install missing dependencies
|
|
- npm install -g sirv-cli
|
|
# making sure the process is orphan
|
|
- sirv dist --port 3000 > /dev/null 2>&1 &
|
|
script:
|
|
- cypress run -e CYPRESS_baseUrl=http://localhost:3000
|
|
tags:
|
|
- test
|
|
|
|
## VALIDATION ##
|
|
|
|
test1:
|
|
stage: integration
|
|
environment:
|
|
name: test1
|
|
url: https://test1.startinblox.com
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_TEST1" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* test1@astral.startinblox.com:~/front/
|
|
only:
|
|
- /^feature\/.*/
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
test2:
|
|
stage: integration
|
|
environment:
|
|
name: test2
|
|
url: https://test2.startinblox.com
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_TEST2" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* test2@astral.startinblox.com:~/front/
|
|
only:
|
|
- /^feature\/.*/
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
test3:
|
|
stage: integration
|
|
environment:
|
|
name: test3
|
|
url: https://test3.startinblox.com
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_TEST3" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* test3@astral.startinblox.com:~/front/
|
|
only:
|
|
- /^feature\/.*/
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
stg1:
|
|
stage: acceptance
|
|
environment:
|
|
name: stg1
|
|
url: https://stg1.startinblox.com
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_STG1" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* stg1@astral.startinblox.com:~/front/
|
|
only:
|
|
- /^release\/.*/
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
stg2:
|
|
stage: acceptance
|
|
environment:
|
|
name: stg2
|
|
url: https://stg2.startinblox.com
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_STG2" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* stg2@astral.startinblox.com:~/front/
|
|
only:
|
|
- /^release\/.*/
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
## RELEASE TAGGING ##
|
|
|
|
publish:
|
|
stage: release
|
|
script:
|
|
- npm install -g semantic-release@v17 @semantic-release/gitlab
|
|
- semantic-release
|
|
only:
|
|
- master
|
|
tags:
|
|
- deploy
|
|
|
|
## LIVE DEPLOYMENTS ##
|
|
|
|
community:
|
|
stage: deployment
|
|
environment:
|
|
name: community
|
|
url: https://community.startinblox.com
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_COMMUNITY" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* community@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
nantes:
|
|
stage: deployment
|
|
environment:
|
|
name: nantes
|
|
url: https://app.nantes.happy-dev.fr
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_NANTESHD" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* nantes@ssh-nantes.happy-dev.fr:~/sib/www/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
paris:
|
|
stage: deployment
|
|
environment:
|
|
name: paris
|
|
url: https://app.paris.happy-dev.fr
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_PARIS" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* paris@ssh-paris.happy-dev.fr:~/sib/www/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
smarttoulouse:
|
|
stage: deployment
|
|
environment:
|
|
name: smarttoulouse
|
|
url: https://smart-toulouse.happy-dev.fr
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_TOULOUSE" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* smart-toulouse@ssh-smart-toulouse.happy-dev.fr:~/www/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
volumes:
|
|
stage: deployment
|
|
environment:
|
|
name: volumes
|
|
url: https://volumes.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_VOLUMES" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* volumes-sib@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
communityhubl:
|
|
stage: deployment
|
|
environment:
|
|
name: communityhubl
|
|
url: https://community.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_HUBL_COMMUNITY" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* community-hubl@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
playground:
|
|
stage: deployment
|
|
environment:
|
|
name: playground
|
|
url: https://playground.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_PLAYGROUND" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* playground@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
casaco:
|
|
stage: deployment
|
|
environment:
|
|
name: casaco
|
|
url: https://casaco.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_CASACO" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* casaco@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
opteos:
|
|
stage: deployment
|
|
environment:
|
|
name: opteos
|
|
url: https://opteos.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_OPTEOS" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* opteos@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
fnk:
|
|
stage: deployment
|
|
environment:
|
|
name: fnk
|
|
url: https://fnk.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_FNK" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* fnk@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
labriqueterie:
|
|
stage: deployment
|
|
environment:
|
|
name: labriqueterie
|
|
url: https://labriqueterie.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_LABRIQUETERIE" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* labriqueterie@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
facttic:
|
|
stage: deployment
|
|
environment:
|
|
name: facttic
|
|
url: https://facttic.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_FACTTIC" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* facttic@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
cotech:
|
|
stage: deployment
|
|
environment:
|
|
name: cotech
|
|
url: https://hubl.coops.tech
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_COTECH" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* cotech@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
lelaptop:
|
|
stage: deployment
|
|
environment:
|
|
name: lelaptop
|
|
url: https://lelaptop.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_LELAPTOP" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* lelaptop@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
virtualassembly:
|
|
stage: deployment
|
|
environment:
|
|
name: virtualassembly
|
|
url: https://virtual-assembly.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_VIRTUAL_ASS" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* virtual-assembly@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
ouisharequebec:
|
|
stage: deployment
|
|
environment:
|
|
name: ouisharequebec
|
|
url: https://ouishare-quebec.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_OUISHARE" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* ouishare-quebec@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
nouvelleaquitaine:
|
|
stage: deployment
|
|
environment:
|
|
name: nouvelleaquitaine
|
|
url: https://app.nouvelle-aquitaine.happy-dev.fr
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_NVLE_AQ" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* nouvelle-aquitaine@ssh-nouvelle-aquitaine.happy-dev.fr:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
paca:
|
|
stage: deployment
|
|
environment:
|
|
name: paca
|
|
url: https://app.paca.happy-dev.fr
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_PACA" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* paca@ssh-paca.happy-dev.fr:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
strasbourg:
|
|
stage: deployment
|
|
environment:
|
|
name: strasbourg
|
|
url: https://app.strasbourg.happy-dev.fr
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_STRASBOURG" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* strasbourg@ssh-strasbourg.happy-dev.fr:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
bretagne:
|
|
stage: deployment
|
|
environment:
|
|
name: bretagne
|
|
url: https://app.bretagne.happy-dev.fr
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_BRETAGNE" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* bretagne@ssh-bretagne.happy-dev.fr:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
lemans:
|
|
stage: deployment
|
|
environment:
|
|
name: lemans
|
|
url: https://app.lemans.happy-dev.fr
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_LEMANS" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* lemans@ssh-lemans.happy-dev.fr:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
apidays:
|
|
stage: deployment
|
|
environment:
|
|
name: apidays
|
|
url: https://apidays.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_APIDAYS" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* apidays@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|
|
|
|
georgetownuni:
|
|
stage: deployment
|
|
environment:
|
|
name: georgetownuni
|
|
url: https://georgetown-uni.hubl.world
|
|
before_script:
|
|
- npm ci --cache .npm --prefer-offline --only=production
|
|
script:
|
|
- echo "$APP_CONFIG_GEORGETOWNUNI" > config.json
|
|
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
|
|
- npm run build
|
|
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* georgetown-uni@astral.startinblox.com:~/front/
|
|
only:
|
|
- master
|
|
when: manual
|
|
tags:
|
|
- deploy
|