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
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.
crunu run --env web-app/staging -- npm testIl 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
- In Crunu, apri Service tokens e scegli New service token. Dagli un nome come
github-actions-web-app, concediweb-app / staginge 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. - Il token viene mostrato una sola volta. Salvalo subito come secret del repository
CRUNU_TOKEN. - Copia i valori del blocco CI setup nella pagina del token nelle variabili del repository:
CRUNU_SERVER,CRUNU_VERSION,CRUNU_INSTALL_URL,CRUNU_INSTALL_SHA256eCRUNU_BINARY_SHA256. Provengono dal manifest firmato della release. Nel cloud,CRUNU_SERVERèhttps://app.crunu.com. - Facoltativo: aggiungi un vincolo CI (OIDC) nella pagina del token. Scegli il provider GitHub e imposta
repository,refe, 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.
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 testPer un token di produzione, il vincolo CI (OIDC) potrebbe richiedere:
repository:kiteline/web-appref:refs/heads/mainenvironment: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.
- 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 testL’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_TOKENnella sezioneenvdell’unico passaggio che eseguecrunu. Le variabili a livello di job e di workflow raggiungono ogni passaggio. - Avvia
crunuconexec. La shell del passaggio viene così sostituita dacrunu, e il token non resta in un processo che il tuo comando potrebbe leggere. - Il comando sotto
crunu runnon riceve mai le credenziali dicrunu, comeCRUNU_TOKENoCRUNU_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.