This project is an Azure Functions app written in Python that integrates with Jenkins to manage and trigger builds via HTTP endpoints. It uses a modular blueprint-based structure for each Jenkins-related function.
- List Jenkins Builds: Query Jenkins for jobs matching a specific pattern (e.g., pipelines).
- Trigger Jenkins Build: Start a Jenkins build remotely via HTTP request.
- Get Build Details: Retrieve details for Jenkins jobs and builds.
- Cancel Jenkins Build: Stop, kill, or terminate a running Jenkins build.
- Get Console Output: Fetch console output for Jenkins builds.
- Blueprint-based Structure: Modular design using blueprints for each function.
function_app.py: Main entry point, registers blueprints for all Jenkins functions.ListBuild.py: Lists Jenkins jobs, optionally filtered by name.TriggerBuild.py: Triggers Jenkins builds with optional parameters.GetBuildDetails.py: Gets details of a Jenkins job.GetBuildJobDetails.py: Gets details of a specific Jenkins build.GetLastBuild.py: Gets the last build for a Jenkins job.GetLastCompletedBuild.py: Gets the last completed build.GetLastFailedBuild.py: Gets the last failed build.GetLastStableBuild.py: Gets the last stable build.GetLastSuccessBuild.py: Gets the last successful build.GetLastUnsuccessfulBuild.py: Gets the last unsuccessful build.GetBuildConsoleOutput.py: Gets console output for a build.CancelBuild.py: Cancels a running Jenkins build.
- Deploy the app to Azure Functions or run locally.
- Use the HTTP endpoints to interact with Jenkins:
- List builds containing the word "pipeline".
- Trigger a build named "Hello-World-Pipeline".
- Retrieve build/job details, console output, or cancel builds.
Send a POST request to the list builds endpoint with the following JSON body:
{
"arguments": {
"jenkinsServerFQDN": "jenkins-controller-app.orangemoss-230dd32b.eastus.azurecontainerapps.io",
"searchString": "pipeline"
}
}Send a POST request to the trigger build endpoint with the following JSON body:
{
"arguments": {
"jenkinsServerFQDN": "jenkins-controller-app.orangemoss-230dd32b.eastus.azurecontainerapps.io",
"buildName": "Hello-World-Pipeline"
}
}- Set Jenkins credentials (
JENKINS_USER,Token) inlocal.settings.jsonor environment variables. - Update Jenkins server URL in your requests as needed.
POST /listbuilds— Lists Jenkins jobs, optionally filtered by name.POST /triggerbuild— Triggers the specified Jenkins build.- Additional endpoints for build details, console output, and cancellation.
- Python 3.8+
azure-functionsrequests- Jenkins server access
MIT License