INTEGRITY Dokumentace

Workers

Vytvořte repozitář Artifacts z Workeru a k nahrávání a stahování obsahu použijte standardní klient Git.

Na konci tohoto průvodce vytvoříte Workera, propojíte ho s Artifacts, prostřednictvím bindingu Workers vytvoříte repozitář, odešlete commit a stejný repozitář naklonujete zpět pomocí standardního klienta Git.

Začněte čtením Jmenné prostory, pak zvolte název namespace, který budete používat. Tento návod používá default v příkladech.

Předpoklady

  1. Zaregistrujte si účet Cloudflare ↗.
  2. Nainstalujte Node.js ↗.

Správce verzí Node.js

Použijte správce verzí Node, jako je Volta ↗ nebo nvm ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler, o kterém se dozvíte dále v této příručce, vyžaduje verzi Node 16.17.0 nebo novější.

Dále potřebujete:

1. Vytvořte projekt Worker

  1. Vytvoření nového projektu Worker pomocí C3:

    npm create cloudflare@latest -- artifacts-worker

    Při nastavení vyberte následující možnosti:

    • Pro S čím byste chtěli začít?, vyberte Hello World example.
    • Pro Jakou šablonu chcete použít?, vyberte Worker only.
    • Pro Jaký jazyk chcete použít?, vyberte TypeScript.
    • Pro Chcete používat git pro správu verzí?, vyberte Yes.
    • Pro Chcete nasadit svou aplikaci?, vyberte No (před nasazením provedeme ještě několik změn).
  2. Přejděte do adresáře projektu:

    cd artifacts-worker

2. Přidejte vazbu Artifacts

Otevřete konfigurační soubor Wrangler a přidejte vazbu Artifacts:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "artifacts-worker",
  "main": "src/index.ts",
  // Set this to today's date
  "compatibility_date": "2026-08-28",
  "artifacts": [
    {
      "binding": "ARTIFACTS",
      "namespace": "default"
    }
  ]
}
name = "artifacts-worker"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-08-28"

[[artifacts]]
binding = "ARTIFACTS"
namespace = "default"
# Set remote = true if you want Wrangler to use the remote Artifacts service in local dev.

Tím se Artifacts zpřístupní jako env.ARTIFACTS uvnitř vašeho Workeru.

Pokud používáte TypeScript, vygenerujte znovu místní typy vazeb:

npx wrangler types

Wrangler přidá Artifacts typ do vygenerovaného worker-configuration.d.ts .

3. Napište svůj Worker

Nahraďte src/index.ts s následujícím kódem:

src/index.js
export default {
	async fetch(request, env) {
		const url = new URL(request.url);

		if (request.method === "POST" && url.pathname === "/repos") {
			// Read the repo name from the request body so the route is reusable.
			const body = await request.json().catch(() => ({}));

			const repoName = body.name ?? "starter-repo";

			// Create the repo and return the remote URL plus initial write token.
			const created = await env.ARTIFACTS.create(repoName);

			return Response.json({
				name: created.name,
				remote: created.remote,
				token: created.token,
			});
		}

		return new Response("Use POST /repos to create an Artifacts repo.", {
			status: 405,
			headers: { Allow: "POST" },
		});
	},
};
src/index.ts
export default {
	async fetch(request, env) {
		const url = new URL(request.url);

		if (request.method === "POST" && url.pathname === "/repos") {
			// Read the repo name from the request body so the route is reusable.
			const body = await request.json().catch(() => ({}));

			const repoName = body.name ?? "starter-repo";

			// Create the repo and return the remote URL plus initial write token.
			const created = await env.ARTIFACTS.create(repoName);

			return Response.json({
				name: created.name,
				remote: created.remote,
				token: created.token,
			});
		}

		return new Response("Use POST /repos to create an Artifacts repo.", {
			status: 405,
			headers: { Allow: "POST" },
		});
	},
};

Tento Worker vytvoří repozitář Artifacts a vrátí URL adresu vzdáleného úložiště a token, které váš klient Git potřebuje pro push a pull.

V této ukázce Worker vrací počáteční token pro zápis. V produkčním prostředí vytvářejte krátkodobé tokeny pro čtení pro klonování a stahování, zatímco tokeny pro zápis vytvářejte pouze pro operace vyžadující přístup k odesílání.

