version: 2.1 orbs: node: circleci/node@5.1 aws-s3: circleci/aws-s3@3.1 jobs: build_and_test: executor: node/default steps: - checkout - node/install-packages: pkg-manager: npm - run: name: Run tests command: npm run lint - run: name: Build app command: npm run build - persist_to_workspace: root: ~/project paths: - . deploy: executor: node/default steps: - attach_workspace: at: ~/project - run: name: Known Hosts command: | mkdir ~/.ssh || : echo -e $KNOWN_HOSTS > ~/.ssh/known_hosts - run: name: Clean command: sh build/clean.sh - run: name: Deploy command: sh build/deploy.sh backup_to_s3: docker: - image: 'cimg/python:3.10' steps: - checkout - run: name: Known Hosts command: | mkdir ~/.ssh || : echo -e $KNOWN_HOSTS > ~/.ssh/known_hosts - run: name: Prepare filename command: | filename=windycoys-$(date +'%Y-%m-%dT%H-%M-%S').tgz echo "export filename='$filename'" >> $BASH_ENV - run: name: Prepare backups command: | ssh $SSH_USER@$SSH_IP "bash -c '\ source windycoys/.env rm -rf windycoys/backup mkdir -p windycoys/backup/data scp -r windycoys/wp-content windycoys/backup/data/ docker exec -t $DOCKER_DB_NAME /usr/bin/mysqldump \ -uroot --password=$DB_ROOT_PASSWORD \ $DB_NAME | gzip -9 > windycoys/backup/data/database.sql.gz /usr/bin/tar zcf windycoys/backup/windycoys.tgz windycoys/backup/data'" - run: name: Copy backup command: | scp $SSH_USER@$SSH_IP:~/windycoys/backup/windycoys.tgz ./ mv windycoys.tgz $filename - aws-s3/copy: aws-region: AWS_REGION aws-access-key-id: AWS_ACCESS_KEY_ID aws-secret-access-key: AWS_SECRET_ACCESS_KEY from: '$filename' to: 's3://$AWS_S3_BUCKET_NAME' workflows: test_my_app: jobs: - build_and_test: filters: branches: only: main - deploy: requires: - build_and_test filters: branches: only: main backup: triggers: - schedule: cron: "0 2 * * 1" filters: branches: only: - next jobs: - backup_to_s3