Vai al contenuto
IntegratoPipeline CI

Segreti in GitHub Actions con Crunu e OIDC

Esegui i passaggi di GitHub Actions con le variabili di un ambiente Crunu. Il token riceve solo ciò che concedi, e OIDC lo lega a un repository e a un branch.

Supporto
Funziona con Crunu oggi: il supporto per GitHub Actions fa parte del prodotto.
Funzionalità di Crunu
CI/CD e Macchine
Verificato
Con Crunu 6.0.0 il 27 ottobre 2026
Esempio. Kiteline è un’azienda fittizia.

Funzionalità di Crunu che funzionano con GitHub Actions

Ogni funzionalità qui sotto funziona allo stesso modo in ogni integrazione: il server conserva testo cifrato, e solo le persone, le macchine e i token a cui concedi l’accesso possono decifrare.

  • CI/CD

    Dai a ogni pipeline un token di servizio limitato ai suoi ambienti e legalo al tuo provider CI con OIDC, così un token trapelato non può accedere da solo.

    Scopri di più

  • Macchine

    Registra un server con un codice monouso: l’agente crunu tiene i suoi ambienti in memoria e avvia i tuoi programmi con quelle variabili.

    Scopri di più

Come funziona con GitHub Actions

In questa pagina

Cosa fa Crunu in GitHub Actions

Un passaggio del workflow esegue il tuo comando tramite crunu run. L’agente crunu accede con un token di servizio, controlla le firme su tutto ciò che il server invia, decifra le variabili nella propria memoria e avvia il comando con quelle variabili. Nulla viene scritto su disco.

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

Il token riceve solo gli ambienti che gli concedi. Con un vincolo CI (OIDC), gli serve anche un token GitHub fresco per il repository, il branch e l’ambiente di deployment che imposti, così un CRUNU_TOKEN trapelato non può accedere da solo. crunu richiede da sé quel token GitHub, e il server rifiuta un token già usato.

Configurazione

  1. In Crunu, apri Service tokens e scegli New service token. Dagli un nome come github-actions-web-app, concedi web-app / staging e mantieni il lease predefinito di 30 giorni. Il token smette di funzionare se nessuna esecuzione lo usa per più tempo della durata del lease, e ogni esecuzione lo prolunga.
  2. Il token viene mostrato una sola volta. Salvalo subito come secret del repository CRUNU_TOKEN.
  3. Copia i valori del blocco CI setup nella pagina del token nelle variabili del repository: CRUNU_SERVER, CRUNU_VERSION, CRUNU_INSTALL_URL, CRUNU_INSTALL_SHA256 e CRUNU_BINARY_SHA256. Provengono dal manifest firmato della release. Nel cloud, CRUNU_SERVER è https://app.crunu.com.
  4. Facoltativo: aggiungi un vincolo CI (OIDC) nella pagina del token. Scegli il provider GitHub e imposta repository, ref e, per un token di produzione, environment.

Workflow di esempio

Questo job installa una versione fissata di crunu, controlla lo SHA-256 dell’installer prima di eseguirlo ed esegue i test con le variabili di 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

Per un token di produzione, il vincolo CI (OIDC) potrebbe richiedere:

  • repository: kiteline/web-app
  • ref: refs/heads/main
  • environment: production

L’audience è l’indirizzo del tuo server Crunu. crunu chiede a GitHub un token con quell’audience, ed è per questo che il job ha bisogno di id-token: write.

L’action setup-crunu

Gli stessi passaggi di installazione sono disponibili anche come piccola action composita, setup-crunu. Non è pubblicata su GitHub Marketplace. Tieni una copia dei suoi due file in .github/actions/setup-crunu/ nel tuo repository, così il codice che tocca i segreti della pipeline passa dalla stessa revisione del resto del codice. Se invece la pubblichi come repository separato, fissala a uno SHA di commit completo, non a un 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

L’action non contatta il server Crunu. Si limita a installare crunu e ad aggiungerlo al PATH per i passaggi successivi.

Tieni il token fuori portata

  • Imposta CRUNU_TOKEN nella sezione env dell’unico passaggio che esegue crunu. Le variabili a livello di job e di workflow raggiungono ogni passaggio.
  • Avvia crunu con exec. La shell del passaggio viene così sostituita da crunu, e il token non resta in un processo che il tuo comando potrebbe leggere.
  • Il comando sotto crunu run non riceve mai le credenziali di crunu, come CRUNU_TOKEN o CRUNU_OIDC_TOKEN.

Runner e checksum

crunu funziona sui runner Linux e macOS, su amd64 e arm64, compresi i runner self-hosted. I runner Windows non sono supportati. Il checksum nel blocco CI setup è per Linux amd64. Per i runner arm64 o macOS, imposta i checksum per piattaforma dal manifest.json della release, ad esempio amd64=… e darwin-arm64=….

Production senza CI

La configurazione che Crunu consiglia tiene i valori di produzione fuori dalla pipeline. Il server di produzione esegue l’agente crunu e scarica da solo il proprio ambiente, e il workflow si limita a consegnare il codice e a riavviare il servizio. Vedi systemd.

Revoca

Apri il token e scegli Revoke. Il suo accesso successivo viene rifiutato, e un passaggio già in esecuzione termina con ciò che ha ricevuto. Se il token potrebbe essere trapelato, revocalo, ruota le chiavi degli ambienti che gli erano stati concessi e riemetti presso i fornitori i valori che contengono.

Correlati

Dubbi frequenti

Non trovi la risposta? Scrivi a support@crunu.com e ti risponderà una persona.

L’action setup-crunu è su GitHub Marketplace?

No. Copia i suoi due file in .github/actions/setup-crunu/ nel tuo repository, oppure installa crunu con tre semplici comandi in un passaggio.

Il job ha bisogno del permesso id-token: write?

Solo se il token di servizio ha un vincolo CI (OIDC). In quel caso crunu chiede a GitHub un token la cui audience è il tuo server Crunu.

Il comando che eseguo può leggere CRUNU_TOKEN?

crunu run non passa mai le proprie credenziali al comando. Imposta il token solo nel passaggio che esegue crunu, e avvia crunu con exec.

Funziona sui runner Windows?

No. crunu funziona sui runner Linux e macOS, su amd64 e arm64.

Provalo con GitHub Actions

Crea la tua organizzazione su app.crunu.com, aggiungi un ambiente e collegalo. Gratis durante l’accesso anticipato.