build: 🏗️ Package Worker

This commit is contained in:
Jesse Wierzbinski 2025-04-14 17:13:36 +02:00
parent 5a4ce29206
commit 1beb18e321
No known key found for this signature in database
7 changed files with 66 additions and 9 deletions

View file

@ -8,7 +8,7 @@ await $`rm -rf dist && mkdir dist`;
await build({ await build({
entrypoints: [ entrypoints: [
"entrypoints/worker/index.ts", "worker.ts",
// HACK: Include to avoid cyclical import errors // HACK: Include to avoid cyclical import errors
"config.ts", "config.ts",
], ],
@ -21,13 +21,13 @@ await build({
buildSpinner.text = "Transforming"; buildSpinner.text = "Transforming";
// Copy Drizzle migrations to dist // Copy Drizzle migrations to dist
await $`cp -r drizzle dist/drizzle`; await $`cp -rL drizzle dist/drizzle`;
// Copy Sharp to dist // Copy Sharp to dist
await $`mkdir -p dist/node_modules/@img`; await $`mkdir -p dist/node_modules/@img`;
await $`cp -r node_modules/@img/sharp-libvips-linuxmusl-* dist/node_modules/@img`; await $`cp -rL node_modules/@img/sharp-libvips-linux* dist/node_modules/@img`;
await $`cp -r node_modules/@img/sharp-linuxmusl-* dist/node_modules/@img`; await $`cp -rL node_modules/@img/sharp-linux* dist/node_modules/@img`;
await $`cp -r node_modules/detect-libc dist/node_modules/`; await $`cp -rL node_modules/detect-libc dist/node_modules/`;
buildSpinner.stop(); buildSpinner.stop();

View file

@ -14,8 +14,11 @@
... ...
}: }:
{ {
overlays.default = final: prev: { overlays.default = final: prev: rec {
versia-server = final.callPackage ./nix/package.nix {}; versia-server = final.callPackage ./nix/package.nix {};
versia-server-worker = final.callPackage ./nix/package-worker.nix {
inherit versia-server;
};
}; };
} }
// flake-utils.lib.eachSystem ["x86_64-linux" "aarch64-linux"] (system: let // flake-utils.lib.eachSystem ["x86_64-linux" "aarch64-linux"] (system: let
@ -25,7 +28,7 @@
}; };
in { in {
packages = { packages = {
inherit (pkgs) versia-server; inherit (pkgs) versia-server versia-server-worker;
default = self.packages.${system}.versia-server; default = self.packages.${system}.versia-server;
}; };
}); });

View file

@ -0,0 +1,30 @@
diff --git a/build-worker.ts b/build-worker.ts
index 5e2a6d5a..ee66871c 100644
--- a/build-worker.ts
+++ b/build-worker.ts
@@ -1,8 +1,8 @@
import { build } from "bun";
import { $ } from "bun";
-import ora from "ora";
+// import ora from "ora";
-const buildSpinner = ora("Building").start();
+// const buildSpinner = ora("Building").start();
await $`rm -rf dist && mkdir dist`;
@@ -18,7 +18,7 @@ await build({
minify: false,
});
-buildSpinner.text = "Transforming";
+// buildSpinner.text = "Transforming";
// Copy Drizzle migrations to dist
await $`cp -r drizzle dist/drizzle`;
@@ -30,4 +30,4 @@ await $`cp -r node_modules/@img/sharp-linuxmusl-* dist/node_modules/@img`;
await $`cp -r node_modules/detect-libc dist/node_modules/`;
-buildSpinner.stop();
+// buildSpinner.stop();

21
nix/package-worker.nix Normal file
View file

@ -0,0 +1,21 @@
# Simply edit the server to run "bun run build:worker" instead of "bun run build"
{versia-server}:
versia-server.overrideAttrs (oldAttrs: {
pname = "${oldAttrs.pname}-worker";
buildPhase = ''
runHook preBuild
bun run build:worker
runHook postBuild
'';
entrypointPath = "worker.js";
patches = [./fix-build-spinner-worker.patch];
meta =
oldAttrs.meta
// {
description = "${oldAttrs.meta.description} (worker)";
};
})

View file

@ -44,6 +44,8 @@ in
runHook postBuild runHook postBuild
''; '';
entrypointPath = "index.js";
installPhase = let installPhase = let
libPath = lib.makeLibraryPath [ libPath = lib.makeLibraryPath [
vips vips
@ -60,7 +62,7 @@ in
cp -r dist $out/${finalAttrs.pname} cp -r dist $out/${finalAttrs.pname}
makeWrapper ${lib.getExe bun} $out/bin/${finalAttrs.pname} \ makeWrapper ${lib.getExe bun} $out/bin/${finalAttrs.pname} \
--add-flags "run $out/${finalAttrs.pname}/index.js" \ --add-flags "run $out/${finalAttrs.pname}/${finalAttrs.entrypointPath}" \
--set NODE_PATH $out/${finalAttrs.pname}/node_modules \ --set NODE_PATH $out/${finalAttrs.pname}/node_modules \
--prefix PATH : ${binPath} \ --prefix PATH : ${binPath} \
--prefix LD_LIBRARY_PATH : ${libPath} --prefix LD_LIBRARY_PATH : ${libPath}

View file

@ -5,4 +5,4 @@ await setupDatabase();
await deleteOldTestUsers(); await deleteOldTestUsers();
// Start workers // Start workers
await import("~/entrypoints/worker/index.ts"); await import("~/worker.ts");

1
worker.ts Normal file
View file

@ -0,0 +1 @@
await import("~/entrypoints/worker/index.ts");