CI/CD Pipeline with modern tools
TeamCity, Docker, Gitea&Githooks, Liquibase, SpringBoot
Project info
Software Engineering
Introduction
A brief project description or quote to summarize its goals.
“A comprehensive project aimed at building a CI/CD pipeline with modern tool integration. ”
Explore the Project
Tech details - Go to general technical info about components (on this page)
About
Introduction
Inspired by the recent interview conversation, I decided to synthesize and expand my interdisciplinary knowledge and try my hand at the DevOps approach. The impact of this culture is visible not only in software delivery but also in data processing and analysis (DataOps), infrastructure management (GitOps), and improving the reliability of production environments (SRE). I consider it a valuable lesson and an excellent complement to my previous projects.Objective
A cross-sectional CI/CD pipeline project using a modern technology stack.
Integration of various tools and techniques.
I will try to create a complete environment to integrate development tools, automatically trigger processes, test the application, create a release image, and deploy a simple backend application along with the database schema to the server.
I treat this as a Pet Project or a study, so I will be integrating additional components over time.
Components:PS
All tools are self-hosted on my local infrastructure (using Docker, Debian etc.) because my VPS, which hosts other projects, lacks the resources to handle everything :)
I'm also working on enhancing my lab environment's security before enabling port forwarding, to ensure safe and controlled access to my services.For educational purposes, I prefer a "longer way" to deeply understand infrastructure concepts and implementations. When time-to-market isn't critical or when the overhead of maintainability isn't a major concern, I remain cloud abstraction layer agnostic.
Still, I recognize the value of cloud platforms for simplifying infrastructure through intuitive interfaces, managed services etc.Recently, I attended a Google Cloud Platform Meetup, which furthered my interest in cloud technologies. I'm planning cloud-based projects soon, aiming to leverage these platforms effectively once I've mastered the fundamentals.
Project Overview
In General
Components
Quick Summary
- CI/CD Setup
- Sample deployment application (REST API)
- Infrastructure and Networking
List of All Technologies
Grouped by Category
Category | Technologies |
---|---|
VCS | Gitea (self-hosted GitLab alternative) |
CI/CD Platform | TeamCity (server, agent) |
Containerization | Docker, Docker Compose |
Database Versioning | Liquibase |
OS | Linux Debian |
Framework | Spring Boot |
Dependency Management | Manual dependency injection and component abstract factories |
Database | Oracle Database |
Architecture Style | OOP, SOLID, Domain, Value Objects, Package-by-component |
Testing | JUnit, ArchUnit, Cucumber, integration with Docker Containers and real db in pipeline for complex tests |
Web Server | NGINX as a Reverse Proxy |
SSL | Certbot + Let's Encrypt for automatic SSL |
Monitoring & Observability | NetData |
Local DNS & DHCP | PiHole/Unbound |
Static Site Generator | Eleventy (11ty) for generating a static homepage |
Components Specification
Detailed Information Grouped by Components
Table of Contents:
- CI/CD Setup
- Sample deployment application (REST API)
- Infrastructure and Networking
Details
-
CI/CD Setup
Integration of TeamCity, Git, Docker, Liquibase, and other tools for automating the build and deployment process.
Use Cases
Tech Stack
Category Description VCS Gitea (self-hosted GitLab alternative) CI/CD Platform TeamCity (server, agent) Containerization Docker, Docker Compose Database Versioning Liquibase OS Linux Debian -
Sample deployment application (REST API)
Spring Boot backend application with clean architecture and manual dependency management.
Use Cases
- Clean Architecture: Maintaining separation of application layers and clear component responsibilities
- Business Logic: Handling application logic with easy testability
- Database Management: Ensuring data consistency using versioned database migrations
Tech Stack
Category Description Framework Spring Boot Dependency Management Manual dependency injection and component abstract factories Database Oracle Database Architecture Style OOP, SOLID, Domain, Value Objects, Package-by-component Testing JUnit, ArchUnit, Cucumber, integration with Docker Containers and real db in pipeline for complex tests -
Infrastructure and Networking
Managing network and server infrastructure using NGINX and local DNS.
Use Case
- Network Routing: Handling subdomains and securing HTTP/S traffic
- SSL/TLS Management: Ensuring secure connections with SSL certificates
- Monitoring: Tracking the state of infrastructure and applications
Tech Stack
Category Description Web Server NGINX as a Reverse Proxy SSL Certbot + Let's Encrypt for automatic SSL Monitoring & Observability NetData Local DNS & DHCP PiHole/Unbound Static Site Generator Eleventy (11ty) for generating a static homepage
Additional Information
- Domain: DevOps, Finance
- Status: in_progress
- Keywords: TeamCity Docker Gitea&Githooks Liquibase SpringBoot