Passa al contenuto principale
Versione: Prossima

Input e Output

Input

Autenticazione e Progetto

InputObbligatorioDefaultDescrizione
modecreate per provisionare un runner, delete per terminarlo
github_tokenGitHub PAT con Administration read/write (scope repo o org)
acloud_client_idClient ID API Aruba Cloud
acloud_client_secretClient secret API Aruba Cloud
acloud_project_idProject ID Aruba Cloud dove verrà creato il server

Server

InputObbligatorioDefaultDescrizione
namenoacloud-runner-<run_id>-<attempt>Nome del server e label del runner. Deve corrispondere a [a-zA-Z0-9_-]{1,64}
regionnoITBG-BergamoRegione Aruba Cloud
zonenoITBG-1Zona di disponibilità nella regione
flavornoCSO2A4Codice dimensione server (vedi Flavor e Immagini)
imagenoLU22-001Codice immagine di avvio (vedi Flavor e Immagini)

Boot disk

InputObbligatorioDefaultDescrizione
boot_disk_sizeno20Dimensione del boot disk in GB
boot_disk_typenoPerformanceTipo di storage: Performance o Archive
boot_disk_waitno60Numero massimo di tentativi di polling (×10 s ciascuno) per lo stato NotUsed (default = 10 minuti)
boot_disk_iddeleteID del boot disk restituito dal passo create. Obbligatorio in modalità delete

Rete

InputObbligatorioDefaultDescrizione
vpc_idnoID della VPC a cui collegare il server. Creata automaticamente se omessa
subnet_idnoID della subnet. Creata automaticamente se omessa
security_group_idnoID del security group. Creato automaticamente con regola egress allow-all se omesso
keypair_idnoID della coppia di chiavi SSH da iniettare nel server

ID risorse auto-create (solo modalità delete)

InputObbligatorioDefaultDescrizione
auto_vpc_idnoVPC creata automaticamente dal passo create. Passa dagli output di start-runner per eliminarla allo stop
auto_subnet_idnoSubnet creata automaticamente dal passo create. Passa dagli output di start-runner per eliminarla allo stop
auto_security_group_idnoSecurity group creato automaticamente dal passo create. Passa dagli output di start-runner per eliminarlo allo stop

Runner

InputObbligatorioDefaultDescrizione
runner_labelsnoself-hosted,linux,acloudLista separata da virgole di label aggiuntive del runner
runner_versionnolatestVersione del GitHub Actions Runner. Usa latest o una specifica come 2.321.0
runner_dirno/actions-runnerPercorso assoluto dove viene installato il runner sul server
pre_runner_scriptno""Comandi bash eseguiti sul server prima dell'avvio del runner
runner_waitno60Numero massimo di tentativi di polling (×10 s ciascuno) per la registrazione del runner (default = 10 minuti)

Timeout

InputObbligatorioDefaultDescrizione
server_waitno60Numero massimo di tentativi di polling (×10 s ciascuno) per lo stato Active del server (default = 10 minuti)
server_iddeleteID del server Aruba Cloud da eliminare. Obbligatorio in modalità delete

Output

I seguenti output vengono impostati dal passo create e devono essere passati al passo delete tramite needs.<start-job>.outputs.*:

OutputDescrizione
labelLabel del runner — usa come valore runs-on nei job dipendenti
server_idID del server Aruba Cloud — passa al passo delete
project_idProject ID Aruba Cloud — passa al passo delete
boot_disk_idID del boot disk — passa al passo delete affinché venga rimosso insieme al server
auto_vpc_idVPC creata automaticamente da questo passo. Vuoto se vpc_id era stato fornito. Passa al passo delete
auto_subnet_idSubnet creata automaticamente da questo passo. Vuota se subnet_id era stato fornito. Passa al passo delete
auto_security_group_idSecurity group creato automaticamente da questo passo. Vuoto se security_group_id era stato fornito. Passa al passo delete

Risoluzione dei problemi

Il runner non si registra mai

Cloud-init impiega 3–5 minuti per installare i pacchetti e scaricare il binario del runner. Se la tua immagine o la connessione è lenta, aumenta runner_wait (ogni unità = 10 s). Controlla i log di cloud-init sul server:

cat /var/log/cloud-init-output.log

Boot disk bloccato in InCreation

La creazione del boot disk può richiedere fino a 10 minuti. Il valore predefinito boot_disk_wait: 60 (= 600 s) copre questo caso. Se riscontri timeout, l'API Aruba Cloud potrebbe essere sotto carico — riesegui il workflow.

Server non eliminato dopo un fallimento

Il passo stop usa if: always() quindi viene eseguito anche quando i job precedenti falliscono. Verifica che l'output server_id venga passato correttamente:

needs: [start-runner, build]
if: always()
steps:
- uses: Arubacloud/acloud-github-runner@v1
with:
mode: delete
server_id: ${{ needs.start-runner.outputs.server_id }}

Se un server rimane orfano, eliminalo manualmente dal portale Aruba Cloud o con acloud-cli:

acloud compute cloudserver delete <server-id> \
--project-id <project-id> \
--yes

Errore di autenticazione

Assicurati che ACLOUD_CLIENT_ID e ACLOUD_CLIENT_SECRET siano memorizzati come segreti del repository e mappati agli input dell'action. L'action li salva in ~/.config/acloud/config.yaml (XDG Base Directory) con permessi 0600 durante l'esecuzione.

Errore di permessi PAT

Il token deve avere Administration → Read and write sul repository (o admin:org per runner a livello organizzazione). I classic PAT richiedono lo scope repo per runner di repository o admin:org per runner di organizzazione.