Skip to content

Delete reviews/2026-04-20-.md (via Pages CMS) #438

Delete reviews/2026-04-20-.md (via Pages CMS)

Delete reviews/2026-04-20-.md (via Pages CMS) #438

name: Build and Deploy
on:
push:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
jobs:
setup:
name: Merge, Build, Publish
runs-on: ubicloud-standard-16
steps:
- name: Checkout this repo
uses: actions/checkout@v4
with:
path: source
- name: Checkout Chobble Template
uses: actions/checkout@v4
with:
repository: chobbledotcom/chobble-template
ref: main
path: template
sparse-checkout-cone-mode: false
sparse-checkout: |
.eleventy.js
package.json
bun.lock
bunfig.toml
flake.nix
flake.lock
bin
scripts
packages
src
- name: Copy template files to combined dir
run: |
mkdir -p combined
rsync \
--recursive \
--verbose \
--delete \
--exclude=".git" \
--exclude="*.md" \
--exclude="images" \
--exclude="landing-pages/*.html" \
template/ \
combined/
- name: Overlay our repo files into combined src
run: |
rsync \
--recursive \
--verbose \
--exclude=".*" \
--exclude="README.md" \
--exclude="package.json" \
--exclude="bun.lock" \
source/ \
combined/src/
- name: Update config.json with secrets
run: |
sed -i \
's/"formspark_id": null/"formspark_id": "${{ secrets.FORMSPARK_ID }}"/g' \
"combined/src/_data/config.json"
sed -i \
's/"botpoison_public_key": null/"botpoison_public_key": "${{ secrets.BOTPOISON_PUBLIC_KEY }}"/g' \
"combined/src/_data/config.json"
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Restore cache
uses: actions/cache@v4
with:
path: |
combined/node_modules
combined/.image-cache
key: ${{ runner.os }}-bun-${{ hashFiles('combined/bun.lock') }}
restore-keys: |
${{ runner.os }}-bun-
- name: Build with Bun
run: |
cd combined
bun install --frozen-lockfile
bun scripts/eleventy-build.js
mkdir -p ../_site
mv _site/* ../_site/
- name: Deploy to Bunny
uses: R-J-dev/bunny-deploy@v2.0.6
with:
access-key: ${{ secrets.BUNNY_ACCESS_KEY }}
directory-to-upload: "_site"
storage-endpoint: "https://uk.storage.bunnycdn.com"
storage-zone-name: "southport-organics"
storage-zone-password: ${{ secrets.BUNNY_STORAGE_ZONE_PASSWORD }}
concurrency: "5"
enable-delete-action: true
enable-purge-pull-zone: true
pull-zone-id: "3576287"
replication-timeout: "15000"
notify-failure:
name: Notify on Failure
runs-on: ubuntu-latest
needs: [setup]
if: failure()
steps:
- name: Send failure notification
uses: NiNiyas/ntfy-action@master
with:
url: 'https://ntfy.sh'
topic: ${{ secrets.NTFY_TOPIC }}