メインコンテンツへスキップ
app.deploysDeploysModule を公開しており、デプロイのタイムラインと 2 つの GitHub 連携パスの両方をカバーします。
const app = await api.applications.fetch("abc123def456abc123def456");
app.deploys; // DeploysModule

デプロイ履歴の一覧取得

app.deploys.list()Deployment[][] を返します。デプロイごとに 1 つの内側配列があり、それぞれがライフサイクルの各状態 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);
    }
}
単一の時系列リストが欲しい場合は結果をフラット化します。
const flat = history.flat();
v3 ではこのメソッドはフラットな Deployment[] を返していました。v4 では Deployment[][] を返すため、イベントをデプロイ単位でグループ化できます。以前の形式を維持するには .flat() を使用してください。
Deployment.id は現在、単なるコミットの SHA-1(40 桁の 16 進数)になりました。v3 では `git-${string}` の形式でフォーマットされていました。

Square Cloud GitHub App での連携(推奨)

app.deploys.linkGithubApp({ repositoryName, repositoryBranch }) は、公式の GitHub App を介して GitHub リポジトリをアプリケーションに連携します。
const repo = await app.deploys.linkGithubApp({
    repositoryName: "octocat/hello-world",
    repositoryBranch: "main",
});

console.log(`Linked ${repo.full_name}#${repo.branch}`);
連携を解除するには次のようにします。
await app.deploys.unlinkGithubApp();
linkGithubAppunlinkGithubApp は API キーとして セッショントークン(JWT) が必要です。これらの endpoint はプレーンな API キーを受け付けません。

レガシー webhook フローでの連携

app.deploys.integrateGithubWebhook(accessToken) は、GitHub の Personal Access Token を使用してレガシーな webhook ベースの連携を設定します。
const webhookUrl = await app.deploys.integrateGithubWebhook("ghp_xxx...");
console.log(`Configure GitHub to POST to: ${webhookUrl}`);
webhook を削除するには "@" を渡します。
await app.deploys.integrateGithubWebhook("@");

現在の設定の確認

app.deploys.current() は、現在設定されている GitHub App の連携情報と webhook URL があればそれを返します。
const current = await app.deploys.current();

console.log(current.app);     // GitHub App linkage (or null)
console.log(current.webhook); // legacy webhook URL (or null)
webhook URL のみ(または undefined)を返すショートカット app.deploys.webhookURL() もあります。