Skip to content
Marko Ivanovski

Containerised CI/CD pipeline

A small CRUD application built as the vehicle for a complete DevOps pipeline, from container images through Kubernetes configuration to GitHub Actions.

category
academic
year
2025
status
completed
role
Sole developer
  • Docker
  • GitHub Actions
  • Java
  • Kubernetes
  • PostgreSQL
  • React
  • Spring Boot

What it is

A task manager with a Spring Boot REST API, a React frontend and Postgres, built for a continuous integration and delivery course mainly as the vehicle for a real pipeline.

On every push, GitHub Actions starts Postgres in a container, builds and tests the backend with Maven on Java 21, builds the frontend, and only then publishes both images to Docker Hub. Docker Compose runs the stack locally, and Kubernetes manifests describe each service for a cluster.

  • Frontend and backend both built as images and published to Docker Hub, with Postgres pulled from the official image.
  • Docker Compose for local composition, and Kubernetes for configuration and namespaces.
  • Continuous integration and delivery through GitHub Actions.

What I learnt

  1. DevOps practices, learned by building a pipeline that tests before it publishes.
  2. Docker together with Kubernetes: an image for each service, and manifests to run them on a cluster.

What I would do next

No further work on this app. The next step is using the same practices on other platforms.