Publish a self-contained single binary:
dotnet publish -c Release -r osx-arm64 \
--self-contained true \
-p:PublishSingleFile=trueInstall globally:
sudo mv bin/Release/net*/osx-arm64/publish/RackPeek /usr/local/bin/rpk
sudo chmod +x /usr/local/bin/rpkVerify:
rpk --helpInstall tools:
brew install vhs
brew install imagemagick
brew install --cask google-chrome # if not already installedRun tape:
cd vhs
vhs ./rpk.tapeMake script executable:
chmod +x webui_capture.shRun:
cd vhs
npm install
node capture.js
./webui_capture.shRequires Chrome + ImageMagick.
Manual release build:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-f ./Dockerfile \
-t aptacode/rackpeek:v0.0.11 \
-t aptacode/rackpeek:latest \
--push ..Notes:
- Uses
buildxfor multi-arch - Pushes directly to registry
- Update version tag before running
Install tooling (first time only):
cd Tests.E2e
dotnet tool install --global Microsoft.Playwright.CLI
dotnet build
playwright install⚠ Re-run
playwright installwhenever theMicrosoft.PlaywrightNuGet is bumped. Each Playwright release pins a specific Chromium build (e.g. 1.58 shipschromium_headless_shell-1208, 1.59 ships-1217). If the cache is stale every test fails withPlaywrightException : Executable doesn't exist at .../chromium_headless_shell-NNNN.just e2e-setupcovers this.
Build Web image (required before running tests):
docker build -t rackpeek:ci -f RackPeek.Web/Dockerfile .docker build -t rackpeek:ci -f RackPeek.Web/Dockerfile .
cd Tests.E2e && dotnet testTemporarily set in PlaywrightFixture.cs:
Headless = false,
SlowMo = 500,⚠ Revert to:
Headless = true,Before committing (CI requires headless mode).