247 lines
8.2 KiB
YAML
247 lines
8.2 KiB
YAML
# Only use spaces to indent your .yml configuration.
|
|
# -----
|
|
# You can specify a custom docker image from Docker Hub as your build environment.
|
|
image:
|
|
name: iterativ/skillbox-test:python-3.11.7
|
|
|
|
clone:
|
|
depth: full
|
|
|
|
definitions:
|
|
services:
|
|
postgres:
|
|
image: postgres
|
|
variables:
|
|
POSTGRES_HOST_AUTH_METHOD: trust
|
|
caches:
|
|
npm: $HOME/.npm
|
|
cypress: $HOME/.cache/Cypress
|
|
clientmodules: client/node_modules
|
|
steps:
|
|
- &lint
|
|
name: lint
|
|
caches:
|
|
- clientmodules
|
|
script:
|
|
- npm install --prefix client
|
|
- npm run lint --prefix client
|
|
- npm run codegen --prefix client # this will exit with an error code if errors are found, we can ignore the generated files
|
|
- &unittest-python
|
|
name: run python unit tests
|
|
caches:
|
|
- pip
|
|
services:
|
|
- postgres
|
|
script: # Modify the commands below to build your repository.
|
|
- &setup-tests source setup-for-tests.sh
|
|
- ./server/run_unittests_coverage.sh
|
|
- &cypress-test
|
|
name: run cypress end-to-end tests
|
|
caches:
|
|
- pip
|
|
- node
|
|
- clientmodules
|
|
- npm
|
|
- cypress
|
|
artifacts:
|
|
- client/cypress/**/*.png
|
|
- client/cypress/**/*.mp4
|
|
services:
|
|
- postgres
|
|
script:
|
|
- echo "This pipeline rules!"
|
|
- *setup-tests
|
|
- export CYPRESS_DOWNLOAD_MIRROR=https://cy-cdn.currents.dev
|
|
- npm ci --prefix client
|
|
- npm run "install:cypress" --prefix client
|
|
- psql -U $DATABASE_USER -h $DATABASE_HOST -c "create database $DATABASE_NAME"
|
|
- python server/manage.py dummy_data
|
|
- python server/manage.py runserver 2>&1 > /dev/null &
|
|
- npm run build --prefix client
|
|
- curl http://localhost:8000/beta-login
|
|
- npm run --prefix client test:cypress:e2e
|
|
- &frontend-test
|
|
name: run cypress frontend tests
|
|
caches:
|
|
- node
|
|
- clientmodules
|
|
- npm
|
|
- cypress
|
|
artifacts:
|
|
- client/cypress/**/*.png
|
|
- client/cypress/**/*.mp4
|
|
script:
|
|
- export CYPRESS_DOWNLOAD_MIRROR=https://cy-cdn.currents.dev
|
|
- npm ci --prefix client
|
|
- npm run "install:cypress" --prefix client
|
|
- npm run dev --prefix client 2>&1 > /dev/null &
|
|
- curl http://localhost:8080/beta-login
|
|
- npm run --prefix client test:cypress:frontend
|
|
- &frontend-test-parallel
|
|
name: run cypress frontend tests parallel
|
|
caches:
|
|
- node
|
|
- clientmodules
|
|
- npm
|
|
- cypress
|
|
artifacts:
|
|
- client/cypress/**/*.png
|
|
- client/cypress/**/*.mp4
|
|
script:
|
|
- export CYPRESS_DOWNLOAD_MIRROR=https://cy-cdn.currents.dev
|
|
- npm ci --prefix client
|
|
- npm run "install:cypress" --prefix client
|
|
- npm run dev --prefix client 2>&1 > /dev/null &
|
|
- sleep 5
|
|
- curl http://localhost:8080/beta-login
|
|
- npm run --prefix client currents
|
|
- &component-test
|
|
name: run cypress component tests
|
|
caches:
|
|
- node
|
|
- clientmodules
|
|
- npm
|
|
- cypress
|
|
artifacts:
|
|
- client/cypress/**/*.png
|
|
- client/cypress/**/*.mp4
|
|
script:
|
|
- npm ci --prefix client
|
|
- npm run "install:cypress" --prefix client
|
|
- npm run dev --prefix client 2>&1 > /dev/null &
|
|
- curl http://localhost:8080/beta-login
|
|
- npm run --prefix client cypress:component:test
|
|
- &jest-test
|
|
name: run jest tests
|
|
caches:
|
|
- node
|
|
- clientmodules
|
|
script:
|
|
- echo "This pipeline rules!"
|
|
- *setup-tests
|
|
- npm install --prefix client
|
|
- cd client
|
|
- npm run test:unit
|
|
- &deploy-dev
|
|
name: deploy to dev on Heroku
|
|
deployment: dev
|
|
trigger: manual
|
|
script:
|
|
- git push --force https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-dev.git HEAD:master
|
|
- &deploy-academy
|
|
name: deploy to iterativ-academy on Heroku
|
|
deployment: academy-stage
|
|
script:
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/iterativ-academy.git HEAD:master
|
|
- &deploy-stage
|
|
name: deploy to stage on Heroku
|
|
deployment: stage
|
|
script:
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-stage.git develop:master
|
|
- &deploy-preprod-manual
|
|
name: deploy to pre-prod environments on heroku
|
|
trigger: manual
|
|
deployment: preprod
|
|
script:
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-preprod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-kv-preprod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-dha-preprod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-dhf-preprod.git HEAD:master
|
|
- &deploy-preprod-parallel
|
|
- parallel:
|
|
- steps:
|
|
- step:
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-preprod.git HEAD:master
|
|
- step:
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-kv-preprod.git HEAD:master
|
|
- step:
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-dha-preprod.git HEAD:master
|
|
- step:
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-dhf-preprod.git HEAD:master
|
|
- &deploy-prod-manual
|
|
name: deploy to prod environments on heroku
|
|
trigger: manual
|
|
deployment: prod
|
|
script:
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-prod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-kv-prod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-dha-prod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-dhf-prod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-preprod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-kv-preprod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-dha-preprod.git HEAD:master
|
|
- git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-dhf-preprod.git HEAD:master
|
|
|
|
pipelines:
|
|
default:
|
|
- parallel:
|
|
- step: *lint
|
|
- step: *unittest-python
|
|
- step: *cypress-test
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *jest-test
|
|
- step: *deploy-dev
|
|
|
|
branches:
|
|
master:
|
|
- parallel:
|
|
- step: *unittest-python
|
|
- step: *cypress-test
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *jest-test
|
|
- step: *deploy-preprod-manual
|
|
|
|
develop:
|
|
- parallel:
|
|
- step: *lint
|
|
- step: *unittest-python
|
|
- step: *cypress-test
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *jest-test
|
|
- parallel:
|
|
- step: *deploy-stage
|
|
- step: *deploy-academy
|
|
- step: *deploy-preprod-manual
|
|
|
|
tags:
|
|
v202*:
|
|
- parallel:
|
|
- step: *unittest-python
|
|
- step: *cypress-test
|
|
- step: *jest-test
|
|
- step: *deploy-prod-manual
|
|
|
|
custom:
|
|
cypress-parallel:
|
|
- parallel:
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
- step: *frontend-test-parallel
|
|
|
|
preprod-parallel:
|
|
- step:
|
|
name: "First step has to be manual"
|
|
trigger: manual
|
|
script:
|
|
- echo "This is for testing";
|
|
- *deploy-preprod-parallel
|
|
|