Wenn Sie Jenkins- oder Buildkite-macOS-Agenten auf dedizierten Remote-Macs in Singapur, Japan, Korea, Hongkong, US East und US West betreiben und bereits Self-Hosted-GitHub Actions- oder GitLab-Runner nutzen, liegt Budget- und Audit-Schmerz selten bei vCPU—sondern bei der Credential-Blast-Radius eines zweiten Controllers: Wer hält einen 90-Tage-PAT, welcher Benutzerkontext besitzt Match-Keychain und ASC-Session, und werden Burst-Hosts mit eingefrorenen Secrets im Image neu aufgebaut? Dieser Artikel liefert drei Ledger—Credential-Topologie, Mutex-Regeln, Lease-Buchhaltung—und ergänzt das gestaffelte Jenkins/Buildkite-Lease-Runbook sowie die Checkliste zu Runner-Labels und Secrets: dort geht es um Queues, hier um Identitäten, OIDC und Widerrufspfade.
~/.ssh für Jenkins, buildkite-agent und actions-runner unter derselben Anmeldung macht unbeaufsichtigte CI flaky-grün, sobald git credential-osxkeychain fragt.Der Wert in sechs Regionen ist vorhersagbare Colocation und dedizierter IO; eine unklare Credential-Topologie skaliert nur Verwirrung. Mit hybridem Xcode-Cloud-CI müssen Sie festlegen, welche Identität ASC versus interne Registrys berührt—sonst wird die Hybrid-Matrix ein Hybrid-Vorfall.
Führen Sie ein RACI für Zugangsdaten ein: Die Plattform besitzt Maschinenkonten und OIDC-Anbindungen, Repos Workflow-Umfänge, die Sicherheit Widerrufsübungen. Jede Lücke explodiert, sobald der zweite Controller live geht.
| Dimension | Langlebige PATs / Deploy Keys bevorzugen | OIDC / kurze Tokens bevorzugen |
|---|---|---|
| Lease | Nur auf monatlich oder länger gemieteten Baseline-Hosts mit Secret-Injection außerhalb des Images | Zulässig für tägliche/wöchentliche Burst, wenn Trust-Bedingungen strikt sind |
| Audit-Körnung | Zusätzliches Logging für „wer hat PAT auf welchem Host gelegt“; Rotation folgt oft Quartalen—planen Sie Nachweise auch unter DSGVO/Compliance, wenn Logs personenbezogen wirken | Cloud kann Repo, Umgebung, Pool binden—einfachere Job-Zuordnung |
| Jenkins-Plugin-Ökosystem | Viele Plugins erwarten statische Credential-Dateien | Erfordert explizite Pipeline-Refactors; höhere Einmalkosten |
| Buildkite | Hooks können Secrets still exportieren | Hooks nur zusammenbauen; Secrets aus OIDC-getauschten Kurztokens |
| GHA/GitLab Runner | Self-Hosted Runner halten oft lange .credentials-Dateien |
OIDC zur Cloud-STS ist gängige Praxis—zuerst ausrichten |
Rote Linie: keine org-weiten langen PATs oder Root-Deploy-Keys auf täglichen Burst-Hosts ausstellen. Wenn das Business darauf besteht, binden Sie Secret-Lebensdauer im selben Genehmigungsticket an Lease-Obergrenzen.
jenkins, buildkite, runner; geteilte interaktive Logins für CI verbieten.ROUTING.md und Pipeline-Kommentaren.# Example mutex (replace flock backend with your coordination service)
exec 9>/var/lock/match-decrypt.lock
flock -n 9 || { echo "match decrypt busy"; exit 42; }
# Example split users (LaunchDaemon sketch—do not copy paths blindly)
# UserName=buildkite vs UserName=runner — each HOME keeps its own git credential helper config
.env im Image 2026 schlimmer ist als den zweiten Controller zu überspringenManuelle Keychain-Arbeit ist nicht auditierbar: wer zuletzt entsperrte, ob eine interaktive Session offen blieb—das liefert keine SOC2-Evidenz. Eine universelle .env verbreitert die Blast-Radius von einem Repo auf jeden, der einen Container starten kann—Gegenteil von OIDC-Least-Privilege pro Job.
Wenn Jenkins/Buildkite und Runner auf dediziertem Apple Silicon mit stabilem regionalem Egress und trennbarem Baseline- versus Burst-Leasing koexistieren sollen, ist MACCOME Cloud Mac mini meist der bessere physischer Anker: Knoten in Singapur, Japan, Korea, Hongkong, US East und US West mit flexiblen täglichen/wöchentlichen/monatlichen/quartalsweisen Leases. Verbuchen Sie wer wie lange auf welchem Host leben darf, bevor Sie Compile-Durchsatz jagen—nie einen 90-Tage-PAT auf einem täglichen Host einfrieren, während fünf Simulatoren und drei Notarisierungen laufen.
Liefern Sie drei Tabellen: Maschinenkonto ↔ HOME-Map, Mutex-Ressourcen ↔ Lock-Namen, OIDC-Vertrauen ↔ STS-Scopes. Ein Neuer am ersten Tag sollte nennen, welche Identität ein Job nutzt, welche Token-Klasse bei Fehler zu widerrufen ist und warum auf Burst-Hosts kein 90-Tage-PAT liegt.
Zusammen mit der Runner-Secrets-Checkliste „GitHub-seitiges OIDC“ und „macOS-Keychain-Partitionen“ im selben Change-Ticket zusammenführen—sonst sehen Trust-Policies in der Cloud perfekt aus, während Partitionen auf Metal leer bleiben.
FAQ
Können Jenkins, Buildkite und ein GitHub Actions Runner auf einem Host koexistieren?
Ja mit getrennten Benutzern, Keychain-Partitionen und serialisierten Exklusiv-Schritten; keinen langlebigen PAT über alle Stacks hinweg. Details zur Warteschlange im gestaffelten Lease-Runbook. Öffentliche Leasing-Stufen: Mietpreise.
Warum langlebige Secrets auf monatlichen Baseline-Hosts verankern?
Tägliche Hosts churnen; statische Secrets wandern in Images oder Backups. Baseline-Hosts verankern Audit-Identität. Operatives Kontext auch unter Mac mini bestellen.