fix: build frontend into the go:embed path so the hub binary compiles
Build (Dev) / build (push) Failing after 17s
CI/CD / lint-and-typecheck (push) Successful in 7s
CI/CD / test (push) Successful in 7s
CI/CD / build (push) Failing after 10s
CI/CD / deploy (push) Has been skipped

cmd/server/main.go has //go:embed all:src/dist (relative to cmd/server/),
but Vite built to repo-root dist/, so cmd/server/src/dist never existed and
every `go build` failed with "pattern all:src/dist: no matching files found".
The hub binary has never built in CI as a result.

- vite.config.ts: outDir -> cmd/server/src/dist (emptyOutDir)
- commit cmd/server/src/dist/index.html placeholder so the embed always has
  a file (real build overwrites it)
- .gitignore: scope dist ignore to /dist; ignore cmd/server/src/dist/* but
  keep the index.html placeholder (the prior !src/dist/index.html rule
  pointed at the wrong path)
- ci.yaml: upload artifact from the new output path

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Joshua King
2026-06-05 08:12:36 -04:00
parent d8ea71a295
commit 8387a4208f
4 changed files with 25 additions and 5 deletions
+1 -1
View File
@@ -46,7 +46,7 @@ jobs:
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: dist name: dist
path: dist/ path: cmd/server/src/dist/
deploy: deploy:
needs: build needs: build
+6 -4
View File
@@ -9,13 +9,15 @@ lerna-debug.log*
# Dependencies # Dependencies
node_modules node_modules
dist /dist
dist-ssr dist-ssr
*.local *.local
# Frontend build output (embedded at Go build time) # Frontend build output embedded into the Go binary at build time.
# Allow the fallback placeholder so embed always has at least index.html # Vite writes here (cmd/server/src/dist); ignore the built output but keep
!src/dist/index.html # the committed index.html placeholder so //go:embed always has a file.
cmd/server/src/dist/*
!cmd/server/src/dist/index.html
# Environment files # Environment files
.env .env
+12
View File
@@ -0,0 +1,12 @@
<!doctype html>
<!-- Placeholder so //go:embed all:src/dist always has a file to embed.
Replaced by the real Vite build output (npm run build) at CI build time. -->
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>RemoteRig Hub</title>
</head>
<body>
<p>RemoteRig hub is running. Frontend not built into this binary.</p>
</body>
</html>
+6
View File
@@ -5,6 +5,12 @@ import react from '@vitejs/plugin-react'
// https://vite.dev/config/ // https://vite.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
// Build straight into the Go embed location: cmd/server/main.go has
// //go:embed all:src/dist relative to its package dir (cmd/server/).
build: {
outDir: 'cmd/server/src/dist',
emptyOutDir: true,
},
server: { server: {
port: 3000, port: 3000,
proxy: { proxy: {