This is a wrapper project for Jenkins Swarm build agents that can dial in to a Jenkins controller and proclaim their abilities via labels.
Primary use-case is along with the jenkins-dynamatrix JSL, for such agents to be included in the dynamically generated matrix for the benefit of next upcoming builds of a project the agent owner wishes to participate in, such as the NUT CI farm.
While this particular repository is maintained with the NUT CI farm in mind, no specific configuration is stored here. Direct use or forks are welcome with other FOSS projects (you might want to customize file names, especially if different default user accounts are used, or let them be).
While this project is provided under the terms of MIT license (same as Jenkins itself) and can be re-used in other efforts without practical restrictions, any feedback and upstreaming of interesting hacks are welcome.
For more practical details about the typical agent configuration see:
TODO: Currently the best source of information are the scripts (comments and/or code). Some of that belongs in this README, PRs are welcome.
Numerous integration files (init scripts, systemd units, etc.) for different platforms are provided. See comments in them about installation into the system to start the Jenkins Swarm agent as a service (with automatic update of the JAR before each start-up).
|
Note
|
JAVA_OPTS set in $AGENT_DIR/jenkins-swarm-prestart.include-early
can be used to convey system-specific options like memory limits or agent
logging bump. A trusted cacerts file can be picked up by merely existing
with an expected file name.
|
The jenkins-agent-toggle.sh (with its own configuration to access the
Jenkins controller) can be used to automate processes around agent life
cycle (e.g. to offline the agent logically and wait for actual builds to
complete before disconnecting it, when we want to shut down gracefully).
This is further wrapped by swarm-client-nutci-stop.sh to coordinate
finishing the jobs and killing the agent process gracefully.