Naar de inhoud
IngebouwdCI-pipeline

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
Voorbeeld. Kiteline is een fictief bedrijf.

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.

Shell
crunu run --env web-app/staging -- npm test

Het 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

  1. Open in Crunu Service tokens en kies New service token. Geef het token een naam zoals github-actions-web-app, ken web-app / staging toe 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.
  2. Het token wordt maar één keer getoond. Bewaar het meteen als repositorysecret CRUNU_TOKEN.
  3. 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_SHA256 en CRUNU_BINARY_SHA256. Ze komen uit het ondertekende releasemanifest. In de cloud is CRUNU_SERVER gelijk aan https://app.crunu.com.
  4. Optioneel: voeg op de pagina van het token een CI-binding (OIDC) toe. Kies de provider GitHub en stel repository, ref en, voor een token voor production, environment in.

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.

YAML
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 test

Voor een token voor production kan de CI-binding (OIDC) dit vereisen:

  • repository: kiteline/web-app
  • ref: refs/heads/main
  • environment: 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.

YAML
      - 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 test

De 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_TOKEN in de env van de ene stap die crunu uitvoert. Variabelen op het niveau van de job of de workflow bereiken elke stap.
  • Start crunu met exec. De shell van de stap wordt dan vervangen door crunu, en het token blijft niet achter in een proces dat je opdracht kan lezen.
  • De opdracht onder crunu run ontvangt nooit de eigen toegangsgegevens van crunu, zoals CRUNU_TOKEN of CRUNU_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.

Probeer het met GitHub Actions

Maak je organisatie aan op app.crunu.com, voeg één omgeving toe en koppel die. Gratis tijdens de vroege toegang.