Files
windycoys/.circleci/config.yml
2023-02-02 22:30:00 +00:00

100 lines
2.6 KiB
YAML

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