eduardomoroni/trading-card-manager

View on GitHub
.circleci/config.yml

Summary

Maintainability
Test Coverage
version: 2.1
orbs:
  cypress: cypress-io/cypress@1.3.0

workflows:
  version: 2.1
  Backend-Build-Pipeline:
    jobs:
      - gitclone
      - build-backend:
          requires:
            - gitclone
      - test-backend:
          requires:
            - build-backend
      - sonar-backend:
          context: mtgx-web-context
          requires:
            - test-backend
      - deploy-backend:
          context: mtgx-web-context
          requires:
            - test-backend
          filters:
            branches:
              only:
                - master
  Frontend-Build-Pipeline:
    jobs:
      - gitclone
      - build-frontend:
          requires:
            - gitclone
      - test-frontend:
          requires:
            - build-frontend
      - sonar-frontend:
          context: mtgx-web-context
          requires:
            - test-frontend
      - deploy-frontend:
          context: mtgx-web-context
          requires:
            - test-frontend
          filters:
            branches:
              only:
                - master

executors:
  sonar-scaner:
    docker:
      - image: eduardomoroni/sonar-scanner:ALPHA
    working_directory: /tmp/trading-card-manager
  frontend:
    environment:
      - CI: true
    docker:
      - image: circleci/node:12.18.3
    working_directory: /tmp/trading-card-manager/packages/frontend
  backend:
    environment:
      - CI: true
    docker:
      - image: circleci/node:12.18.3
    working_directory: /tmp/trading-card-manager/packages/backend
  cli:
    environment:
      - CI: true
    docker:
      - image: circleci/node@sha256:c6881bf3c9365341052e09f98fa61c0246810023787cbf1480ac30ba347ef033
    working_directory: /tmp/trading-card-manager

jobs:
  gitclone:
    working_directory: /tmp/trading-card-manager
    executor: frontend
    steps:
      - checkout
      - run:
          name: 'Npm Install'
          command: make install
      - persist_to_workspace:
          root: /tmp/trading-card-manager
          paths: .

  build-backend:
    executor: backend
    steps:
      - attach_workspace:
          at: /tmp/trading-card-manager
      - run:
          name: 'Npm Install'
          command: make install
      - persist_to_workspace:
          root: /tmp/trading-card-manager
          paths:
            - packages/backend

  test-backend:
    executor: backend
    steps:
      - attach_workspace:
          at: /tmp/trading-card-manager
      - run:
          name: 'CI Check'
          command: make test
      - store_artifacts:
          path: coverage
          prefix: coverage
      - persist_to_workspace:
          root: /tmp/trading-card-manager
          paths: packages/backend/functions/coverage

  sonar-backend:
    executor: sonar-scaner
    working_directory: /tmp/trading-card-manager/packages/backend
    steps:
      - attach_workspace:
          at: /tmp/trading-card-manager
      - run:
          name: 'Sonar'
          command: make sonarqube

  deploy-backend:
    executor: backend
    steps:
      - attach_workspace:
          at: /tmp/trading-card-manager
      - run:
          name: 'Deploy'
          command: make deploy-functions

  build-frontend:
    executor: frontend
    steps:
      - attach_workspace:
          at: /tmp/trading-card-manager
      - run:
          name: 'Npm Install'
          command: make install
      - persist_to_workspace:
          root: /tmp/trading-card-manager
          paths:
            - packages/frontend

  test-frontend:
    executor: frontend
    steps:
      - attach_workspace:
          at: /tmp/trading-card-manager
      - run:
          name: 'CI Check'
          command: make test
      - store_artifacts:
          path: coverage
          prefix: coverage
      - persist_to_workspace:
          root: /tmp/trading-card-manager
          paths: packages/frontend/coverage

  sonar-frontend:
    executor: sonar-scaner
    working_directory: /tmp/trading-card-manager/packages/frontend
    steps:
      - attach_workspace:
          at: /tmp/trading-card-manager
      - run:
          name: 'Sonar'
          command: make sonarqube

  deploy-frontend:
    executor: frontend
    steps:
      - attach_workspace:
          at: /tmp/trading-card-manager
      - run:
          name: 'Deploy'
          command: make deploy