Secrets voor GitHub Actions met Crunu en OIDC
Draai stappen in GitHub Actions met variabelen uit een Crunu-omgeving. Een servicetoken krijgt alleen wat je toekent; OIDC bindt het aan repository en branch.
- Ondersteuning
- Werkt vandaag met Crunu: ondersteuning voor GitHub Actions hoort bij het product.
- Functies van Crunu
- CI/CD en Machines
- Gecontroleerd
- Tegen Crunu 6.0.0 op 27 oktober 2026
Functies van Crunu die met GitHub Actions werken
Elke functie hieronder werkt in elke integratie op dezelfde manier: de server bewaart versleutelde data, en alleen de mensen, machines en tokens die je toegang geeft, kunnen ontsleutelen.
CI/CD
Geef elke pipeline een servicetoken dat beperkt is tot de eigen omgevingen, en bind het met OIDC aan je CI-provider, zodat een gelekt token niet op zichzelf kan inloggen.
Lees meer
Machines
Schrijf een server in met een eenmalige code, en de agent crunu houdt de omgevingen in het geheugen en start je programma’s ermee.
Lees meer
Zo werkt het met GitHub Actions
Op deze pagina
Wat Crunu doet in GitHub Actions
Een workflowstap voert je opdracht uit via crunu run. De agent crunu logt in met een servicetoken, controleert de handtekeningen op alles wat de server stuurt, ontsleutelt de variabelen in zijn eigen geheugen en start de opdracht ermee. Er wordt niets naar schijf geschreven.
crunu run --env web-app/staging -- npm testHet token krijgt alleen de omgevingen die je eraan toekent. Met een CI-binding (OIDC) heeft het daarnaast een vers GitHub-token nodig voor de repository, branch en deployment-omgeving die je instelt, zodat een gelekte CRUNU_TOKEN niet op zichzelf kan inloggen. crunu vraagt dat GitHub-token zelf aan, en de server weigert een token dat al eerder is gebruikt.
Instellen
- Open in Crunu Service tokens en kies New service token. Geef het token een naam zoals
github-actions-web-app, kenweb-app / stagingtoe en houd de standaardlease van 30 dagen. Het token werkt niet meer als geen enkele run het langer dan de lease gebruikt, en elke run verlengt die. - Het token wordt maar één keer getoond. Bewaar het meteen als repositorysecret
CRUNU_TOKEN. - Kopieer de waarden uit het blok CI setup op de pagina van het token naar repositoryvariabelen:
CRUNU_SERVER,CRUNU_VERSION,CRUNU_INSTALL_URL,CRUNU_INSTALL_SHA256enCRUNU_BINARY_SHA256. Ze komen uit het ondertekende releasemanifest. In de cloud isCRUNU_SERVERgelijk aanhttps://app.crunu.com. - Optioneel: voeg op de pagina van het token een CI-binding (OIDC) toe. Kies de provider GitHub en stel
repository,refen, voor een token voor production,environmentin.
Voorbeeldworkflow
Deze job installeert een vastgezette versie van crunu, controleert de SHA-256 van het installatiescript voordat het wordt uitgevoerd, en draait de tests met de variabelen van staging.
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 testVoor een token voor production kan de CI-binding (OIDC) dit vereisen:
repository:kiteline/web-appref:refs/heads/mainenvironment:production
De audience is het adres van je Crunu-server. crunu vraagt GitHub om een token met die audience, en daarom heeft de job id-token: write nodig.
De action setup-crunu
Dezelfde installatiestappen bestaan ook als kleine composite action, setup-crunu. Die staat niet op GitHub Marketplace. Bewaar een kopie van de twee bestanden ervan in .github/actions/setup-crunu/ van je repository, zodat de code die de secrets van je pipeline raakt, door dezelfde review gaat als de rest van je code. Publiceer je de action in plaats daarvan als aparte repository, zet hem dan vast op een volledige commit-SHA, niet op een 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 testDe action neemt geen contact op met de Crunu-server. Hij installeert alleen crunu en voegt het toe aan PATH voor de volgende stappen.
Houd het token buiten bereik
- Zet
CRUNU_TOKENin deenvvan de ene stap diecrunuuitvoert. Variabelen op het niveau van de job of de workflow bereiken elke stap. - Start
crunumetexec. De shell van de stap wordt dan vervangen doorcrunu, en het token blijft niet achter in een proces dat je opdracht kan lezen. - De opdracht onder
crunu runontvangt nooit de eigen toegangsgegevens vancrunu, zoalsCRUNU_TOKENofCRUNU_OIDC_TOKEN.
Runners en checksums
crunu draait op runners met Linux en macOS, op amd64 en arm64, ook op self-hosted runners. Windows-runners worden niet ondersteund. De checksum in het blok CI setup is voor Linux amd64. Stel voor runners met arm64 of macOS checksums per platform in uit de manifest.json van de release, bijvoorbeeld amd64=… en darwin-arm64=….
Production zonder CI
De opzet die Crunu aanraadt, houdt de waarden van production buiten de pipeline. De productieserver draait de agent crunu en haalt zijn eigen omgeving op, en de workflow levert alleen de code en herstart de service. Zie systemd.
Intrekken
Open het token en kies Revoke. Het volgende inloggen ervan wordt geweigerd, en een stap die al draait, maakt af met wat hij heeft ontvangen. Kan het token zijn gelekt, trek het dan in, roteer de sleutels van de omgevingen die het kreeg, en geef de waarden daarin opnieuw uit bij hun providers.
Verwant
Veelgestelde vragen
Staat je vraag er niet bij? Mail naar support@crunu.com, dan antwoordt een mens.
Staat de action setup-crunu op GitHub Marketplace?
Nee. Kopieer de twee bestanden ervan naar .github/actions/setup-crunu/ in je repository, of installeer crunu in een stap met drie gewone opdrachten.
Heeft de job de permissie id-token: write nodig?
Alleen als het servicetoken een CI-binding (OIDC) heeft. crunu vraagt GitHub dan om een token waarvan de audience je Crunu-server is.
Kan de opdracht die ik uitvoer CRUNU_TOKEN lezen?
crunu run geeft zijn eigen toegangsgegevens nooit door aan de opdracht. Zet het token alleen in de stap die crunu uitvoert, en start crunu met exec.
Werkt het op Windows-runners?
Nee. crunu draait op runners met Linux en macOS, op amd64 en arm64.