INTEGRITY Dokumentace

Git klient

S repozitáři Artifacts můžete pracovat pomocí standardního Git klienta. Tento příklad popisuje klonování, ale stejný postup funguje i pro fetch, pull, push a jakoukoli jinou operaci Gitu.

K tomu potřebujete:

Jakmile máte vzdálenou adresu URL a token, můžete je použít ke spouštění příkazů Git proti repozitáři.

Tento příklad předpokládá, že repozitář již existuje a že máte Token Cloudflare API hodnotou Artefakty > Úprava.

Načtěte vzdálený repozitář a naklonujte ho

Nahraďte zástupné hodnoty svým ID účtu, tokenem API a názvem repozitáře. Skript načte vzdálenou adresu URL repozitáře z API, vytvoří token pouze pro čtení s platností jedna hodina a naklonuje repozitář do místního adresáře.

Příklad níže používá jq k extrakci polí z odpovědí JSON.

# Set your account details
export ACCOUNT_ID="<YOUR_ACCOUNT_ID>"
export ARTIFACTS_NAMESPACE="default"
export ARTIFACTS_REPO="starter-repo"
export CLOUDFLARE_API_TOKEN="<YOUR_API_TOKEN>"
export ARTIFACTS_BASE_URL="https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/artifacts/namespaces/$ARTIFACTS_NAMESPACE"

# Fetch the repo's remote URL
REPO_JSON=$(curl --silent "$ARTIFACTS_BASE_URL/repos/$ARTIFACTS_REPO" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN")

ARTIFACTS_REMOTE=$(printf '%s' "$REPO_JSON" | jq -r '.result.remote')

# Mint a short-lived read token
TOKEN_JSON=$(curl --silent "$ARTIFACTS_BASE_URL/tokens" \
  --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data "{\"repo\":\"$ARTIFACTS_REPO\",\"scope\":\"read\",\"ttl\":3600}")

ARTIFACTS_TOKEN=$(printf '%s' "$TOKEN_JSON" | jq -r '.result.plaintext')

# Clone the repo
git -c http.extraHeader="Authorization: Bearer $ARTIFACTS_TOKEN" clone "$ARTIFACTS_REMOTE" artifacts-clone

Nyní máte standardní Git checkout v ./artifacts-clone.

Tento postup se hodí, když vyhledávání repozitářů nebo řízení přístupu zajišťuje jiný systém, ale váš lokální nástroj přesto očekává běžné vzdálené úložiště git.

Ověřování

Považujte ARTIFACTS_TOKEN jako tajný údaj. Nezahrnujte ho do protokolů a upřednostněte http.extraHeader před ukládáním přihlašovacích údajů do vzdálené URL adresy.

Pokud pro krátkodobý workflow potřebujete samostatnou adresu URL vzdáleného repozitáře, získejte token secret a autentizovanou vzdálenou adresu sestavte pouze pro tento příkaz:

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

git clone "$ARTIFACTS_AUTH_REMOTE" artifacts-clone