diff --git a/.circleci/config.yml b/.circleci/config.yml index 0373f37..986801d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,6 @@ -version: 2 -jobs: +jobs: build: &shared-config - docker: + docker: - image: circleci/node:lts-fermium working_directory: ~/repo steps: @@ -15,32 +14,8 @@ jobs: paths: - node_modules key: dependencies-{{ checksum "package.json" }}-v1 - lint: - <<: *shared-config - steps: - - checkout - - restore_cache: - key: dependencies-{{ checksum "package.json" }}-v1 - - run: yarn lint - - run: yarn format:check - server-doc-build: - <<: *shared-config - steps: - - checkout - - restore_cache: - key: dependencies-{{ checksum "package.json" }}-v1 - - run: yarn doc:build - - run: - name: Copy deployment artifacts to workspace - command: | - cp docs/ /tmp/server-doc -r - - store_artifacts: - path: /tmp/server-doc - - persist_to_workspace: - root: /tmp - paths: - - server-doc - back-test-unit: + + test_unit: <<: *shared-config steps: - checkout @@ -49,9 +24,8 @@ jobs: - run: command: yarn test environment: - DATABASE_URL: postgres://$PG_USER:$PG_PWD@localhost:5432/$PG_DB - - back-test-e2e: + DATABASE_URL: postgres://psqluer:psqlpassword@localhost:5432/psqluer + end_to_end: docker: - image: circleci/node:lts-fermium - image: circleci/postgres:9.6.5 @@ -67,81 +41,49 @@ jobs: - run: command: yarn test:e2e environment: - DATABASE_URL: postgres://$PG_USER:$PG_PASS@localhost:5432/$PG_DB - docker-build-and-push: - working_directory: /dockerapp - docker: - - image: docker:17.05.0-ce-git + DATABASE_URL: $DATABASE_URL + lint: + <<: *shared-config steps: - checkout - - setup_remote_docker: - version: 19.03.13 - - run: - name: Build application Docker image - command: | - docker build -t app . - - deploy: - name: Publish application to docker hub - command: | - docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD - docker tag app $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:$CIRCLE_BUILD_NUM - docker tag app $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:latest - docker push $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:$CIRCLE_BUILD_NUM - docker push $DOCKERHUB_USERNAME/$DOCKERHUB_APP_NAME:latest - back-deploy-heroku: - docker: + - restore_cache: + key: dependencies-{{ checksum "package.json" }}-v1 + - run: yarn lint + - run: yarn format:check + + heroku_deploy: + docker: - image: buildpack-deps:trusty steps: - checkout - run: name: Heroku Deploy - command: git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git HEAD:main + command: git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git HEAD:main - run: name: Smoke Test command: | HTTPCODE=`curl -s -o /dev/null -w "%{http_code}" https://$HEROKU_APP_NAME.herokuapp.com/` - if [ "$HTTPCODE" -ne 200 ];then + if [ "$HTTPCODE" -ne 200 ];then echo "heroku app not responding, failing deploy" exit 1 - fi -workflows: - version: 2 - build-test-and-lint: - jobs: + fi + +version: 2 +workflows: + my_workflow: + jobs: - build - - back-test-unit: - requires: + - test_unit + - end_to_end: + requires: - build - - back-test-e2e: - requires: + - lint: + requires: - build - - lint: - requires: - - build - - docker-build-and-push: - requires: + - heroku_deploy: + requires: - build + - test_unit + - end_to_end - lint - - back-test-e2e - - back-test-unit - filters: - branches: - only: main - - back-deploy-heroku: - requires: - - build - - lint - - back-test-e2e - - back-test-unit - filters: - branches: - only: main - - server-doc-build: - requires: - - build - - lint - - back-test-e2e - - back-test-unit - filters: - branches: - only: main \ No newline at end of file + version: 2