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

Теги и версии

Тег указывает на конкретную сборку. Полное имя имеет вид name:tag, например python-tools:v1 или python-tools:production.

Передайте один или несколько тегов в Template.build. Затем можно назначать и удалять теги без повторной сборки.

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

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

await Template.build(template, templateName, {
  tags: ["v1", "stable"],
});

await Template.assignTags(`${templateName}:v1`, "production");
await Template.removeTags(templateName, "stable");

const tags = await Template.getTags(templateName);
console.log(
  tags
    .map(({ tag }) => tag)
    .sort()
    .join(", "),
);

const sandbox = await Sandbox.create(`${templateName}:production`);
try {
  console.log(`Started ${sandbox.sandboxId}`);
} finally {
  await sandbox.kill();
}

assignTags или assign_tags переносит новый тег на выбранную сборку. removeTags или remove_tags удаляет только указатель: другие теги этой сборки продолжают работать. getTags или get_tags возвращает тег, ID сборки и время назначения.

Для неизменяемых выпусков используйте теги вида v1.4.0, а для продвижения — staging и production. Создание песочницы по конкретному тегу делает выбор версии явным.