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
- CI/CD pipeline with Jenkins for a Dockerised Flask application.
- Pytest tests, image build and automatic publication to Docker Hub.
- Remote SSH deployment on a Linux VPS with docker-compose and email notification.