title: Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ ÑÐµÐ¿Ð¾ÑÐºÐ¸ Ð½ÐµÐ¿ÑÐµÑÑÐ²Ð½Ð¾Ð¹ Ð¸Ð½ÑÐµÐ³ÑÐ°ÑÐ¸Ð¸ Ð¸ Ð´Ð¾ÑÑÐ°Ð²ÐºÐ¸ CI/CD Ð½Ð° Ð¿ÑÐ¸Ð¼ÐµÑÐµ Spring Boot Ð²ÐµÐ±âÐ¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ
title: Ð²ÑÐ¿ÑÑÐºÐ½Ð°Ñ ÐºÐ²Ð°Ð»Ð¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑÐ°Ð±Ð¾ÑÐ° Ð±Ð°ÐºÐ°Ð»Ð°Ð²ÑÐ°
titleType: Subtitle
title: Creating a continuous integration and continuous delivery CI/CD pipeline using Spring Boot web application as an example
Creators: name: Ð¢Ð¾Ð¿Ð¾ÑÑÐºÐ¸Ð¹, ÐÐ»Ð¸ÑÐµÐ¹
Publisher: name: Ð¡Ð°Ð½ÐºÑ-ÐÐµÑÐµÑÐ±ÑÑÐ³ÑÐºÐ¸Ð¹ Ð¿Ð¾Ð»Ð¸ÑÐµÑÐ½Ð¸ÑÐµÑÐºÐ¸Ð¹ ÑÐ½Ð¸Ð²ÐµÑÑÐ¸ÑÐµÑ ÐÐµÑÑÐ° ÐÐµÐ»Ð¸ÐºÐ¾Ð³Ð¾
Year: 2020
Subjects: Ð½ÐµÐ¿ÑÐµÑÑÐ²Ð½Ð°Ñ Ð¸Ð½ÑÐµÐ³ÑÐ°ÑÐ¸Ñ Ð¸ Ð´Ð¾ÑÑÐ°Ð²ÐºÐ°
CI/CD
Ð²ÐµÐ±-Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ
ÐºÐ»Ð¸ÐµÐ½Ñ-ÑÐµÑÐ²ÐµÑÐ½Ð°Ñ Ð°ÑÑ Ð¸ÑÐµÐºÑÑÑÐ°
Spring
React
GitLab
AWS
continuous integration and delivery
web-application
client-server architecture

