How clockworksspheres/jenkinstools works
Purpose and Runtime
jenkinsTools is a Python-based operator toolkit for administering a Jenkins server: managing agent nodes, creating/configuring/running/checking simple pipelines, and adding SSH-key credentials. It uses the external python-jenkins client library and targets Jenkins over its API. Dependencies are declared in requirements.txt and src/requirements.txt.
User Entry Points
Standalone command-line entry scripts expose the principal workflows:
• Node administration: src/jenkinsTools/jenkinsNodeTool.py
• Pipeline lifecycle operations: src/jenkinsTools/jenkinsPipelineTool.py
• SSH-key preparation/credential work: src/jenkinsTools/jenkinsSshKeyWrangling.py
• Desktop GUI launcher: src/jenkinsTools/jenkinsToolsGui.py
These are packaged as platform-native executables rather than operated as a web service.
Jenkins Domain Operations
The JenkinsTools package contains the Jenkins-facing operation layer. Node creation, update, status, and management are separated into focused commands in src/jenkinsTools/JenkinsTools/AddJenkinsNode.py, src/jenkinsTools/JenkinsTools/NodeManage.py, and src/jenkinsTools/JenkinsTools/update_node.py. This layer is the main boundary between local CLI/GUI inputs and Jenkins API calls.
Pipeline operations form a second domain group: pipeline creation/configuration, triggering, and result polling are represented by src/jenkinsTools/JenkinsTools/CreateJenkinsPipeline.py, src/jenkinsTools/JenkinsTools/RunJenkinsPipeline.py, and src/jenkinsTools/JenkinsTools/CheckJenkinsPipelineRun.py.
Configuration and Credentials
Shared Jenkins connection/configuration handling is centralized in src/jenkinsTools/ConfigFile.py. SSH credential operations are split between the user-facing workflow in src/jenkinsTools/sshKeyWrangling.py and Jenkins credential registration in src/jenkinsTools/JenkinsTools/AddSshKeyCredential.py. SSH keys must already exist; the tool adds their credentials to Jenkins rather than acting as a key-generation service.
Input and Interaction Boundary
CLI and GUI paths should converge on the domain operation layer after validation. Input validators are organized by workflow in src/jenkinsTools/lib/inputValidation/generalFieldsValidation.py, src/jenkinsTools/lib/inputValidation/nodesFieldsValidation.py, and src/jenkinsTools/lib/inputValidation/pipelinesFieldsValidation.py.
The optional Qt-style desktop interface is implemented in src/jenkinsTools/ux/main.py, with node and pipeline screens in src/jenkinsTools/ux/nodesMain.py and src/jenkinsTools/ux/pipelinesMain.py. Generated/UI-designer artifacts remain alongside these controllers.
Packaging and Cross-Platform Delivery
The repository builds native distributables for Debian-family Linux, Red Hat-family Linux, macOS, and Windows. Platform scripts/specifications live in src/BuildScripts/build.deb-based.sh, src/BuildScripts/build.rh-based.sh, src/BuildScripts/build.macos.sh, and src/BuildScripts/build.windows.ps1. Python packaging helpers produce Debian, RPM, and macOS package formats in src/BuildScripts/buildDeb.py, src/BuildScripts/buildRpm.py, and src/BuildScripts/buildMacosPkg.py.
CI and Test Infrastructure
Jenkins itself is also the project CI runtime, with cross-platform pipeline definitions in ci/Jenkinsfile, ci/Jenkinsfile.debbased, and ci/Jenkinsfile.rhelbased. Setup documentation describes a Jenkins controller plus platform-specific agents under src/docs/BasicSetUpJenkinsServerForTesting/ and src/docs/BasicSetUpJenkinsSlavesForTesting/. The project can pair with external mvm-managed VMs to exercise these platform boundaries.
Main entry points: CreateJenkinsPipeline.py Pipeline creation · ConfigFile.py Jenkins connection config · main.py Node and pipeline screens · RunJenkinsPipeline.py Pipeline execution
Components 20
Local entry points
- Node CLI
src/jenkinsTools/jenkinsNodeTool.py - Pipeline CLI
src/jenkinsTools/jenkinsPipelineTool.py - SSH credential CLI
src/jenkinsTools/jenkinsSshKeyWrangling.py - Desktop GUI launcher
src/jenkinsTools/jenkinsToolsGui.py - Node and pipeline screens
src/jenkinsTools/ux/main.py
Input validation
- General validation
src/jenkinsTools/lib/inputValidation/generalFieldsValidation.py - Node validation
src/jenkinsTools/lib/inputValidation/nodesFieldsValidation.py - Pipeline validation
src/jenkinsTools/lib/inputValidation/pipelinesFieldsValidation.py
Jenkins operations
- Node operations · Creates, updates, checks, and manages agents.
src/jenkinsTools/JenkinsTools/AddJenkinsNode.py - Pipeline creation
src/jenkinsTools/JenkinsTools/CreateJenkinsPipeline.py - Pipeline execution
src/jenkinsTools/JenkinsTools/RunJenkinsPipeline.py - Build result polling
src/jenkinsTools/JenkinsTools/CheckJenkinsPipelineRun.py - SSH key workflow · Uses existing SSH keys.
src/jenkinsTools/sshKeyWrangling.py - SSH credential registration
src/jenkinsTools/JenkinsTools/AddSshKeyCredential.py
Build and CI
- Native package builds · Builds Linux, macOS, and Windows distributables.
src/BuildScripts/build.deb-based.sh - Package format helpers · Produces Debian, RPM, and macOS packages.
src/BuildScripts/buildDeb.py - Cross-platform CI pipelines
ci/Jenkinsfile
Other components
- Jenkins connection config
src/jenkinsTools/ConfigFile.py - Jenkins server API · Accessed through python-jenkins.
- Platform test agents · Jenkins agents may run on mvm-managed VMs.
Connections 25
- Node CLI → General validation: validates
- Node CLI → Node validation: validates node input
- Pipeline CLI → General validation: validates
- Pipeline CLI → Pipeline validation: validates pipeline input
- SSH credential CLI → SSH key workflow: runs
- Desktop GUI launcher → Node and pipeline screens: launches
- Node and pipeline screens → Node validation: validates node forms
- Node and pipeline screens → Pipeline validation: validates pipeline forms
- Node validation → Node operations: approved input
- Pipeline validation → Pipeline creation: approved input
- Pipeline creation → Pipeline execution: created pipeline
- Pipeline execution → Build result polling: run reference
- SSH key workflow → SSH credential registration: registers key
- Jenkins connection config → Node operations: connection settings
- Jenkins connection config → Pipeline creation: connection settings
- Jenkins connection config → SSH credential registration: connection settings
- Node operations → Jenkins server API: agent API calls
- Pipeline creation → Jenkins server API: configure API
- Pipeline execution → Jenkins server API: trigger API
- Build result polling → Jenkins server API: poll API
- SSH credential registration → Jenkins server API: credential API
- Cross-platform CI pipelines → Jenkins server API: executed by
- Jenkins server API → Platform test agents: dispatches CI work
- Native package builds → Package format helpers: invokes
- Cross-platform CI pipelines → Native package builds: runs platform builds