← Cloudflare Workers / workers / ci-cd / builds
Deploy Hooks
Ve výchozím nastavení Workers Builds spustí sestavení při odeslání commitu do vašeho připojený Git repozitář. Deploy Hooks nabízí další způsob, jak spustit sestavení. Každý hook je unikátní URL, která po přijetí požadavku HTTP POST spustí ruční sestavení pro jednu větev. Pomocí Deploy Hooks propojíte Workers Builds s pracovními postupy, jako jsou například:
- Automatické sestavení při změně obsahu v headless CMS
- Sestavujte podle plánu pomocí externí služby cron
- Spouštějte nasazení z vlastních CI/CD pipeline na základě konkrétních podmínek
Vytvořte Deploy Hook
Než vytvoříte Deploy Hook, ujistěte se, že váš Worker je připojen k Git repozitáři.
-
Přejděte na Workers & Pages a vyberte svého Workera.
Přejděte na Workers & Pages ↗ -
Přejděte na Nastavení > Builds > Deploy Hooks.
-
Zadejte název a vyberte větev k sestavení.
-
Vyberte Vytvořit a zkopírujte vygenerovanou URL adresu.
Spusťte Deploy Hook
Odešlete požadavek HTTP POST na URL vašeho Deploy Hooku a spusťte tak build:
curl -X POST "https://api.cloudflare.com/client/v4/workers/builds/deploy_hooks/<DEPLOY_HOOK_ID>"Ne Authorization hlavička je potřeba. Jedinečný identifikátor vložený do adresy URL slouží jako ověřovací údaj.
Příklad odpovědi:
{
"success": true,
"errors": [],
"messages": [],
"result": {
"build_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"branch": "main",
"worker": "my-worker"
}
} build_uuid v odpovědi lze použít k sledování stavu sestavení a získávání protokolů.
Ověřte sestavení
Po spuštění Deploy Hook jej můžete ověřit v dashboardu:
- V Deploy Hooks seznamu hook zobrazuje, kdy byl naposledy vyvolán.
- V historii sestavení (build history) svého Workeru Spustil sloupec identifikuje buildy spuštěné pomocí Deploy Hook podle názvu hooku a
deploy hookštítek.
Pokud potřebujete tato sestavení kontrolovat programově, použijte Vypsat sestavení pro Worker v referenční dokumentaci Builds API. Sestavení spuštěná hookem se zaznamenávají s build_trigger_source: "deploy_hook".
Integrace CMS
Většina headless CMS platforem podporuje webhooky, které při změně obsahu zavolají vaši Deploy Hook URL. Základní nastavení je u všech platforem podobné:
- Najděte nastavení webhooků nebo integrací ve svém CMS.
- Vytvořte nový webhook a vložte URL adresu Deploy Hook jako cílovou URL adresu.
- Vyberte, které události mají webhook spustit (například publish, unpublish nebo update).
Pokyny specifické pro danou platformu najdete v dokumentaci vašeho CMS. Mezi oblíbené platformy s podporou webhooků patří Contentful, Sanity, Strapi, Storyblok, DatoCMS a Prismic.
Idempotence
Pokud je stejný Deploy Hook spuštěn znovu předtím, než se předchozí sestavení plně rozeběhne, Workers Builds nevytvoří duplicitní sestavení. Místo toho vrátí sestavení, které již probíhá.
Pokud externí systém odešle stejný Deploy Hook dvakrát rychle po sobě:
- První požadavek vytvoří sestavení.
- Pokud dorazí druhý požadavek, zatímco je sestavení stále
queuedneboinitializing, nevytvoří se druhý build. - Místo toho se vrátí existující
build_uuida nastavíalready_existsnatrue.
Příklad odpovědi, když je vrácen existující čekající build:
{
"success": true,
"errors": [],
"messages": [],
"result": {
"build_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "queued",
"created_on": "2026-01-21T18:50:00Z",
"already_exists": true
}
}Jakmile dřívější sestavení překročí initializing, pozdější požadavek POST vytvoří nové sestavení jako obvykle. Díky tomu je bezpečné používat Deploy Hooks se systémy, které opakují webhooky nebo generují dávky událostí o aktualizaci obsahu.
Příklady
Nasaďte pomocí lomítkového příkazu Slack
Worker, který přijme /deploy příkaz ze Slacku a spouští sestavení:
export default {
async fetch(request, env) {
const body = await request.formData();
const command = body.get("command");
const token = body.get("token");
if (token !== env.SLACK_VERIFICATION_TOKEN) {
return new Response("Unauthorized", { status: 401 });
}
if (command === "/deploy") {
const res = await fetch(env.DEPLOY_HOOK_URL, { method: "POST" });
const { result } = await res.json();
return new Response(`Build started: ${result.build_uuid}`);
}
return new Response("Unknown command", { status: 400 });
},
};export default {
async fetch(request: Request, env: Env): Promise<Response> {
const body = await request.formData();
const command = body.get("command");
const token = body.get("token");
if (token !== env.SLACK_VERIFICATION_TOKEN) {
return new Response("Unauthorized", { status: 401 });
}
if (command === "/deploy") {
const res = await fetch(env.DEPLOY_HOOK_URL, { method: "POST" });
const { result } = await res.json<{ result: { build_uuid: string } }>();
return new Response(`Build started: ${result.build_uuid}`);
}
return new Response("Unknown command", { status: 400 });
},
};Sestavení podle plánu
Worker s Cron Trigger která se znovu sestavuje každou hodinu:
export default {
async scheduled(event, env) {
await fetch(env.DEPLOY_HOOK_URL, { method: "POST" });
},
};export default {
async scheduled(event: ScheduledEvent, env: Env): Promise<void> {
await fetch(env.DEPLOY_HOOK_URL, { method: "POST" });
},
};Bezpečnostní aspekty
- Ukládejte URL adresy Deploy Hook do proměnných prostředí nebo správce tajných klíčů, nikdy ne do zdrojového kódu nebo veřejných konfiguračních souborů.
- Omezte přístup k URL pouze na systémy, které jej potřebují.
- Pokud dojde ke kompromitaci adresy URL nebo máte podezření na neoprávněné použití, Deploy Hook okamžitě odstraňte a vytvořte nový. Stará adresa URL přestane fungovat ihned po odstranění.
Použití Builds API pro ověřené triggery
Pokud váš externí systém podporuje vlastní hlavičky, můžete zavolat koncový bod pro ruční sestavení s API tokenem v Authorization hlavičku. Získáte tak ověřování založené na tokenu a možnost zvolit větev pro jednotlivé požadavky. Podrobný postup najdete v Spustit manuální build.
Limity
Deploy Hooks mají omezenou rychlost na 10 sestavení za minutu na Worker a 100 sestavení za minutu na účet. Všechny limity Workers Builds najdete v Limity a ceny.