Files
homarr/apps/workshop/preview-docs.sh
T
Thomas 229bd4b3ed chore: use Bun package management and Turbo remote caching (#6978)
* feat: migrate tooling and runtimes to bun

* fix: serialize act installs and adapt backup checks

* fix: finish bun scripts and rootless act setup

* fix: support bun images in runtime benchmarks

* fix: keep a single bun toolchain configuration

* fix: include docs mascot sources in workshop build

* docs: use bun in remaining tool commands

* fix: complete bun sqlite development tooling

* docs: explain sqlite development adapter

* fix: align remaining commands and local ci validation

* fix: use renovate regex fallback with bun

* fix: finalize bun sqlite connections during cleanup

* fix: preserve sqlite foreign key enforcement

* fix: align docker build frontends

* fix: prepare release versions with bun

* Add Bun benchmarks and preserve SQLite connection defaults

* Benchmark Bun installs, conflicts and production workloads

* Force Bun workspace tools and HTTP/1.1 upstream streaming

* Exclude benchmark evidence from Docker contexts

* Expose branch benchmarks through CI

* Verify hydrated widget data in production benchmarks

* Measure image archives and document benchmark protocol

* Audit dependency sharing across every workspace

* Pin pnpm for nested baseline benchmark scripts

* Preserve nested manager pinning on benchmark resume

* Include application and runtime image footprints

* Fail benchmark gates on candidate command errors

* Report complete build overhead and sampled memory bounds

* Validate migration comparisons across pinned revisions

* Record configurable runtime memory budgets

* Retain out-of-memory kills in runtime budget probes

* Reject OOM events consistently across runtime metrics

* Record complete Bun migration benchmarks

* Record memory diagnosis and correct Turbo caching

* Use Bun package management while preserving Node runtimes

* Keep native build fallbacks and exclude development artifacts

* Fix Node ESM metadata and isolate local CI configuration

* Measure development performance and isolate act environment

* Support isolated environment files in rootless act

* Validate the full migration range with act

* Preserve native SQLite binding for bundled migrations

* Use documented dev defaults and report benchmark scope

* Validate dev defaults and isolate restart measurements

* Record package-manager and development benchmarks

* Keep benchmark measurements and link full command artifacts

* Clean up temporary act environment files

* Validate Node runtimes in package-manager comparisons

* Validate every workspace in manual CI runs

* Retain patched nested brace expansion versions

* Complete package-manager and Node performance report

* Normalize archived benchmark logs

* Record final hosted validation

* Cache both Next builds with platform isolation

* Prime cache with write-only mode

* Split Next artifacts below Cloudflare upload limit

* Assemble coherent standalone cache outputs

* Preserve traced middleware entrypoints

* Assemble traced directory links before files

* Separate cached dependencies from assembled output

* Record signed Turbo cache benchmarks

* Remove archived benchmark captures

Full benchmark evidence is preserved at 8f7d3bcd14109bfb13fa664d31710b88d820ad66.

* Remove migration benchmark harness

* fix: correct migration launch and local Act prerequisites

* Consolidate Turbo caches and production artifacts

* Exclude generated files from Docker cache inputs

* fix: address Bun migration review findings

* fix: check restored compiler bundle manifests
2026-10-07 16:38:14 +02:00

49 lines
1.8 KiB
Bash

#!/bin/sh
set -eu
repo_dir=$(CDPATH= cd -- "$(dirname -- "$0")/../.." && pwd)
cd "$repo_dir"
preview_name=${DOCS_PREVIEW_NAME:-homarr-docs-static-preview}
preview_host=${DOCS_PREVIEW_HOST:-127.0.0.1}
preview_port=${DOCS_PREVIEW_PORT:-8093}
preview_image=homarr-workshop:docs-static-preview
preview_url="http://$preview_host:$preview_port"
api_url=${WORKSHOP_API_URL:-$preview_url}
api_url=${api_url%/}
api_url=${api_url%/api}
remote_api_url=${WORKSHOP_REMOTE_API_URL:-${WORKSHOP_API_URL:-}}
remote_api_url=${remote_api_url%/}
remote_api_url=${remote_api_url%/api}
if [ ! -f apps/docs/out/404.html ]; then
echo 'Build the docs first: bun run --filter @homarr/docs build' >&2
exit 1
fi
docker build --target development -f apps/workshop/Dockerfile -t "$preview_image" .
docker run --detach --rm --name "$preview_name" \
--user "$(id -u):$(id -g)" \
--publish "$preview_host:$preview_port:8090" \
--mount "type=bind,src=$repo_dir/apps/docs/out,dst=/pb_public" \
--mount "type=bind,src=$repo_dir/apps/workshop/pb_hooks,dst=/pb_hooks,readonly" \
--mount "type=bind,src=$repo_dir/apps/workshop/pb_migrations,dst=/pb_migrations,readonly" \
--tmpfs "/pb_data:uid=$(id -u),gid=$(id -g)" \
--env "HOMARR_WEBSITE_URL=$preview_url" \
--env "WORKSHOP_API_URL=$api_url" \
--env "WORKSHOP_REMOTE_API_URL=$remote_api_url" \
--env "WORKSHOP_WEB_URL=$preview_url/workshop" \
"$preview_image"
attempt=0
until docker exec "$preview_name" wget -q --spider http://127.0.0.1:8090/api/health >/dev/null 2>&1; do
attempt=$((attempt + 1))
if [ "$attempt" -ge 30 ]; then
echo "Preview did not become healthy. Inspect it with: docker logs $preview_name" >&2
exit 1
fi
sleep 1
done
printf 'Static docs: %s/docs/\nWorkshop API: %s\nStop: docker stop %s\n' "$preview_url" "$api_url" "$preview_name"