69 lines
2.1 KiB
YAML
69 lines
2.1 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 -p "$BLOG_DEPLOY_PORT" "$BLOG_DEPLOY_USER@$BLOG_DEPLOY_HOST" "mkdir -p '$BLOG_DEPLOY_PATH/public'"
|
||
|
|
rsync -az --delete \
|
||
|
|
-e "ssh -p $BLOG_DEPLOY_PORT" \
|
||
|
|
public/ "$BLOG_DEPLOY_USER@$BLOG_DEPLOY_HOST:$BLOG_DEPLOY_PATH/public/"
|