D3V-Server/blog-starter/.forgejo/workflows/deploy.yml

72 lines
2.3 KiB
YAML

name: Deploy Blog
on:
push:
branches:
- master
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y curl git rsync openssh-client tar
- name: Install Hugo Extended
env:
HUGO_VERSION: "0.145.0"
run: |
curl -fsSL -o hugo.deb \
"https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb"
sudo dpkg -i hugo.deb
hugo version
- name: Bootstrap LoveIt theme
run: |
chmod +x scripts/bootstrap-theme.sh
./scripts/bootstrap-theme.sh
- name: Build site
run: |
hugo --gc --minify
test -f public/index.html
- name: Configure SSH
env:
BLOG_DEPLOY_KEY: ${{ secrets.BLOG_DEPLOY_KEY }}
BLOG_DEPLOY_KNOWN_HOSTS: ${{ secrets.BLOG_DEPLOY_KNOWN_HOSTS }}
run: |
install -d -m 700 ~/.ssh
printf '%s\n' "$BLOG_DEPLOY_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
if [ -n "${BLOG_DEPLOY_KNOWN_HOSTS}" ]; then
printf '%s\n' "$BLOG_DEPLOY_KNOWN_HOSTS" > ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
fi
- name: Deploy to server
env:
BLOG_DEPLOY_HOST: ${{ secrets.BLOG_DEPLOY_HOST }}
BLOG_DEPLOY_PORT: ${{ secrets.BLOG_DEPLOY_PORT }}
BLOG_DEPLOY_USER: ${{ secrets.BLOG_DEPLOY_USER }}
BLOG_DEPLOY_PATH: ${{ secrets.BLOG_DEPLOY_PATH }}
run: |
test -n "$BLOG_DEPLOY_HOST"
test -n "$BLOG_DEPLOY_PORT"
test -n "$BLOG_DEPLOY_USER"
test -n "$BLOG_DEPLOY_PATH"
SSH_OPTS="-p $BLOG_DEPLOY_PORT"
if [ ! -f ~/.ssh/known_hosts ]; then
SSH_OPTS="$SSH_OPTS -o StrictHostKeyChecking=accept-new"
fi
ssh $SSH_OPTS "$BLOG_DEPLOY_USER@$BLOG_DEPLOY_HOST" "mkdir -p '$BLOG_DEPLOY_PATH/public'"
rsync -az --delete \
-e "ssh $SSH_OPTS" \
public/ "$BLOG_DEPLOY_USER@$BLOG_DEPLOY_HOST:$BLOG_DEPLOY_PATH/public/"