46 lines
1.7 KiB
YAML
46 lines
1.7 KiB
YAML
name: deploy
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Show toolchain
|
|
run: node -v && npm -v
|
|
|
|
- name: Configure SSH
|
|
env:
|
|
DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }}
|
|
MX_HOST_KEY: ${{ secrets.MX_HOST_KEY }}
|
|
run: |
|
|
install -m 700 -d ~/.ssh
|
|
printf '%s\n' "$DEPLOY_SSH_KEY" > ~/.ssh/id_ed25519
|
|
printf '%s\n' "$MX_HOST_KEY" > ~/.ssh/known_hosts
|
|
chmod 600 ~/.ssh/id_ed25519 ~/.ssh/known_hosts
|
|
|
|
- name: Deploy
|
|
run: |
|
|
set -euo pipefail
|
|
REL="$(date -u +%Y%m%dT%H%M%SZ)-$(printf %s "$GITHUB_SHA" | cut -c1-7)"
|
|
|
|
# server release: server/ + shared src/ (imports ../src)
|
|
ssh deploy@10.8.0.1 "mkdir -p /srv/ravplan/releases/$REL"
|
|
rsync -a --exclude=node_modules \
|
|
--link-dest=/srv/ravplan/current/server \
|
|
server/ deploy@10.8.0.1:/srv/ravplan/releases/"$REL"/server/
|
|
rsync -a \
|
|
--link-dest=/srv/ravplan/current/src \
|
|
src/ deploy@10.8.0.1:/srv/ravplan/releases/"$REL"/src/
|
|
ssh deploy@10.8.0.1 "cd /srv/ravplan/releases/$REL/server && npm ci --omit=dev"
|
|
ssh deploy@10.8.0.1 "deploy-site ravplan-server $REL"
|
|
ssh deploy@10.8.0.1 "sudo -n systemctl restart ravplan.service"
|
|
|
|
# static frontend
|
|
rsync -a --exclude=.git --exclude=.gitea --exclude=server --exclude=node_modules \
|
|
--link-dest=/var/www/ravaged-planet/current \
|
|
./ deploy@10.8.0.1:/var/www/ravaged-planet/releases/"$REL"/
|
|
ssh deploy@10.8.0.1 "deploy-site ravaged-planet $REL"
|