Invece di scrivere script shell per installare strumenti, puoi fare riferimento direttamente a GitHub Actions nelle sezioniDocumentation Index
Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
Use this file to discover all available pages before exploring further.
initialize o maintenance del tuo blueprint. Devin scarica ed esegue l’action durante la snapshot build, proprio come i runner CI di GitHub eseguono i passaggi delle action.
Questo è particolarmente utile per le action di configurazione dei linguaggi come setup-python, setup-node e setup-go, che gestiscono automaticamente la gestione delle versioni e la configurazione del PATH.
Sintassi
uses a una qualsiasi sezione del tuo blueprint:
| Campo | Tipo | Descrizione |
|---|---|---|
name | string (facoltativo) | Etichetta leggibile dall’utente visualizzata nei log di build |
uses | string | Riferimento a una GitHub Action (vedi il formato qui sotto) |
with | map (facoltativo) | Parametri di input passati all’azione |
env | map (facoltativo) | Variabili d’ambiente aggiuntive per il passaggio |
Un passaggio deve specificare
run (un comando shell) oppure uses (un’azione), non entrambi.Formato di riferimento per le azioni
github.com/ e il suffisso @<ref> sono entrambi obbligatori. Il ref è in genere un tag di versione come v5.
Esempi:
| Riferimento | A cosa corrisponde |
|---|---|
github.com/actions/setup-python@v5 | actions/setup-python al tag v5 |
github.com/actions/setup-node@v4 | actions/setup-node al tag v4 |
github.com/gradle/actions/setup-gradle@v4 | repo gradle/actions, sottodirectory setup-gradle, tag v4 |
Passare input
with per passare input alla action. Tutti i valori vengono trattati come stringhe, in linea con il comportamento di GitHub Actions:
Impostare le variabili d’ambiente
env per impostare variabili d’ambiente nell’ambito di un singolo passaggio della action:
GITHUB_ENV o GITHUB_PATH) vengono propagate automaticamente ai passaggi successivi del blueprint.
Esempi
Progetto Python con una versione specifica
Progetto multilingue
Combinare azioni e comandi shell
Progetto Java con Gradle
Actions vs. script shell
- Con GitHub Actions
- Script shell equivalente
Come funziona
uses durante una snapshot build:
- Scarica la repository della action (clone shallow del ref bloccato)
- Legge i metadati
action.ymldella action per determinare il runtime e i punti di ingresso - Crea l’ambiente di esecuzione con le variabili
INPUT_*,GITHUB_*eRUNNER_* - Esegue il passaggio
predella action (se definito) e poi il punto di ingressomain - Propaga gli effetti collaterali: tutte le voci scritte dalla action in
GITHUB_PATHoGITHUB_ENVvengono applicate ai passaggi successivi del blueprint
Le action vengono eseguite al di fuori di un vero flusso di lavoro GitHub. Le variabili di contesto come
github.repository vengono popolate con valori fittizi. Le action che richiedono accesso in tempo reale all’API di GitHub (ad es. commentare le pull request (PR) o creare release) non funzioneranno nei blueprint.Limitazioni
- Solo GitHub Actions Node.js — Sono supportate solo le GitHub Actions che usano un runtime Node.js (
node16,node20,node24). Le action basate su Docker e quelle composite non sono supportate. - Nessun ciclo di vita
post— Devin esegue i passaggipreemain, ma salta i passaggi di puliziapost, poiché le build vengono eseguite in VM temporanee. - Contesto GitHub fittizio — Le action che dipendono da chiamate API di GitHub, dai dati degli eventi del flusso di lavoro o dal contesto del repository potrebbero non funzionare correttamente, perché questi valori sono segnaposto nell’ambiente di build.
- Blocca le versioni — Fai sempre riferimento a un tag di versione specifico (ad es.
@v5) anziché al nome di un branch, per ottenere build riproducibili.