4. Vyvolejte svůj Worker a vytvořte repozitář

Spusťte lokální vývoj:

npx wrangler dev

Poté otevřete druhý terminál a odešlete požadavek na váš Worker, který vytvoří nový repozitář Artifacts:

curl http://localhost:8787/repos \
  --header "Content-Type: application/json" \
  --data '{
    "name": "starter-repo"
  }'

Váš Worker zavolá env.ARTIFACTS.create() a vrátí tři hodnoty, které budete potřebovat pro operace Git:

{
	"name": "starter-repo",
	"remote": "https://<ACCOUNT_ID>.artifacts.cloudflare.net/git/default/starter-repo.git",
	"token": "art_v1_0123456789abcdef0123456789abcdef01234567?expires=1760000000"
}
  • name: název repozitáře. Musí být jedinečný v rámci namespace.
  • remote: vzdálená URL Git pro tento repozitář. <ACCOUNT_ID> bude vaše skutečné ID účtu Cloudflare.
  • token: krátkodobé přístupové údaje pro operace Git. Token má svou platnost zakódovanou přímo v ?expires= příponu jako unixové časové razítko.

Zkopírujte remote a token hodnoty do lokálních proměnných shellu:

export ARTIFACTS_REMOTE="<PASTE_REMOTE_FROM_RESPONSE>"
export ARTIFACTS_TOKEN="<PASTE_TOKEN_FROM_RESPONSE>"
RESPONSE=$(curl --silent http://localhost:8787/repos \
  --header "Content-Type: application/json" \
  --data '{"name":"starter-repo"}')

export ARTIFACTS_REMOTE=$(printf '%s' "$RESPONSE" | jq -r '.remote')
export ARTIFACTS_TOKEN=$(printf '%s' "$RESPONSE" | jq -r '.token')

5. Odešlete (push) svůj první commit pomocí git

V předchozím kroku váš Worker vytvořil prázdný repozitář Artifacts. Nyní vytvoříte místní Git repozitář, přidáte do něj soubor a odešlete ho do Artifacts, stejně jako byste ho odeslali do jakéhokoli jiného vzdáleného Git repozitáře.

mkdir artifacts-demo
cd artifacts-demo
git init -b main
printf '# Artifacts demo\n' > README.md
git add README.md
git commit -m "Initial commit"
git remote add origin "$ARTIFACTS_REMOTE"
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" push -u origin main

-c http.extraHeader příznak předá token jako hlavičku požadavku, díky čemuž zůstane mimo konfiguraci Git i historii shellu.

Pokud pro krátkodobý příkaz potřebujete samostatnou adresu URL vzdáleného repozitáře, sestavte ji místo toho z token secret:

export ARTIFACTS_TOKEN_SECRET="${ARTIFACTS_TOKEN%%\?expires=*}"
export ARTIFACTS_AUTH_REMOTE="https://x:${ARTIFACTS_TOKEN_SECRET}@${ARTIFACTS_REMOTE#https://}"
git push "$ARTIFACTS_AUTH_REMOTE" HEAD:main

6. Stáhněte (pull) repozitář pomocí běžného klienta Git

Stejný repozitář naklonujte do druhého adresáře:

cd ..
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone
git -C artifacts-clone log --oneline -1

Měli byste vidět commit, který jste odeslali v předchozím kroku.

Repozitář můžete také naklonovat pomocí samostatné vzdálené adresy URL určené pro krátkodobý příkaz:

git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-clone

7. Nasaďte svůj Worker

Přepněte se zpět do adresáře projektu Worker:

cd artifacts-worker

Nasaďte Worker, abyste mohli vytvářet repozitáře bez nutnosti spouštět wrangler dev:

npx wrangler deploy

Wrangler vypíše váš workers.dev URL adresu. Použijte stejnou curl požadavek vůči této URL adrese, čímž vytvoříte další repozitáře z produkčního prostředí.

Další kroky

Referenční dokumentace k vazbě Workers

Přečtěte si o rozhraní binding, návratových typech a příkladech pro jednotlivé metody.

Osvědčené postupy

Efektivně využívejte izolaci repozitářů, tokeny s nejnižšími nutnými oprávněními a oddělení namespace.

Git protokol

Používejte standardní vzdálená úložiště git-over-HTTPS buď s autentizací v URL adrese, nebo pomocí `http.extraHeader`.