diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index be9a1c54..255bcb5a 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -20,128 +20,122 @@ definitions: npm: $HOME/.npm cypress: $HOME/.cache/Cypress clientmodules: client/node_modules - - -aliases: -- &lint - name: lint - caches: + steps: + - &lint + name: lint + caches: + - clientmodules + script: + - npm install --prefix client + - npm run lint --prefix client + - &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 - script: + - npm + - cypress + artifacts: + - client/cypress/**/*.png + - client/cypress/**/*.mp4 + services: + - postgres + script: + - echo "This pipeline rules!" + - *setup-tests + - 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: + - npm ci --prefix client + - npm run "install:cypress" --prefix client + - npm run dev --prefix client 2>&1 > /dev/null & + - sleep 30 + - curl http://localhost:8080/beta-login + - npm run --prefix client test:cypress:frontend + - &frontend-test-parallel + name: run cypress frontend 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 & + - sleep 30 + - curl http://localhost:8080/beta-login + - source bin/run-cypress-parallel.sh + - &jest-test + name: run jest tests + caches: + - node + - clientmodules + script: + - echo "This pipeline rules!" + - *setup-tests - npm install --prefix client - - npm run lint --prefix client -- &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 - - 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: - - npm ci --prefix client - - npm run "install:cypress" --prefix client - - npm run dev --prefix client 2>&1 > /dev/null & - - sleep 30 - - curl http://localhost:8080/beta-login - - npm run --prefix client test:cypress:frontend -- &frontend-test-parallel - name: run cypress frontend 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 & - - sleep 30 - - curl http://localhost:8080/beta-login - - source bin/run-cypress-parallel.sh -- &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-manual - name: deploy to iterativ-academy on Heroku - deployment: academy-stage - trigger: manual - script: - - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/iterativ-academy.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-prod-manual - name: deploy to skillbox-prod on Heroku - deployment: prod - trigger: manual - script: - - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-prod.git HEAD:master -- &deploy-my-kv-prod-manual - name: deploy to my-kv-prod on Heroku - deployment: my-kv-prod - trigger: manual - script: - - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-kv-prod.git HEAD:master + - 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 prod environments on heroku + trigger: manual + deployment: preprod + script: + - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/skillbox-preprod.git master:master + - git push https://heroku:$HEROKU_API_KEY@git.heroku.com/my-kv-preprod.git master: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 pipelines: default: @@ -158,7 +152,9 @@ pipelines: - parallel: - step: *unittest-python - step: *cypress-test + - step: *frontend-test - step: *jest-test + - step: *deploy-preprod-manual develop: - parallel: @@ -170,6 +166,7 @@ pipelines: - parallel: - step: *deploy-stage - step: *deploy-academy + - step: *deploy-preprod-manual tags: v202*: @@ -177,19 +174,9 @@ pipelines: - step: *unittest-python - step: *cypress-test - step: *jest-test - - parallel: - - step: *deploy-prod-manual - - step: *deploy-my-kv-prod-manual - - custom: - prod: - - parallel: - - step: *unittest-python - - step: *cypress-test - - step: *jest-test - - parallel: - step: *deploy-prod-manual + custom: cypress-parallel: - parallel: - step: *frontend-test-parallel