fix: include repoRoot in build and copy all required dirs to image
Build Admin / build (push) Failing after 13s Details

This commit is contained in:
Seth Call 2026-03-10 00:06:33 -05:00
parent 952286a467
commit 21f57760e7
2 changed files with 20 additions and 13 deletions

View File

@ -14,20 +14,20 @@ export class Admin {
* Fast Local Build
*/
@func()
async buildLocal(source: Directory, platform: Platform = "linux/amd64"): Promise<Container> {
return await this.buildWithNix(source, platform);
async buildLocal(source: Directory, platform: Platform = "linux/amd64", repoRoot?: Directory): Promise<Container> {
return await this.buildWithNix(source, platform, repoRoot);
}
/**
* Multi-Arch Production Ship
*/
@func()
async ship(source: Directory, kubeconfig: Secret, registry: string): Promise<string> {
async ship(source: Directory, kubeconfig: Secret, registry: string, repoRoot?: Directory): Promise<string> {
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<Container> {
private async buildWithNix(source: Directory, platform: Platform, repoRoot?: Directory): Promise<Container> {
// 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"]);

View File

@ -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/
'';
};