topogigiovanni
5/6/2020 - 1:28 AM

config.yaml circleci

exemplo de config fazendo copia para servidor via ssh ideal para deploy de arquivos estáticos. não recomendado para deploy de aplicações node pois podem depender de dependencias no node_modules

circleci

version: 2.1
orbs:
  node: circleci/node@1.1.6
jobs:
  build-and-test:
    executor:
      name: node/default
    steps:
      - checkout
      - node/with-cache:
          steps:
            - run: npm install
            - run: npm test
            - run: npm run build:production
            - run: ssh -oStrictHostKeyChecking=no -v $SSH_USER@$SSH_HOST -t "cd /var/www/ && sudo rm -rf $APP_FOLDER && sudo mkdir $APP_FOLDER && sudo chmod 777 $APP_FOLDER && exit; bash --login"
            - run: scp -oStrictHostKeyChecking=no -rp ./dist/* $SSH_USER@$SSH_HOST:/var/www/$APP_FOLDER
  deploy:
    # executor:
    #   name: node/default
    machine:
      enabled: true
    steps:
       # - run:
       #    name: Get sshpass
       #    command: sudo apt-get install sshpass
       - run:
          name: Deploy Over SSH
          command: |
            ssh -oStrictHostKeyChecking=no -v $SSH_USER@$SSH_HOST -t "cd /var/www/ && sudo rm -rf $APP_FOLDER && sudo git clone https://github.com/topogigiovanni/piral-service.git $APP_FOLDER && cd $APP_FOLDER && sudo sh post_deployment.sh && exit; bash --login"

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build-and-test:
      # - deploy:
          # requires:
          #   - build-and-test # only deploy once build job has completed
          filters:
            branches:
              only: master # only deploy on the master branch