How to Connect FastAPI to Jenkins:
Step-by-Step Guide
This guide shows how to integrate your FastAPI application with Jenkins, enabling automated
builds, tests, and deployments.
Prerequisites
● A FastAPI project ready in your local or remote Git repository.
● Jenkins installed and running (local or on a server).
● Jenkins has access to your code repository (e.g., GitHub, GitLab).
● Basic knowledge of Jenkins Pipelines or freestyle projects.
● Python and FastAPI environment ready for running tests or deployment.
Step 1: Prepare Your FastAPI Project for Jenkins
Make sure your FastAPI project includes:
● A requirements.txt or Pipfile to install dependencies.
● A test suite (e.g., using pytest) to validate your code.
● A script or command to start the FastAPI server (usually uvicorn).
Example minimal requirements.txt:
nginx
CopyEdit
fastapi
uvicorn
pytest
Example test script in tests/test_main.py:
python
CopyEdit
from fastapi.testclient import TestClient
from main import app # Your FastAPI app
client = TestClient(app)
def test_read_main():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"message": "Hello World"}
Step 2: Set Up Jenkins Job or Pipeline
You can create either a Freestyle project or a Pipeline project in Jenkins.
Option 1: Freestyle Project (Basic)
1. Open Jenkins dashboard.
2. Click New Item.
3. Name your job (e.g., FastAPI-CI).
4. Choose Freestyle project and click OK.
5. Under Source Code Management, select Git and enter your repo URL.
6. Under Build, add a build step:
○ Execute shell (Linux/Mac) or Execute Windows batch command.
7. Enter commands to:
○ Create a virtual environment
○ Install dependencies
○ Run tests
○ Optionally start the FastAPI server or deploy
Example shell commands:
bash
CopyEdit
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pytest tests/
8. Save and run the job.
Option 2: Pipeline Project (Recommended)
1. Create a Jenkins pipeline job.
2. In the Pipeline script, define your pipeline using Jenkinsfile syntax.
Example Jenkinsfile:
groovy
CopyEdit
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git
'https://github.com/yourusername/fastapi-project.git'
}
}
stage('Setup Python') {
steps {
sh '''
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
'''
}
}
stage('Test') {
steps {
sh '''
source venv/bin/activate
pytest tests/
'''
}
}
stage('Deploy') {
steps {
// Add your deployment steps here, e.g.:
// sh 'uvicorn main:app --host 0.0.0.0 --port 8000'
echo 'Deployment step placeholder'
}
}
}
}
Step 3: Configure Jenkins Environment (Optional but
Recommended)
● Install Jenkins plugins such as:
○ Git plugin (for repository checkout)
○ Pipeline plugin (for pipeline jobs)
○ Python plugin (to manage Python environments)
● Configure global tools in Jenkins (Python installations, virtualenvs).
Step 4: Run the Jenkins Job
● Trigger the job manually or set up triggers (e.g., webhook on Git push).
● Monitor console output for build progress.
● Fix any errors and re-run until successful.
Additional Tips
● Use Jenkins credentials management to securely store repo access tokens or SSH keys.
● Use Docker to containerize your FastAPI app and run tests inside containers.
● Integrate Slack or email notifications in Jenkins to get build status alerts.
● Consider using Jenkins shared libraries or advanced pipeline features for reusability.