100 lines
2.6 KiB
YAML
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
|