Files
homarr/tooling/github/setup/action.yml
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

72 lines
2.7 KiB
YAML

name: "Setup and install"
description: "Common setup steps for Actions"
inputs:
next-cache:
description: Next.js compiler caches to restore (none, nextjs, docs, all)
default: "none"
turbo-cache:
description: Restore local Turbo artifacts when signed remote caching is not configured
default: "false"
runs:
using: composite
steps:
- uses: actions/setup-node@v6
with:
node-version: 24.18.0
- uses: oven-sh/setup-bun@v2
with:
bun-version: 1.4.2
- name: Identify the build platform
shell: bash
run: |
node --input-type=module -e '
import { appendFileSync } from "node:fs";
const arch = { x64: "amd64", arm64: "arm64" }[process.arch] ?? process.arch;
let libc = "musl";
if (process.report.getReport().header.glibcVersionRuntime) libc = "glibc";
appendFileSync(process.env.GITHUB_ENV, `TURBO_PLATFORM=${process.platform}/${arch}/${libc}/node-${process.versions.node}\n`);
'
- name: Restore Bun dependency cache
if: "!env.ACT"
uses: actions/cache@v5
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-${{ runner.arch }}-bun-1.4.2-${{ hashFiles('bun.lock', 'bunfig.toml', 'package.json', 'patches/**') }}
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-bun-1.4.2-
- shell: bash
run: bun install --frozen-lockfile --concurrent-scripts=1
- name: Restore local Turbo artifacts
if: inputs.turbo-cache == 'true' && !env.ACT && !(env.TURBO_API != '' && env.TURBO_TEAM != '' && env.TURBO_TOKEN != '' && env.TURBO_REMOTE_CACHE_SIGNATURE_KEY != '')
uses: actions/cache@v5
with:
path: .turbo/cache
key: ${{ env.TURBO_PLATFORM }}-turbo-${{ github.job }}-${{ hashFiles('bun.lock') }}-${{ github.sha }}
restore-keys: |
${{ env.TURBO_PLATFORM }}-turbo-${{ github.job }}-${{ hashFiles('bun.lock') }}-
- name: Restore application compiler cache
if: (inputs.next-cache == 'nextjs' || inputs.next-cache == 'all') && !env.ACT
uses: actions/cache@v5
with:
path: apps/nextjs/.next/cache
key: ${{ env.TURBO_PLATFORM }}-nextjs-${{ hashFiles('bun.lock') }}-${{ github.sha }}
restore-keys: |
${{ env.TURBO_PLATFORM }}-nextjs-${{ hashFiles('bun.lock') }}-
- name: Restore documentation compiler cache
if: (inputs.next-cache == 'docs' || inputs.next-cache == 'all') && !env.ACT
uses: actions/cache@v5
with:
path: apps/docs/.next/cache
key: ${{ env.TURBO_PLATFORM }}-docs-${{ hashFiles('bun.lock') }}-${{ github.sha }}
restore-keys: |
${{ env.TURBO_PLATFORM }}-docs-${{ hashFiles('bun.lock') }}-