initialize del tuo blueprint. Devin scarica ed esegue l’action durante la build dello snapshot, 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 alla sezione initialize del tuo blueprint:
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:
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 build dello snapshot:
- Scarica la repository della action (clone shallow del ref bloccato)
- Legge i metadati
action.ymldella action per determinare il tipo di action (runs.using) e i punti di ingresso - Crea l’ambiente di esecuzione con le variabili
INPUT_*,GITHUB_*eRUNNER_* - Esegue la action in base al suo tipo:
- Action Node.js — esegue lo script
pre(se definito), poimain - Action composite — esegue in ordine ogni passaggio in
runs.steps, inclusi i passaggi annidatiruneuses - Action Docker — crea l’image dal
Dockerfiledella action (oppure scarica un’imagedocker://), quindi esegue il container, inclusopre-entrypointse definito
- Action Node.js — esegue lo script
- 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
-
Tipi di action supportati — I blueprint supportano questi tipi di action (
runs.using): -
Non in
maintenance— I passaggiusesvengono eseguiti ininitializeepost-build, ma non possono essere eseguiti inmaintenance. Vedi Sintassi. -
Nessun ciclo di vita
post— Devin esegue i passaggipreemain(e ilpre-entrypointdi un’action Docker), ma salta i passaggi di puliziapost(postepost-entrypoint), 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.

