Troubleshooting¶
Jobs stay queued on a label¶
Checks:
- confirm the job label matches a
LabelAssignment - confirm at least one host template is assigned to that label
- confirm that template is not in cooldown
- confirm semaphore permits are still available
All slots look full, but no VMs seem to be running¶
Possible causes:
- Jenkins restarted and local capacity state has not reconciled yet
- a previous cleanup failed
- an orphan VM still exists on the Jeballto host
What to do:
- wait for orphan cleanup
- save the cloud config again to rebuild semaphores
- restart Jenkins if you need an immediate reset
SSH connection failures¶
Checks:
- verify the VM image accepts the configured SSH credentials
- verify the Jeballto URL host is reachable from Jenkins
- if Jenkins needs a different route to the host, set SSH Host Override
Repeated cooldowns¶
If a template repeatedly enters cooldown:
- verify API token credentials
- verify image references
- verify the Jeballto host is healthy
- check whether the image boots into a usable SSH environment
Agent channel closes after channel started¶
If the node log shows channel started followed by UnsupportedClassVersionError
or a message like class file version 65.0, the SSH connection is working but
the Java runtime inside the VM image is too old for the Jenkins controller.
Fix:
- check Jenkins' Java support policy: https://www.jenkins.io/doc/book/platform-information/support-policy-java/
- update the VM image so
java -versionmatches the controller's supported agent runtime - rebuild and republish the image used by the label assignment
The launch log comes from Jenkins SSH Build Agents, so agent startup messages
use the [SSH] prefix.
Orphaned VMs¶
The plugin's orphan cleanup looks for VMs whose names match known template prefixes and are old enough to be considered stale.
If you see old VMs that should have been removed:
- confirm Jenkins is still running the cleanup task
- confirm the VM state is not transitional
- confirm the template name still matches the VM name prefix
Turn on debug logging¶
Use a Jenkins log recorder:
Manage Jenkins -> System Log -> Add new log recorder
Logger: io.jenkins.plugins.jeballto
Level: FINE
That is the best first step when label routing or cooldown behavior is unclear.