app.deploys expone el DeploysModule, que abarca tanto la línea de tiempo de deploys como las dos vías de integración con GitHub.
const app = await api.applications.fetch("abc123def456abc123def456");
app.deploys; // DeploysModule
Listado del historial de deploys
app.deploys.list() devuelve Deployment[][]: un array interno por cada deploy, cada uno recorriendo los estados del ciclo de vida: pending → clone → commit → restarting → success | error.
const history = await app.deploys.list();
for (const timeline of history) {
const last = timeline.at(-1);
console.log(`Deploy ${last?.id} ended as ${last?.state}`);
for (const event of timeline) {
if (event.state === "clone") console.log(` cloned branch ${event.branch}`);
if (event.state === "commit") console.log(` files`, event.files);
}
}
Aplana el resultado si quieres una única lista cronológica:
const flat = history.flat();
En la v3 este método devolvía un Deployment[] plano. La v4 devuelve Deployment[][] para que puedas agrupar los eventos por deploy. Usa .flat() para conservar la forma anterior.
Deployment.id ahora es un SHA-1 de commit plano (40 caracteres hexadecimales). En la v3 estaba formateado como `git-${string}`.
app.deploys.linkGithubApp({ repositoryName, repositoryBranch }) vincula un repositorio de GitHub a la aplicación a través de la GitHub App oficial.
const repo = await app.deploys.linkGithubApp({
repositoryName: "octocat/hello-world",
repositoryBranch: "main",
});
console.log(`Linked ${repo.full_name}#${repo.branch}`);
Para eliminar la vinculación:
await app.deploys.unlinkGithubApp();
linkGithubApp y unlinkGithubApp requieren un token de sesión (JWT) como clave de API: estos endpoints no aceptan claves de API normales.
app.deploys.integrateGithubWebhook(accessToken) configura la integración heredada basada en webhook usando un Personal Access Token de GitHub.
const webhookUrl = await app.deploys.integrateGithubWebhook("ghp_xxx...");
console.log(`Configure GitHub to POST to: ${webhookUrl}`);
Pasa "@" para eliminar el webhook:
await app.deploys.integrateGithubWebhook("@");
Inspección de la configuración actual
app.deploys.current() devuelve la vinculación de la GitHub App y la URL del webhook configuradas actualmente, si las hay.
const current = await app.deploys.current();
console.log(current.app); // GitHub App linkage (or null)
console.log(current.webhook); // legacy webhook URL (or null)
También existe un atajo app.deploys.webhookURL() que devuelve solo la URL del webhook (o undefined).