Szenario & Schmerzpunkte
Auf einem gemeinsamen Remote-Mac-Pool mischen sich iOS-Pipelines, Node-Frontends und eben Deno-Services. Ohne klare Regeln kollidieren Netz-Policies.
- Registrierungs- und URL-Vielfalt: JSR-Metadaten unter
jsr.io, npm-Compat überregistry.npmjs.orgoder interne Verdoppelungen – jede Ausnahme im Proxy kostet Tickets und Zeit. - Lockfile-Drift: Lokale
deno.lock-Updates ohne Review erzeugen CI, die „grün“ ist, bis ein Spiegel kurz hinter dem Kanonischen hängt und Auflösung unstet wird. - Cache-Konkurrenz: Mehrere Jobs auf einem Host mit identischem
DENO_DIRohne Isolation erhöhen Lock-Wartezeiten auf der Platte und erzeugen flakyENOENT-Fehler unter Last.
Deno/JSR: Pull-Pfade im Vergleich (Tabelle)
Die folgende Übersicht ordnet typische Spezifizierer dem erwarteten Origin und den operativen Hebeln zu. Sie dient der Abstimmung mit Netzwerk- und Security-Teams.
| Spezifizierer / Quelle | Primärer Origin | Operative Hebel | Hinweis für CI |
|---|---|---|---|
jsr:@scope/pkg |
JSR-API (jsr.io) |
Proxy-Allowlist, TLS-Inspection, NO_PROXY-Feintuning |
Metadaten klein, aber strikt versioniert – ideal für frozen Lock |
npm:pkg |
npm-Registry (öffentlich oder Spiegel) | NPM_CONFIG_REGISTRY oder Deno-nodeModulesDir-Policy |
Spiegel-Treiber gleichen sich mit Node-CI; konsistente Matrix pflegen |
https://… URL-Import |
Beliebiger Host (Git-Raw, CDN) | Zusätzliche Allowlist, ggf. interner Pull-Through-Cache | Höchstes Risiko für Compliance – dokumentieren oder verbieten |
Lokale file: / Workspace |
Repo-Artefakte | Kein WAN; nur Build-Ordnung | Schnellster Pfad für Monorepo-Hilfspakete |
Lockfile & Cache-Verzeichnisse: ausführbare Parameter
Setzen Sie diese Variablen und Flags bewusst; Werte sind Startpunkte für instabile grenzüberschreitende Routen auf gemieteten Macs.
| Ziel | Parameter / Datei | Beispielwert | Risiko wenn falsch |
|---|---|---|---|
| Globaler Cache-Pfad | DENO_DIR |
/var/ci/deno/$CI_JOB_ID |
Geteilte Ordner ohne Strategie → Lock-Stürme |
| Lock strikt | deno.json → "lock": { "frozen": true } / CI --frozen |
frozen in Prod-Builds | PR blockiert, bis Lock sauber – gewollt |
| TLS / Firmen-CA | DENO_TLS_CA_STORE=system |
system + ggf. SSL_CERT_FILE |
Falsches Bundle → massenhaft TLS-Fehler |
| Keine Prompts | DENO_NO_PROMPT=1 |
immer in CI | Fehlende Rechte fallen sofort auf |
| npm-Registry | NPM_CONFIG_REGISTRY |
interner Spiegel-URL | Drift gegenüber Entwickler-Laptops |
| Ihre Randbedingung | Empfehlung |
|---|---|
| Nur JSR + feste Versionen, Compliance hoch | lock.frozen, dediziertes DENO_DIR, kein https:-Wildwuchs |
| Hybrid npm + JSR, interner npm-Spiegel | NPM_CONFIG_REGISTRY angleichen an Node-CI; gemeinsame Spiegel-Doku |
| Sehr schmale WAN-Leitung | Warm-Job mit deno cache, danach optional --cached-only nur nach Messung |
CI-Parallelität & Timeout-Schwellen
Apple-Silicon ist schnell genug, um zu viele gleichzeitige Downloads zu erzeugen – das WAN wird zum Flaschenhals. Die Tabelle fasst Schwellen für geteilte Remote-Macs zusammen.
| Hebel | Startwert (geteilter M4-Host) | Begründung |
|---|---|---|
Gleichzeitige deno cache-Jobs |
2–3 Slots | Reduziert TCP-Resets und zufällige Timeouts auf transkontinentalen Pfaden |
DENO_JOBS (Tests) |
CPU-Kerne ÷ 2, max. 6 | Schützt IO für gleichzeitige Pull-Jobs auf demselben Host |
Shell-timeout um Install |
900–1200 s | Verhindert endlos hängende Runner bei partiellen Ausfällen |
| Retry-Backoff nach Exit 124/Netz | 3 Versuche, Pause 2/4/8 s | Exponentiell begrenzt, ohne CI-Schleifen zu riskieren |
Rollout in fünf Schritten:
- Deno-Binärversion im Image festnageln und
deno --versionin jedem Job loggen. deno.locknur auf Referenz-Runner derselben Architektur erzeugen oder aktualisieren.- Pro Pipeline
DENO_DIRmit eindeutigem Suffix setzen; niemals silent zwischen Jobs teilen ohne Policy. - Proxy- und
NO_PROXY-Listen mit Security abgleichen; JSR- und npm-Hosts explizit benennen. - Metriken: mittlere Dauer von
deno install, Fehlerquote TLS vs. Timeout, freier Speicher unterDENO_DIR– bei Abweichung Slots reduzieren.
FAQ: grenzüberschreitende Netzfehler, Retries & Fallback
- TLS schlägt nur auf dem Remote-Mac fehl, lokal nicht?
- Vergleichen Sie
DENO_TLS_CA_STOREund macOS-Keychain vs. Container-Trust. Häufig fehlt die Firmen-CA im CI-Image;SSL_CERT_FILEauf das Bundle zeigen, das Security freigegeben hat. - Soll ich
--cached-onlyim Produktions-Job aktivieren? - Nur nach einem verifizierten Warm-Schritt und wenn alle Spezifizierer im Cache landen. Andernfalls erhöhen Sie lieber Retries und Parallel-Slots senken – weniger Überraschungen bei gemischten Imports.
- 429 oder Rate-Limits vom Spiegel?
- Parallelität halbieren, Backoff anwenden und Spiegel-Kapazität mit Ops klären; vermeiden Sie identische User-Agents in Dutzend parallelen Matrix-Jobs ohne Token-Rotation.
- 2–3 parallele
deno cache-Jobs pro geteiltem M4-Host sind ein robuster Start; mehr Slots erhöhen WAN-Fehler auf transkontinentalen Routen. - 900–1200 s Shell-
timeoutumdeno installplus drei Versuche mit Pause 2/4/8 s deckeln Hänger. DENO_DIRmit$CI_JOB_IDvermeidet Cache-Kollisionen klarer als ein geteilter Ordner ohne Quota.
Fazit
Mit klarer JSR- vs. npm-Pfad-Tabelle, isoliertem DENO_DIR und einer frozen Lockfile-Politik werden Deno-Pulls auf gemieteten Remote-Macs planbar – unabhängig davon, ob Ihre CI in Europa, Ostasien oder Nordamerika triggert. Ein physischer Mac in der passenden Region verkürzt oft Round-Trips zu Spiegeln stärker als jedes Mikro-Tuning im Resolver. Auf der Startseite, unter Kaufen und in der Hilfe finden Sie ohne Login-Pflicht Pakete und SSH-Hinweise; ergänzend lohnt der Build-Pool-FAQ für gemeinsame Runner. Mieten statt kaufen bleibt die pragmatischste Option, wenn grenzüberschreitende Abhängigkeits-Pulls und parallele CI-Experimente schnell drehen müssen, ohne Kapital in Hardware zu binden.
Nächste Schritte – ohne Login
Knoten wählen, Hilfe lesen; verwandte Pull-Guides im Blog.