INTEGRITY Dokumentace

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:

Vytvořte Deploy Hook

Než vytvoříte Deploy Hook, ujistěte se, že váš Worker je připojen k Git repozitáři.

  1. Přejděte na Workers & Pages a vyberte svého Workera.

    Přejděte na Workers & Pages ↗
  2. Přejděte na Nastavení > Builds > Deploy Hooks.

  3. Zadejte název a vyberte větev k sestavení.

  4. 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:

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é:

  1. Najděte nastavení webhooků nebo integrací ve svém CMS.
  2. Vytvořte nový webhook a vložte URL adresu Deploy Hook jako cílovou URL adresu.
  3. 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ě:

  1. První požadavek vytvoří sestavení.
  2. Pokud dorazí druhý požadavek, zatímco je sestavení stále queued nebo initializing, nevytvoří se druhý build.
  3. Místo toho se vrátí existující build_uuid a nastaví already_exists na true.

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

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.