Jenkins CI Integration
Jenkins is a powerful open-source automation server that enables continuous integration and continuous delivery (CI/CD) for software development workflows. It provides a robust platform for automating build, test, and deployment processes across multiple environments and platforms.
Prerequisites
- A running Jenkins instance (local or remote).
- The NodeJS Plugin installed in your Jenkins environment.
- A Git repository containing your Bruno collections and a
Jenkinsfile
.
Automate API Testing with Jenkins
Step 1: Organize Your Bruno Collections
Ensure your Bruno collections and environment files are properly organized within your Git repository. A typical structure looks like this:
your-api-project/
├── Jenkinsfile
├── collections/
│ ├── authentication/
│ │ ├── login.bru
│ │ └── logout.bru
├── environments/
│ ├── development.bru
│ ├── ci.bru
│ └── production.bru
└── bruno.json
Step 2: Configure Node.js in Jenkins
Before running Bruno CLI, you need to ensure Jenkins can access a Node.js runtime environment.
-
Install the NodeJS Plugin:
- Navigate to
Manage Jenkins
>Plugins
. - Select the
Available plugins
tab, search for “NodeJS”, and install it.
- Navigate to
-
Configure a Node.js Installation:
- Go to
Manage Jenkins
>Tools
(underSystem Configuration
). - Scroll down to the
NodeJS installations
section. - Click
Add NodeJS
. - Provide a descriptive Name (e.g.,
Node.js 18
). This exact name will be used in your Jenkinsfile. - Check
Install automatically
and select your desiredNode.js version
(e.g.,NodeJS 18.20.8
). - Crucially, ensure the checkbox “Provide Node & npm folder to PATH” is checked. This ensures
node
andnpm
commands are available to your pipeline. - Click
Save
.
- Go to
Step 3: Create Your Jenkinsfile
Create a file named Jenkinsfile
in the root of your Git repository. This file defines the steps of your CI pipeline.
// Sample Jenkinsfile
pipeline {
agent any // Run the pipeline on any available Jenkins agent
stages {
stage('Checkout Code') {
steps {
// Clones the repository to the Jenkins workspace
checkout scm
}
}
stage('Setup Node.js & Install Bruno CLI') {
steps {
// Makes the Node.js installation (configured in Jenkins Tools) available
tool 'Node.js 18' // Use the exact name configured in Jenkins Global Tool Configuration
echo 'Verifying Node.js and npm versions...'
sh 'node -v' // Verify Node.js is on PATH
sh 'npm -v' // Verify npm is on PATH
echo 'Installing Bruno CLI globally...'
sh 'npm install -g @usebruno/cli' // Install Bruno CLI
sh 'bru --version' // Verify Bruno CLI installation
}
}
stage('Run API Tests') {
steps {
// Ensure Node.js is available if this stage runs in a separate context
tool 'Node.js 18'
echo 'Executing Bruno API tests...'
// Run tests with 'ci' environment and generate an HTML report
sh 'bru run --env ci --reporter-html results.html'
}
}
stage('Archive Test Results') {
steps {
echo 'Archiving test report...'
// Save the generated HTML report as a build artifact
archiveArtifacts artifacts: 'results.html', fingerprint: true
}
}
}
post { // Actions to run after the main pipeline stages complete
always {
echo 'Pipeline finished.'
}
success {
echo 'API Tests Passed Successfully!'
}
failure {
echo 'API Tests Failed! Check console output for details.'
}
}
}
Step 4: Configure Jenkins Pipeline Job
-
Create a New Jenkins Job:
- From the Jenkins Dashboard, click New Item.
- Enter an Item name (e.g., bruno-api-tests-pipeline).
- Select Pipeline as the item type and click OK.
-
Configure Job Details:
- In the job configuration page, navigate to the Pipeline section.
- Set Definition to Pipeline script from SCM and Choose your SCM (e.g., Git).
- Enter your Repository URL (e.g.,
https://github.com/your-org/your-repo.git
). - Specify any Credentials if your repository is private.
- Set Branches to build to */main (or the branch containing your Jenkinsfile).
- Ensure Script Path is Jenkinsfile (this is the default).
-
Click Save to finalize your job configuration.
Step 5: Run and Monitor Your Pipeline
-
Trigger a Build:
- From your Jenkins pipeline job page, click Build Now (in the left-hand menu) to manually start the pipeline.
-
Monitor Progress:
- Observe the Build History section to see the status of your builds (green checkmark for success, red cross mark for failure).
- Click on a specific build number, then select Console Output to view real-time logs and detailed execution steps.
-
View Test Results:
- Once a build that generated results.html completes, navigate to that specific build’s page.
- Look for the Artifacts section (usually on the left sidebar or at the top of the build summary).
- Click on
results.html
to download the report, then open it in your web browser for detailed test outcomes.
Learn More
For more advanced Jenkins features and configurations, visit the Jenkins documentation.