# 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 - npx run codegen # 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-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