Skip to main content
Version: Next

Inputs & Outputs

Inputs

Authentication & Project

InputRequiredDefaultDescription
modeyescreate to provision a runner, delete to terminate it
github_tokenyesGitHub PAT with Administration read/write (repo or org scope)
acloud_client_idyesAruba Cloud API client ID
acloud_client_secretyesAruba Cloud API client secret
acloud_project_idyesAruba Cloud project ID where the server will be created

Server

InputRequiredDefaultDescription
namenoacloud-runner-<run_id>-<attempt>Server name and runner label. Must match [a-zA-Z0-9_-]{1,64}
regionnoITBG-BergamoAruba Cloud region
zonenoITBG-1Availability zone inside the region
flavornoCSO2A4Server size code (see Flavors & Images)
imagenoLU22-001Boot image code (see Flavors & Images)

Boot disk

InputRequiredDefaultDescription
boot_disk_sizeno20Boot disk size in GB
boot_disk_typenoPerformanceStorage type: Performance or Archive
boot_disk_waitno60Max polling attempts (×10 s each) waiting for NotUsed status (default = 10 minutes)
boot_disk_iddeleteBoot disk ID returned by the create step. Required in delete mode

Networking

InputRequiredDefaultDescription
vpc_idnoID of the VPC to attach the server to. Auto-created when omitted
subnet_idnoID of the subnet. Auto-created when omitted
security_group_idnoID of the security group. Auto-created with egress allow-all when omitted
keypair_idnoID of the SSH key pair to inject into the server

Auto-created resource IDs (delete mode only)

InputRequiredDefaultDescription
auto_vpc_idnoVPC auto-created by the create step. Pass from start-runner outputs to have it deleted on stop
auto_subnet_idnoSubnet auto-created by the create step. Pass from start-runner outputs to have it deleted on stop
auto_security_group_idnoSecurity group auto-created by the create step. Pass from start-runner outputs to have it deleted on stop

Runner

InputRequiredDefaultDescription
runner_labelsnoself-hosted,linux,acloudComma-separated list of additional runner labels
runner_versionnolatestGitHub Actions Runner version. Use latest or a specific version like 2.321.0
runner_dirno/actions-runnerAbsolute path where the runner is installed on the server
pre_runner_scriptno""Bash commands executed on the server before the runner starts
runner_waitno60Max polling attempts (×10 s each) waiting for runner registration (default = 10 minutes)

Timeouts

InputRequiredDefaultDescription
server_waitno60Max polling attempts (×10 s each) waiting for Active server status (default = 10 minutes)
server_iddeleteAruba Cloud server ID to delete. Required in delete mode

Outputs

The following outputs are set by the create step and should be passed to the delete step via needs.<start-job>.outputs.*:

OutputDescription
labelRunner label — use as the runs-on value in dependent jobs
server_idAruba Cloud server ID — pass to the delete step
project_idAruba Cloud project ID — pass to the delete step
boot_disk_idBoot disk ID — pass to the delete step so it is removed together with the server
auto_vpc_idVPC auto-created by this step. Empty when vpc_id was supplied. Pass to delete step
auto_subnet_idSubnet auto-created by this step. Empty when subnet_id was supplied. Pass to delete step
auto_security_group_idSecurity group auto-created by this step. Empty when security_group_id was supplied. Pass to delete step

Troubleshooting

Runner never registers

Cloud-init takes 3–5 minutes to install packages and download the runner binary. If your image or connection is slow, increase runner_wait (each unit = 10 s). Check cloud-init logs on the server:

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

Boot disk stuck in InCreation

Boot disk creation can take up to 10 minutes. The default boot_disk_wait: 60 (= 600 s) covers this. If you are seeing timeouts, the Aruba Cloud API may be under load — re-run the workflow.

Server not deleted after failure

The stop step uses if: always() so it runs even when earlier jobs fail. Verify the server_id output is correctly passed:

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

If a server is left orphaned, delete it manually via the Aruba Cloud portal or acloud-cli:

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

Authentication fails

Ensure ACLOUD_CLIENT_ID and ACLOUD_CLIENT_SECRET are stored as repository secrets and mapped to the action inputs. The action stores them at ~/.config/acloud/config.yaml (XDG Base Directory) with 0600 permissions during the run.

PAT permissions error

The token must have Administration → Read and write on the repository (or admin:org for org-level runners). Classic PATs require the repo scope for repository runners or admin:org for org runners.