Secrets für GitHub Actions mit Crunu und OIDC
Schritte in GitHub Actions mit Variablen einer Crunu-Umgebung ausführen. Ein Service-Token bekommt nur Freigegebenes, OIDC bindet es an Repository und Branch.
- Unterstützung
- Funktioniert heute mit Crunu: Die Unterstützung für GitHub Actions ist Teil des Produkts.
- Crunu-Funktionen
- CI/CD und Maschinen
- Geprüft
- Mit Crunu 6.0.0 am 27. Oktober 2026
Crunu-Funktionen, die mit GitHub Actions funktionieren
Jede Funktion unten arbeitet in jeder Integration gleich: Der Server bewahrt Chiffretext auf, und nur die Menschen, Maschinen und Tokens, denen Sie Zugriff gewähren, können entschlüsseln.
CI/CD
Geben Sie jeder Pipeline ein Service-Token, das auf ihre Umgebungen beschränkt ist, und binden Sie es per OIDC an Ihren CI-Anbieter, damit sich ein geleaktes Token nicht allein anmelden kann.
Mehr erfahren
Maschinen
Registrieren Sie einen Server mit einem Einmalcode. Der Agent crunu hält seine Umgebungen im Arbeitsspeicher und startet Ihre Programme damit.
Mehr erfahren
So funktioniert es mit GitHub Actions
Auf dieser Seite
Was Crunu in GitHub Actions tut
Ein Workflow-Schritt führt Ihren Befehl über crunu run aus. Der Agent crunu meldet sich mit einem Service-Token an, prüft die Signaturen von allem, was der Server sendet, entschlüsselt die Variablen in seinem eigenen Arbeitsspeicher und startet den Befehl damit. Nichts wird auf die Festplatte geschrieben.
crunu run --env web-app/staging -- npm testDas Token bekommt nur die Umgebungen, die Sie ihm freigeben. Mit einer CI-Bindung (OIDC) braucht es zusätzlich ein frisches GitHub-Token für das Repository, den Branch und die Deployment-Umgebung, die Sie festlegen, sodass sich ein geleaktes CRUNU_TOKEN nicht allein anmelden kann. crunu fordert dieses GitHub-Token selbst an, und der Server lehnt eines ab, das schon einmal verwendet wurde.
Einrichtung
- Öffnen Sie in Crunu Service tokens und wählen Sie New service token. Geben Sie ihm einen Namen wie
github-actions-web-app, gewähren Sieweb-app / stagingund behalten Sie die Standard-Lease von 30 Tagen. Das Token funktioniert nicht mehr, wenn es länger als die Lease von keinem Lauf genutzt wird, und jeder Lauf verlängert sie. - Das Token wird nur einmal angezeigt. Speichern Sie es sofort als Repository-Secret
CRUNU_TOKEN. - Kopieren Sie die Werte aus dem Block CI setup auf der Seite des Tokens in Repository-Variablen:
CRUNU_SERVER,CRUNU_VERSION,CRUNU_INSTALL_URL,CRUNU_INSTALL_SHA256undCRUNU_BINARY_SHA256. Sie stammen aus dem signierten Release-Manifest. In der Cloud istCRUNU_SERVERgleichhttps://app.crunu.com. - Optional: Fügen Sie auf der Seite des Tokens eine CI-Bindung (OIDC) hinzu. Wählen Sie den Anbieter GitHub und setzen Sie
repository,refund, für ein Produktions-Token,environment.
Beispiel-Workflow
Dieser Job installiert eine festgelegte Version von crunu, prüft die SHA-256-Prüfsumme des Installers, bevor er ihn ausführt, und führt die Tests mit den Variablen von staging aus.
jobs:
test:
runs-on: ubuntu-latest
permissions:
id-token: write # only if the token has a CI binding (OIDC)
contents: read
steps:
- uses: actions/checkout@v4
- name: Install crunu
run: |
curl -sSf "${{ vars.CRUNU_INSTALL_URL }}" -o /tmp/crunu-install.sh
echo "${{ vars.CRUNU_INSTALL_SHA256 }} /tmp/crunu-install.sh" | sha256sum -c -
sh /tmp/crunu-install.sh --version "${{ vars.CRUNU_VERSION }}" --sha256 "${{ vars.CRUNU_BINARY_SHA256 }}" --user-install
- name: Tests
env:
CRUNU_TOKEN: ${{ secrets.CRUNU_TOKEN }}
CRUNU_SERVER: ${{ vars.CRUNU_SERVER }}
run: exec crunu run --env web-app/staging -- npm testFür ein Produktions-Token könnte die CI-Bindung (OIDC) Folgendes verlangen:
repository:kiteline/web-appref:refs/heads/mainenvironment:production
Die Audience ist die Adresse Ihres Crunu-Servers. crunu fragt GitHub nach einem Token mit dieser Audience, deshalb braucht der Job id-token: write.
Die Action setup-crunu
Dieselben Installationsschritte gibt es auch als kleine Composite Action, setup-crunu. Sie ist nicht im GitHub Marketplace veröffentlicht. Bewahren Sie eine Kopie ihrer zwei Dateien in .github/actions/setup-crunu/ Ihres Repositorys auf, damit der Code, der die Secrets Ihrer Pipeline berührt, dasselbe Review durchläuft wie der Rest Ihres Codes. Veröffentlichen Sie sie stattdessen als eigenes Repository, pinnen Sie sie auf einen vollständigen Commit-SHA, nicht auf ein Tag.
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-crunu
with:
version: ${{ vars.CRUNU_VERSION }}
install-url: ${{ vars.CRUNU_INSTALL_URL }}
install-sha256: ${{ vars.CRUNU_INSTALL_SHA256 }}
sha256: ${{ vars.CRUNU_BINARY_SHA256 }}
- env:
CRUNU_TOKEN: ${{ secrets.CRUNU_TOKEN }}
CRUNU_SERVER: ${{ vars.CRUNU_SERVER }}
run: exec crunu run --env web-app/staging -- npm testDie Action kontaktiert den Crunu-Server nicht. Sie installiert nur crunu und fügt es für die nächsten Schritte zu PATH hinzu.
Das Token unerreichbar halten
- Setzen Sie
CRUNU_TOKENimenvdes einen Schritts, dercrunuausführt. Variablen auf Ebene des Jobs oder des Workflows erreichen jeden Schritt. - Starten Sie
crunumitexec. Die Shell des Schritts wird dann durchcrunuersetzt, und das Token bleibt nicht in einem Prozess zurück, den Ihr Befehl lesen könnte. - Der Befehl unter
crunu runerhält nie die eigenen Zugangsdaten voncrunu, etwaCRUNU_TOKENoderCRUNU_OIDC_TOKEN.
Runner und Prüfsummen
crunu läuft auf Runnern mit Linux und macOS, auf amd64 und arm64, auch auf selbst gehosteten Runnern. Runner mit Windows werden nicht unterstützt. Die Prüfsumme im Block „CI setup“ gilt für Linux amd64. Für Runner mit arm64 oder macOS setzen Sie Prüfsummen pro Plattform aus der manifest.json des Releases, zum Beispiel amd64=… und darwin-arm64=….
Produktion ohne CI
Die von Crunu empfohlene Einrichtung hält Werte für production aus der Pipeline heraus. Der Produktionsserver führt den Agenten crunu aus und holt seine Umgebung selbst, und der Workflow liefert nur den Code und startet den Dienst neu. Siehe systemd.
Widerrufen
Öffnen Sie das Token und wählen Sie Revoke. Seine nächste Anmeldung wird abgelehnt, und ein bereits laufender Schritt läuft mit dem zu Ende, was er erhalten hat. Falls das Token geleakt sein könnte, widerrufen Sie es, rotieren Sie die Schlüssel der Umgebungen, die es erhalten hat, und stellen Sie die Werte darin bei ihren Anbietern neu aus.
Weiterführend
Fragen aus der Praxis
Nicht dabei? Schreiben Sie an support@crunu.com, und ein Mensch antwortet.
Gibt es die Action setup-crunu im GitHub Marketplace?
Nein. Kopieren Sie ihre zwei Dateien nach .github/actions/setup-crunu/ in Ihrem Repository, oder installieren Sie crunu in einem Schritt mit drei einfachen Befehlen.
Braucht der Job die Berechtigung id-token: write?
Nur wenn das Service-Token eine CI-Bindung (OIDC) hat. crunu fragt GitHub dann nach einem Token, dessen Audience Ihr Crunu-Server ist.
Kann der Befehl, den ich ausführe, CRUNU_TOKEN lesen?
crunu run übergibt seine eigenen Zugangsdaten nie an den Befehl. Setzen Sie das Token nur in dem Schritt, der crunu ausführt, und starten Sie crunu mit exec.
Funktioniert es auf Windows-Runnern?
Nein. crunu läuft auf Runnern mit Linux und macOS, auf amd64 und arm64.