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

View file

@ -14,8 +14,11 @@
...
}:
{
overlays.default = final: prev: {
overlays.default = final: prev: rec {
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
@ -25,7 +28,7 @@
};
in {
packages = {
inherit (pkgs) versia-server;
inherit (pkgs) versia-server versia-server-worker;
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
'';
entrypointPath = "index.js";
installPhase = let
libPath = lib.makeLibraryPath [
vips
@ -60,7 +62,7 @@ in
cp -r dist $out/${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 \
--prefix PATH : ${binPath} \
--prefix LD_LIBRARY_PATH : ${libPath}

View file

@ -5,4 +5,4 @@ await setupDatabase();
await deleteOldTestUsers();
// 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");