fix: use configured boot repo for runner jobs

This commit is contained in:
lyon
2026-06-14 12:07:33 +08:00
parent ba2752815d
commit 6568d13deb
3 changed files with 11 additions and 1 deletions
+2
View File
@@ -39,6 +39,7 @@ export interface RunnerJobDefaults {
namespace: string;
managerUrl: string;
image: string;
bootRepoUrl?: string;
sourceCommit: string;
envIdentity?: string;
artifactCatalogFile?: string;
@@ -145,6 +146,7 @@ export async function createKubernetesRunnerJob(options: { store: AgentRunStore;
commandId,
managerUrl,
image,
...(options.defaults.bootRepoUrl ? { bootRepoUrl: options.defaults.bootRepoUrl } : {}),
namespace,
sourceCommit,
transientEnv: renderTransientEnv,
+2
View File
@@ -41,6 +41,7 @@ function runnerJobDefaultsForRequest(defaults: ManagerServerOptions["runnerJobDe
namespace,
managerUrl: defaults?.managerUrl ?? process.env.AGENTRUN_INTERNAL_MGR_URL ?? `http://agentrun-mgr.${namespace}.svc.cluster.local:8080`,
image: defaults?.image ?? process.env.AGENTRUN_RUNNER_IMAGE ?? "",
...optionalStringRecord("bootRepoUrl", defaults?.bootRepoUrl ?? process.env.AGENTRUN_BOOT_REPO_URL),
sourceCommit,
...optionalStringRecord("envIdentity", defaults?.envIdentity ?? process.env.AGENTRUN_ENV_IDENTITY),
...optionalStringRecord("artifactCatalogFile", defaults?.artifactCatalogFile ?? process.env.AGENTRUN_ARTIFACT_CATALOG_FILE),
@@ -59,6 +60,7 @@ export interface ManagerServerOptions {
namespace?: string;
managerUrl?: string;
image?: string;
bootRepoUrl?: string;
envIdentity?: string;
artifactCatalogFile?: string;
serviceAccountName?: string;
+7 -1
View File
@@ -43,6 +43,7 @@ export interface RunnerJobRenderOptions {
commandId: string;
managerUrl: string;
image: string;
bootRepoUrl?: string;
namespace?: string;
attemptId?: string;
runnerId?: string;
@@ -224,6 +225,7 @@ export function renderRunnerJobManifest(options: RunnerJobRenderOptions): { mani
function runnerEnv(options: RunnerJobRenderOptions, context: { namespace: string; jobName: string; runnerId: string; attemptId: string; sourceCommit: string; secretRefs: CredentialProjection[]; toolCredentials: ToolCredentialProjection[]; sessionPvc: RunnerSessionPvcOptions | undefined }): JsonRecord[] {
const selectedSecret = context.secretRefs.find((item) => item.profile === options.run.backendProfile);
const codexHome = selectedSecret?.runtimeMountPath ?? defaultRuntimeHome(options.run.backendProfile);
const bootRepoUrl = optionalString(options.bootRepoUrl) ?? defaultBootRepoUrl;
return dedupeEnvVars([
{ name: "AGENTRUN_MGR_URL", value: options.managerUrl },
{ name: "AGENTRUN_API_KEY", valueFrom: { secretKeyRef: { name: "agentrun-v01-api-key", key: "HWLAB_API_KEY" } } },
@@ -240,7 +242,7 @@ function runnerEnv(options: RunnerJobRenderOptions, context: { namespace: string
{ name: "AGENTRUN_RESOURCE_BIN_PATH", value: defaultResourceBinPath },
{ name: "AGENTRUN_SOURCE_COMMIT", value: context.sourceCommit },
{ name: "AGENTRUN_BOOT_COMMIT", value: context.sourceCommit },
{ name: "AGENTRUN_BOOT_REPO_URL", value: defaultBootRepoUrl },
{ name: "AGENTRUN_BOOT_REPO_URL", value: bootRepoUrl },
{ name: "AGENTRUN_BOOT_MODE", value: "runner" },
{ name: "AGENTRUN_APP_ROOT", value: "/home/agentrun/agentrun-source" },
{ name: "AGENTRUN_RUNTIME_NAMESPACE", value: context.namespace },
@@ -464,6 +466,10 @@ function shortHash(value: JsonValue): string {
return stableHash(value).slice(0, 12);
}
function optionalString(value: unknown): string | undefined {
return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
}
function sanitizeVolumeName(value: string): string {
const sanitized = value.toLowerCase().replace(/[^a-z0-9-]+/gu, "-").replace(/^-+|-+$/gu, "");
return sanitized.length > 0 ? sanitized.slice(0, 40) : "credential";