Перейти к содержимому

Сборка шаблона

Template.build отправляет описание и ждёт завершения. Метод возвращает имя, ID шаблона и ID сборки. В параметрах можно задать CPU, память, теги, skipCache и обработчик логов.

Для долгой сборки используйте buildInBackground в JavaScript или build_in_background в Python. Метод сразу возвращает идентификаторы, а getBuildStatus или get_build_status позволяет получить состояние и новую часть логов.

mjs
import { Template } from "@abox-dev/sdk";

const templateName = process.env.TEMPLATE_NAME ?? "background-build";
const template = Template().fromBaseImage().runCmd("echo build-ready");

const build = await Template.buildInBackground(template, templateName);
let logsOffset = 0;

while (true) {
  const current = await Template.getBuildStatus(build, { logsOffset });
  logsOffset += current.logEntries.length;

  for (const entry of current.logEntries) {
    console.log(entry.toString());
  }

  if (current.status === "ready") {
    console.log(`Build ${build.buildId} is ready`);
    break;
  }
  if (current.status === "error") {
    throw new Error(current.reason?.message ?? "Template build failed");
  }

  await new Promise((resolve) => setTimeout(resolve, 2_000));
}

Возможные состояния: building, waiting, ready и error. Увеличивайте logsOffset на число уже обработанных записей, чтобы не получать их повторно.

Для обычного скрипта проще использовать build. Фоновая сборка полезна в фоновой задаче или CI, где ожиданием управляет ваше приложение.