From 21f57760e73d96085bf9fa7cb2f8ccee8046b38e Mon Sep 17 00:00:00 2001 From: Seth Call Date: Tue, 10 Mar 2026 00:06:33 -0500 Subject: [PATCH] fix: include repoRoot in build and copy all required dirs to image --- admin/ci/src/index.ts | 27 +++++++++++++++++---------- admin/flake.nix | 6 +++--- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/admin/ci/src/index.ts b/admin/ci/src/index.ts index ab1398249..f65a35544 100644 --- a/admin/ci/src/index.ts +++ b/admin/ci/src/index.ts @@ -14,20 +14,20 @@ export class Admin { * Fast Local Build */ @func() - async buildLocal(source: Directory, platform: Platform = "linux/amd64"): Promise { - return await this.buildWithNix(source, platform); + async buildLocal(source: Directory, platform: Platform = "linux/amd64", repoRoot?: Directory): Promise { + return await this.buildWithNix(source, platform, repoRoot); } /** * Multi-Arch Production Ship */ @func() - async ship(source: Directory, kubeconfig: Secret, registry: string): Promise { + async ship(source: Directory, kubeconfig: Secret, registry: string, repoRoot?: Directory): Promise { const version = this.generateCalVer(); const platforms: Platform[] = ["linux/amd64", "linux/arm64"]; const builds = platforms.map(async (p) => { - const img = await this.buildWithNix(source, p); + const img = await this.buildWithNix(source, p, repoRoot); return img.publish(`${registry}/jamkazam-admin:${version}-${p.replace("/", "-")}`); }); await Promise.all(builds); @@ -56,14 +56,21 @@ export class Admin { return `${calVer}-${user}-${shortHash}`; } - private async buildWithNix(source: Directory, platform: Platform): Promise { + private async buildWithNix(source: Directory, platform: Platform, repoRoot?: Directory): Promise { // 1. Start with a Nix-enabled container let builder = dag.container({ platform }) - .from("nixpkgs/nix:latest") - .withDirectory("/src", source) - .withWorkdir("/src") - // 2. Build the image tarball via Nix - // Add a dummy env var to bust cache if needed + .from("nixpkgs/nix:latest"); + + if (repoRoot) { + builder = builder.withDirectory("/src", repoRoot) + .withWorkdir("/src/admin"); + } else { + builder = builder.withDirectory("/src", source) + .withWorkdir("/src"); + } + + // 2. Build the image tarball via Nix + builder = builder .withEnvVariable("CACHE_BUST", new Date().getTime().toString()) .withEnvVariable("TIMESTAMP", new Date().getTime().toString()) .withExec(["nix", "--extra-experimental-features", "nix-command flakes", "build", ".#appImageTarball", "--out-link", "result-tarball"]); diff --git a/admin/flake.nix b/admin/flake.nix index 58b4c615a..47a90ce5f 100644 --- a/admin/flake.nix +++ b/admin/flake.nix @@ -88,10 +88,10 @@ # 4. Source code derivation src = pkgs.stdenv.mkDerivation { name = "jam-admin-src"; - src = ./.; + src = ../.; installPhase = '' - mkdir -p $out/jam-cloud/admin - cp -r . $out/jam-cloud/admin + mkdir -p $out/jam-cloud + cp -r . $out/jam-cloud/ ''; };