Project

CI/CD pipeline with Jenkins, Docker and Flask

CI/CD project with Jenkins for a Flask web application, designed to show a complete workflow for validation, packaging, publication and remote deployment on a Linux VPS.

Overview

CI/CD pipeline for a Flask web application that runs automated tests with pytest, builds and publishes the Docker image, and deploys to a Linux VPS through SSH and docker-compose, with email notification at the end.

Stack: Python, Flask, Docker, Jenkins, Linux

What it does

The project aims to avoid manual and inconsistent deployments in a simple web application. To do this, it automates everything from initial validation with tests to image build, publication and remote deployment on the server, leaving a repeatable end-to-end workflow.

How it is built

The solution is based on a Flask application containerised with Docker, with a Jenkinsfile to define pipeline stages, a Dockerfile for packaging and docker-compose for deployment on the VPS. The workflow connects GitHub, Docker Hub and the Linux server through SSH access to run the remote update.

What it validates or automates

The pipeline clones the repository, installs dependencies, runs automated tests with pytest, builds the Docker image and publishes it to Docker Hub. Then it connects to the VPS over SSH, deploys with docker-compose and sends an email notification at the end, leaving a reproducible continuous integration and delivery process.

Key points