SSH-runnerin raja on tarkoituksella kapea. Sille annetaan target, käyttäjäehdokkaat ja ajettava skripti; se ei tiedä, ajaako caller bootstrapia, diagnostiikkaa vai container-komentoa:
payload := sshrunner.ScriptRequest{
Target: sshrunner.Target{
Addresses: []sshrunner.Address{{Host: runnerHost, HostKeyAlias: runnerID}},
Users: []string{"root", "ubuntu"},
},
Script: "set -euo pipefail\nhostname\n",
}
response, err := requester.Request(
ctx,
sshrunner.EventScriptRunRequest,
sshrunner.EventScriptRunResponse,
payload,
30*time.Minute,
)
SSH-runnerin omat virheet ovat deployment-asetuksiin sidottuja ja näkyvät ennen etäyhteyden yritystä. Puuttuva avainpolku palauttaa SSH private key path is required, tyhjä target palauttaa SSH target has no addresses ja käyttäjien puuttuminen palauttaa SSH target has no users. Pitkä stdout tai stderr katkaistaan määrityksen mukaiseen rajaan, ja tulosteeseen lisätään tunniste:
[output truncated]
UpCloudin worker-puolella provider voi käyttää jo olemassa olevaa runneria muodossa UPCLOUD_CONTAINER_SSH_TARGET=user@host, tai se voi luoda ja käynnistää konfiguroidun runnerin UpCloud API:n kautta. Ennen bootstrap- tai container-run-eventtiä worker tarkistaa, että runner näkyy providerissa käynnissä ja että jokin kohdeosoite avaa SSH:n portin 22. Odotusta voi rajata asetuksilla BUS_RUNNER_SSH_READY_TIMEOUT ja BUS_RUNNER_SSH_READY_POLL_INTERVAL; connection refused, timeout ja no route ovat retryttäviä readiness-tiloja.
Bootstrap kulkee SSH-runnerille event-payloadina, ja varsinainen container-ajo palauttaa korreloituun response-eventiin stdoutin, stderrin ja exit-koodin.
$ bus-integration-upcloud \
--provider upcloud \
--events-url "$BUS_EVENTS_API_URL" \
--api-token "$BUS_API_TOKEN" \
--upcloud-token "$UPCLOUD_TOKEN" \
--vm-name "$UPCLOUD_VM_NAME" \
--container-runner-name "$UPCLOUD_CONTAINER_RUNNER_NAME"
Hermettinen e2e tarkistaa runner-paketin ilman oikeaa SSH-kohdetta. Real SSH -ajo pysyy opt-in-polussa, jotta julkiset testit eivät tarvitse avaimia tai pilviresursseja:
SKIP bus-integration-ssh-runner real ssh e2e: set BUS_SSH_RUNNER_REAL_E2E=1 with SSH target/key configuration to opt in
e2e OK (bus-integration-ssh-runner: passed 1, skipped 1)
Nykyinen moduuliraja löytyy bus-integration-ssh-runner-dokumentaatiosta. UpCloud-workerin VM- ja container-käyttö on kuvattu bus-integration-upcloud-dokumentaatiossa.