diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..b72c51b
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,11 @@
+# Используем официальный образ OpenJDK 17 как базовый образ
+FROM openjdk:17
+
+# Установка рабочей директории внутри контейнера
+WORKDIR /app
+
+# Копируем JAR-файл приложения из локальной директории внутрь контейнера
+COPY ServerMonitorBot-0.0.1-SNAPSHOT.jar app.jar
+
+# Команда для запуска Spring Boot приложения при старте контейнера
+CMD ["java", "-jar", "app.jar"]
\ No newline at end of file
diff --git a/Jenkinsfile_CD b/Jenkinsfile_CD
new file mode 100644
index 0000000..8a49b26
--- /dev/null
+++ b/Jenkinsfile_CD
@@ -0,0 +1,64 @@
+pipeline {
+ agent {
+ docker {
+ image 'maven:3.9.5-eclipse-temurin-17'
+ args '-v /root/.m2:/root/.m2'
+ }
+ }
+
+ environment {
+ SSH_HOST = credentials('ROCK_PI_5_SSH_HOST')
+ SSH_PORT = credentials('ROCK_PI_5_SSH_PORT')
+ SSH_USER = credentials('ROCK_PI_5_SSH_USER')
+ SSH_PASS = credentials('ROCK_PI_5_SSH_PASS')
+ PATH_TO_DEV_FOLDER = credentials('SERVERMONITORBOT_PATH_TO_DEV_FOLDER')
+ IMAGE_NAME = 'servermonitorbot'
+ IMAGE_VERSION = 'latest'
+ }
+
+ stages {
+ stage('Init container') {
+ steps {
+ sh 'apt-get update && apt-get install -y sshpass openssh-client'
+ }
+ }
+ stage('Build') {
+ steps {
+ withCredentials([file(credentialsId: 'SERVERMONITORBOT_APPLICATION_YAML', variable: 'application_yaml')]) {
+ sh "cp -f \$application_yaml src/main/resources/application.yml"
+ }
+ sh 'mvn -B -DskipTests -X clean package spring-boot:repackage'
+ }
+ }
+ stage('Prune images pre') {
+ steps {
+ sh """
+ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'docker image prune --all --force'
+ """
+ }
+ }
+ stage('Deploy') {
+ steps {
+ script {
+ sh """
+ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'mkdir -p ${PATH_TO_DEV_FOLDER}'
+ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'rm -f ${PATH_TO_DEV_FOLDER}/{*.*}'
+ sshpass -p ${SSH_PASS} scp -o StrictHostKeyChecking=no -P ${SSH_PORT} target/*.jar ${SSH_USER}@${SSH_HOST}:${PATH_TO_DEV_FOLDER}/
+ sshpass -p ${SSH_PASS} scp -o StrictHostKeyChecking=no -P ${SSH_PORT} Dockerfile ${SSH_USER}@${SSH_HOST}:${PATH_TO_DEV_FOLDER}/
+ sshpass -p ${SSH_PASS} scp -o StrictHostKeyChecking=no -P ${SSH_PORT} docker-compose.yml ${SSH_USER}@${SSH_HOST}:${PATH_TO_DEV_FOLDER}/
+ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'cd ${PATH_TO_DEV_FOLDER} && docker build --no-cache -t ${IMAGE_NAME}:${IMAGE_VERSION} .'
+ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'cd ${PATH_TO_DEV_FOLDER} && docker compose up -d'
+ """
+ }
+ }
+ }
+ stage('Prune images post') {
+ steps {
+ sh """
+ sshpass -p ${SSH_PASS} ssh -o StrictHostKeyChecking=no ${SSH_USER}@${SSH_HOST} -p ${SSH_PORT} 'docker image prune --all --force'
+ """
+ }
+ }
+ }
+}
+
diff --git a/Jenkinsfile_CI b/Jenkinsfile_CI
new file mode 100644
index 0000000..5cf3091
--- /dev/null
+++ b/Jenkinsfile_CI
@@ -0,0 +1,15 @@
+pipeline {
+ agent {
+ docker {
+ image 'maven:3.9.5-eclipse-temurin-17'
+ args '-v /root/.m2:/root/.m2'
+ }
+ }
+ stages {
+ stage('Build') {
+ steps {
+ sh 'mvn -B -DskipTests -X clean package spring-boot:repackage'
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..652f996
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,21 @@
+version: '3'
+services:
+ app:
+ build:
+ context: .
+ depends_on:
+ - db
+ networks:
+ default:
+
+ db:
+ image: postgres:latest
+ environment:
+ POSTGRES_USER: servermonitorbot
+ POSTGRES_PASSWORD: servermonitorbot
+ POSTGRES_DB: servermonitorbot
+ networks:
+ default:
+
+networks:
+ default:
diff --git a/pom.xml b/pom.xml
index fbc64ec..9ecb466 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.1.2
+ 3.1.3
ru.ldeloff
@@ -15,6 +15,11 @@
ServerMonitorBot
17
+ 9.16.0
+ ${database.url}
+ ${database.username}
+ ${database.password}
+ ru.ldeloff.servermonitorbot.ServerMonitorBotApplication
@@ -40,7 +45,7 @@
org.telegram
telegrambots
- 6.7.0
+ 6.8.0
com.jcraft
@@ -51,14 +56,15 @@
org.springframework.boot
spring-boot-starter-data-jpa
-
- org.liquibase
- liquibase-core
-
org.postgresql
postgresql
+
+ org.flywaydb
+ flyway-core
+ ${flyway.version}
+
@@ -75,6 +81,39 @@
+
+ org.flywaydb
+ flyway-maven-plugin
+ ${flyway.version}
+
+
+ migrate
+ deploy
+
+ migrate
+
+
+
+
+ ${database.url}
+ ${database.username}
+ ${database.password}
+
+ classpath:db/migration
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 35a985d..d69ecb8 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -2,20 +2,14 @@ spring:
application:
name: ServerMonitorBot
datasource:
- url: jdbc:postgresql://localhost:5432/servermonitorbot
+ url: jdbc:postgresql://db:5432/servermonitorbot
username: servermonitorbot
password: servermonitorbot
jpa:
hibernate:
ddl-auto: none
- liquibase:
- enabled: true
- change-log: classpath:db/scripts/changelog-master.xml
- url: jdbc:postgresql://localhost:5432/servermonitorbot
- user: servermonitorbot
- password: servermonitorbot
- liquibase-schema: "liquibase"
- default-schema: "servermonitorbot"
+ flyway:
+ locations: classpath:db/migration
bot:
name: "ServerMonitorBot"
token: "token"
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/01_create_table_users.sql b/src/main/resources/db/migration/V001__create_table_users.sql
similarity index 90%
rename from src/main/resources/db/scripts/release_0_0_1/scripts/01_create_table_users.sql
rename to src/main/resources/db/migration/V001__create_table_users.sql
index 9164f99..058d3f4 100644
--- a/src/main/resources/db/scripts/release_0_0_1/scripts/01_create_table_users.sql
+++ b/src/main/resources/db/migration/V001__create_table_users.sql
@@ -1,5 +1,3 @@
---liquibase formatted sql
-
--changeset L_DelOff:create_table_users rollbackSplitStatements:true
--comment: Создание таблицы пользователей
CREATE TABLE users
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/02_create_table_roles.sql b/src/main/resources/db/migration/V002__create_table_roles.sql
similarity index 88%
rename from src/main/resources/db/scripts/release_0_0_1/scripts/02_create_table_roles.sql
rename to src/main/resources/db/migration/V002__create_table_roles.sql
index e7d5fad..76c5559 100644
--- a/src/main/resources/db/scripts/release_0_0_1/scripts/02_create_table_roles.sql
+++ b/src/main/resources/db/migration/V002__create_table_roles.sql
@@ -1,5 +1,3 @@
---liquibase formatted sql
-
--changeset L_DelOff:create_table_roles rollbackSplitStatements:true
--comment: Создание таблицы ролей
CREATE TABLE roles
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/03_add_FK_users_to_roles.sql b/src/main/resources/db/migration/V003__add_FK_users_to_roles.sql
similarity index 100%
rename from src/main/resources/db/scripts/release_0_0_1/scripts/03_add_FK_users_to_roles.sql
rename to src/main/resources/db/migration/V003__add_FK_users_to_roles.sql
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/04_add_roles.sql b/src/main/resources/db/migration/V004__add_roles.sql
similarity index 100%
rename from src/main/resources/db/scripts/release_0_0_1/scripts/04_add_roles.sql
rename to src/main/resources/db/migration/V004__add_roles.sql
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/05_add_anonymous_role.sql b/src/main/resources/db/migration/V005__add_anonymous_role.sql
similarity index 100%
rename from src/main/resources/db/scripts/release_0_0_1/scripts/05_add_anonymous_role.sql
rename to src/main/resources/db/migration/V005__add_anonymous_role.sql
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/06_refactor_users_table.sql b/src/main/resources/db/migration/V006__refactor_users_table.sql
similarity index 100%
rename from src/main/resources/db/scripts/release_0_0_1/scripts/06_refactor_users_table.sql
rename to src/main/resources/db/migration/V006__refactor_users_table.sql
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/07_refactor_roles_table.sql b/src/main/resources/db/migration/V007__refactor_roles_table.sql
similarity index 100%
rename from src/main/resources/db/scripts/release_0_0_1/scripts/07_refactor_roles_table.sql
rename to src/main/resources/db/migration/V007__refactor_roles_table.sql
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/08_add_roles.sql b/src/main/resources/db/migration/V008__add_roles.sql
similarity index 100%
rename from src/main/resources/db/scripts/release_0_0_1/scripts/08_add_roles.sql
rename to src/main/resources/db/migration/V008__add_roles.sql
diff --git a/src/main/resources/db/scripts/changelog-master.xml b/src/main/resources/db/scripts/changelog-master.xml
deleted file mode 100644
index bd90cc4..0000000
--- a/src/main/resources/db/scripts/changelog-master.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/db/scripts/release_0_0_1/changelog.xml b/src/main/resources/db/scripts/release_0_0_1/changelog.xml
deleted file mode 100644
index 1b0334d..0000000
--- a/src/main/resources/db/scripts/release_0_0_1/changelog.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/db/scripts/release_0_0_1/scripts/00_create_schema_servermonitorbot.sql b/src/main/resources/db/scripts/release_0_0_1/scripts/00_create_schema_servermonitorbot.sql
deleted file mode 100644
index e69de29..0000000