ktyl.dev/.drone.yml

81 lines
1.8 KiB
YAML

kind: pipeline
type: docker
name: deploy
steps:
- name: submodules
image: archlinux
commands:
- pacman -Syu --noconfirm git git-lfs >/dev/null
- git lfs install
- git submodule update --init --recursive
- cd blog
- echo $(pwd)
- git lfs install
- git lfs fetch --all
- git lfs ls-files
- name: build
image: archlinux
environment:
PYTHON_ENV: pyenv python python-pipenv python-setuptools
commands:
# set up python
- pacman -Syu --noconfirm
- pacman -Sy --noconfirm make $PYTHON_ENV > /dev/null
- pipenv install
# build site
- make all
- name: deploy
image: ubuntu
environment:
HOST:
from_secret: host
USER:
from_secret: user
SSH_KEY:
from_secret: ssh_key
commands:
# install deps
- apt-get update -qq > /dev/null
- apt-get install ssh rsync -qq > /dev/null
# configure ssh
- eval $(ssh-agent -s)
- mkdir -p ~/.ssh
- echo "$SSH_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- ssh-add
- echo "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
# prepare vars for host operations
- host_dir="/var/www/$${HOST}"
- backup_dir="~/backups/$${HOST}/$${HOST}-$${DRONE_STAGE_STARTED}"
- host="$${USER}@$${HOST}"
# tasks
- make_backup_dir="mkdir -p $backup_dir"
- copy_backup_files="rsync -rP $host_dir $backup_dir"
- delete_current_files="sudo -n rm -r $host_dir"
- deploy_new_files="sudo -n mv $${HOST} $host_dir"
# archive old site
- ssh $host $make_backup_dir
- ssh $host $copy_backup_files
# deploy new site
- rsync -rP site/* "$host:$${HOST}"
- ssh $host $delete_current_files
- ssh $host $deploy_new_files
when:
branch:
- main
event:
exclude:
- pull_request