description: Ð Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÐ°Ð±Ð¾ÑÐµ Ð¾Ð¿Ð¸ÑÑÐ²Ð°ÐµÑÑÑ Ð¿ÑÐ¾ÑÐµÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²ÐµÐ±-Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð¸Ñ ÑÐµÐ¿Ð¾ÑÐºÐ¸ Ð½ÐµÐ¿ÑÐµÑÑÐ²Ð½Ð¾Ð¹ Ð¸Ð½ÑÐµÐ³ÑÐ°ÑÐ¸Ð¸ Ð´Ð»Ñ Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸Ð·Ð°ÑÐ¸Ð¸ Ð´Ð°Ð»ÑÐ½ÐµÐ¹ÑÐµÐ¹ ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ¸ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ. ÐÐ°Ð´Ð°ÑÐ¸, ÑÐµÑÐµÐ½Ð½ÑÐµ Ð² ÑÐ¾Ð´Ðµ ÑÐ°Ð±Ð¾ÑÑ
1. Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð²ÐµÐ±-Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ, Ð¾ÑÐ²ÐµÑÐ°ÑÑÐµÐ³Ð¾ ÑÐ¾Ð²ÑÐµÐ¼ÐµÐ½Ð½ÑÐ¼ ÑÑÐ°Ð½Ð´Ð°ÑÑÐ°Ð¼ ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ¸.
2. Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð¸ ÐºÐ¾Ð½ÑÐ¸Ð³ÑÑÐ°ÑÐ¸Ñ ÑÐµÐ¿Ð¾ÑÐºÐ¸ Ð½ÐµÐ¿ÑÐµÑÑÐ²Ð½Ð¾Ð¹ Ð¸Ð½ÑÐµÐ³ÑÐ°ÑÐ¸Ð¸ Ð¸ Ð´Ð¾ÑÑÐ°Ð²ÐºÐ¸ CI/CD Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¸Ð½ÑÑÑÑÐ¼ÐµÐ½ÑÐ° GitLab.
3. Ð£ÑÐ¾Ð²ÐµÑÑÐµÐ½ÑÑÐ²Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÐµÐ¿Ð¾ÑÐºÐ¸ CI/CD Ð´Ð»Ñ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑÐ°ÑÐ¸Ð¸ ÑÐ°Ð±Ð¾ÑÐ¾ÑÐ¿Ð¾ÑÐ¾Ð±Ð½Ð¾ÑÑÐ¸ Ð¼ÐµÑÐ¾Ð´Ð°.
Ð Ð°Ð·ÑÐ°Ð±Ð¾ÑÐ°Ð½Ð½Ð¾Ðµ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·ÑÐµÑ ÐºÐ»Ð¸ÐµÐ½Ñ-ÑÐµÑÐ²ÐµÑÐ½ÑÑ Ð°ÑÑÐ¸ÑÐµÐºÑÑÑÑ, Ð³Ð´Ðµ ÑÐµÑÐ²ÐµÑÐ½Ð°Ñ ÑÐ°ÑÑÑ ÑÐ²Ð»ÑÐµÑÑÑ Ð¿ÑÐ¾Ð³ÑÐ°Ð¼Ð¼Ð½ÑÐ¼ Ð¸Ð½ÑÐµÑÑÐµÐ¹ÑÐ¾Ð¼ (API) ÑÐ¾Ð·Ð´Ð°Ð½Ð½ÑÐ¼ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑÐµÐ¹Ð¼Ð²Ð¾ÑÐºÐ° Java Spring, Ð° ÐºÐ»Ð¸ÐµÐ½ÑÑÐºÐ°Ñ ÑÐ°ÑÑÑ â Ð²ÐµÐ±-Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼, Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð½ÑÐ¼ Ð½Ð° React JS. ÐÐ»Ñ ÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑÐ¾Ð·Ð´Ð°Ð½Ð° Ð±Ð°Ð·Ð° Ð´Ð°Ð½Ð½ÑÑ PostgreSQL. 
Ð ÑÐµÐ·ÑÐ»ÑÑÐ°ÑÐµ ÑÐ°Ð±Ð¾ÑÑ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð° ÑÐµÐ¿Ð¾ÑÐºÐ° Ð½ÐµÐ¿ÑÐµÑÑÐ²Ð½Ð¾Ð¹ Ð¸Ð½ÑÐµÐ³ÑÐ°ÑÐ¸Ð¸ Ð¸ Ð´Ð¾ÑÑÐ°Ð²ÐºÐ¸ CI/CD, Ð² ÐºÐ¾ÑÐ¾ÑÐ¾Ð¹ Ð±ÑÐ»Ð¸ Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸Ð·Ð¸ÑÐ¾Ð²Ð°Ð½Ñ ÑÑÐ°Ð¿Ñ ÑÐ±Ð¾ÑÐºÐ¸ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Ð¸ÑÐ¿Ð¾Ð»Ð½ÑÐµÐ¼ÑÑ jar-Ð±Ð¸Ð±Ð»Ð¸Ð¾ÑÐµÐºÑ, ÑÐ¿Ð°ÐºÐ¾Ð²ÐºÐ¸ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·ÑÐµÐ¼Ð¾Ð¹ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² docker-ÐºÐ¾Ð½ÑÐµÐ¹Ð½ÐµÑÑ, Ð¿ÑÐ¾ÑÐ¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð½ÑÑ Ð´Ð»Ñ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð½ÑÐµÐ³ÑÐ°ÑÐ¸Ð¾Ð½Ð½ÑÑ Ð¸ ÑÐ½Ð¸Ñ-ÑÐµÑÑÐ¾Ð², Ð° ÑÐ°ÐºÐ¶Ðµ ÑÐ°Ð·Ð²ÐµÑÑÐºÐ¸ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Ð¾Ð±Ð»Ð°ÑÐ½Ð¾Ð¼ ÑÐ¾ÑÑÐ¸Ð½Ð³-ÑÐµÑÐ²Ð¸ÑÐµ AWS. ÐÐ»Ñ Ð¿ÑÐ¾Ð²ÐµÑÐºÐ¸ ÑÐ°Ð±Ð¾ÑÐ¾ÑÐ¿Ð¾ÑÐ¾Ð±Ð½Ð¾ÑÑÐ¸ Ð¸ ÑÑÑÐµÐºÑÐ¸Ð²Ð½Ð¾ÑÑÐ¸ Ð¿Ð¾ÑÑÑÐ¾ÐµÐ½Ð½Ð¾Ð¹ ÑÐµÐ¿Ð¾ÑÐºÐ¸ CI/CD Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð±ÑÐ»Ð¾ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ ÑÐ¸ÑÑÐµÐ¼Ð¾Ð¹ Ð°ÑÑÐµÐ½ÑÐ¸ÑÐ¸ÐºÐ°ÑÐ¸Ð¸ Ð¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°ÑÐµÐ»ÐµÐ¹. ÐÐ»Ð°Ð³Ð¾Ð´Ð°ÑÑ Ð¸ÑÐ¿Ð¾Ð»ÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÐµÐ¿Ð¾ÑÐºÐ¸ ÑÐ´Ð°Ð»Ð¾ÑÑ Ð·Ð½Ð°ÑÐ¸ÑÐµÐ»ÑÐ½Ð¾ ÑÑÐºÐ¾Ð½Ð¾Ð¼Ð¸ÑÑ Ð²ÑÐµÐ¼Ñ Ð¸ ÑÑÐ¸Ð»Ð¸Ñ ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÑÐ¸ÐºÐ° Ð¿ÑÑÐµÐ¼ Ð°Ð²ÑÐ¾Ð¼Ð°ÑÐ¸Ð·Ð°ÑÐ¸Ð¸ Ð²ÑÐµÑ ÑÑÐ°Ð¿Ð¾Ð² Ð¶Ð¸Ð·Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ ÑÐ¸ÐºÐ»Ð° ÑÐ°Ð·ÑÐ°Ð±Ð¾ÑÐºÐ¸ Ð¿Ð¾ÑÐ»Ðµ Ð¿ÑÐ±Ð»Ð¸ÐºÐ°ÑÐ¸Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ð¸ÑÑÐ¾Ð´Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð° Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² ÑÐ´Ð°Ð»ÐµÐ½Ð½Ð¾Ð¼ ÑÐµÐ¿Ð¾Ð·Ð¸ÑÐ¾ÑÐ¸Ð¸.
description: This work is describing a process of web-application cre-ating and building a continuous integration pipeline for future development. Goals achieved in the course of work:
1. Creating a web application that meets modern devel-opment standards.
2. Creating and configuring a continuous integration and delivery pipeline using GitLab.
3. Improving application utilizing created CI/CD pipe-line to demonstrate efficiency of the method.
The application is using client-server architecture where server part is an application programming interface (API) created with Java Spring framework, and client part is a web-application written in React JS. A PostgreSQL database was created for data persistence.
The study resulted into building a continuous integration pipeline that automates the certain steps of building a jar-executable library, packaging an application and database into docker-containers, running integration and unit-tests written for this application and delivery to AWS cloud-hosting service. To test the performance of created CI/CD pipeline the application was supplemented by a user authentication system. Due to utilizing this pipeline, it was possible to significantly save the time and efforts of the developer by automating all stages of the devel-opment life cycle starting from publishing changes to the application source code to a remote repository.