Files
davideisinger.com/.build.yml
2025-10-30 10:15:54 -04:00

70 lines
2.1 KiB
YAML

image: ubuntu/24.04
packages:
- imagemagick
# - npm
- rsync
- ruby
sources:
- https://git.sr.ht/~dce/davideisinger.com
secrets:
- 9b440bf5-2785-4ab9-9584-124b9ecd04c4 # decryption key
- bea2ece1-a780-44cc-b74b-e96c484f0daf # server IP
- a1f811ce-156d-4083-9d6e-110da705a286 # deploy key
triggers:
- action: email
condition: failure
to: david@davideisinger.com
environment:
HUGO_VERSION: 0.152.2
tasks:
# Install Hugo + Bundler, and make all subsequent steps cd into site root
- setup: |
wget --quiet https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb
sudo apt install -y ./hugo_extended_${HUGO_VERSION}_linux-amd64.deb
sudo gem install bundler
echo 'cd davideisinger.com' >> ~/.buildenv
# Spellcheck Markdown files
# - spelling: |
# npx cspell "content/**/*.md"
# Diff RSS template against Hugo default, make sure only differences are intentional
- rss: |
curl -s https://raw.githubusercontent.com/gohugoio/hugo/refs/tags/v$HUGO_VERSION/tpl/tplimpl/embedded/templates/rss.xml \
| diff - ./themes/v2/layouts/_default/rss.xml \
| wc -l \
| grep 7
# Start Ruby server for dithering images
- dither: |
cd bin/dither
sudo bundle install
ROOT=~/davideisinger.com/content \
KEY=~/secret.key \
bundle exec rackup -p 4567 -D
# Build site
- hugo: |
HUGO_PARAMS_GIT_COMMIT=$(git rev-parse HEAD) \
DITHER_SERVER=http://localhost:4567 \
hugo --minify
find public -name "*.enc" -type f -delete
find public/elsewhere -name "*.gmi" -type f -delete
# Sync files to production server
- deploy: |
if [ "$(git rev-parse main)" != "$(git rev-parse HEAD)" ]; then \
complete-build; \
fi
set +x
export SERVER_IP=$(cat ~/server_ip.txt)
rsync \
--rsh="ssh -o StrictHostKeyChecking=no" \
-v \
-r \
--delete \
public/* \
www-data@$SERVER_IP:/var/www/davideisinger.com \
2>/dev/null
set -x