← Artifacts / artifacts / get-started
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
- Zaregistrujte si účet Cloudflare ↗.
- 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:
- Nainstalovaný Wrangler. Pokud v tomto průvodci používáte lokální příkazy Wrangler, nejprve Wrangler autentizujte. Pro lokální autentizaci OAuth nebo nastavení CI se podívejte na
wrangler logina Spouštění Wrangler v CI/CD. - Přístup ke službě Artifacts ve vašem účtu Cloudflare.
- Název jmenného prostoru, například
default. - Místní
gitklient. jq, pokud chcete automaticky extrahovat pole z odpovědi.
1. Vytvořte projekt Worker
-
Vytvoření nového projektu Worker pomocí C3:
npm create cloudflare@latest -- artifacts-workerPř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).
- Pro S čím byste chtěli začít?, vyberte
-
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 typesWrangler 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:
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" },
});
},
};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 devPoté 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:main6. 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 -1Mě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-clone7. Nasaďte svůj Worker
Přepněte se zpět do adresáře projektu Worker:
cd artifacts-workerNasaďte Worker, abyste mohli vytvářet repozitáře bez nutnosti spouštět wrangler dev:
npx wrangler deployWrangler 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í.