From e6fa668a23d7b98c2afb8e9a9ebd8037c843adff Mon Sep 17 00:00:00 2001 From: KirillSmirnov Date: Sat, 9 Mar 2024 23:45:27 +0300 Subject: [PATCH] CI/CD --- .github/workflows/main.yml | 60 ++++++++++++++++++ crypto-messenger-coder/pom.xml | 2 +- crypto-messenger-desktop/pom.xml | 41 +++++++++++- .../infrastructure/ui/JavaFxApplication.java | 2 +- .../ui/dialog/SendMessageDialog.java | 2 +- .../src/main/resources/application.yml | 2 +- .../src/main/resources/graphics/lock.ico | Bin 0 -> 3719 bytes .../src/main/resources/graphics/lock.jpg | Bin 51391 -> 0 bytes .../src/main/resources/graphics/lock.png | Bin 0 -> 9362 bytes crypto-messenger-server/pom.xml | 2 +- .../src/main/resources/application.yml | 1 + .../src/test/resources/application.yml | 0 docker/Dockerfile | 4 ++ docker/docker-compose.yml | 16 +++++ pom.xml | 2 +- 15 files changed, 127 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/main.yml create mode 100644 crypto-messenger-desktop/src/main/resources/graphics/lock.ico delete mode 100644 crypto-messenger-desktop/src/main/resources/graphics/lock.jpg create mode 100644 crypto-messenger-desktop/src/main/resources/graphics/lock.png create mode 100644 crypto-messenger-server/src/test/resources/application.yml create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..8a5c3f7 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,60 @@ +on: + - push + +jobs: + qa: + runs-on: ubuntu-latest + steps: + - uses: actions/setup-java@v1 + with: + java-version: 17 + - uses: actions/checkout@v2 + - run: docker compose up -d mongo + working-directory: docker + - run: ./mvnw verify + deploy: + if: github.ref_name == 'main' + needs: qa + runs-on: self-hosted + steps: + - uses: actions/checkout@v2 + - run: ./mvnw package -DskipTests + - run: cp crypto-messenger-server/target/*.jar docker/ + - run: docker compose -p crypto-messenger up -d --build + working-directory: docker + build-for-debian: + runs-on: ubuntu-latest + steps: + - uses: actions/setup-java@v1 + with: + java-version: 17 + - uses: actions/checkout@v2 + - run: ./mvnw install -DskipTests + - uses: actions/upload-artifact@v3 + with: + name: debian-${{ github.run_id }} + path: crypto-messenger-desktop/target/*.deb + build-for-windows: + runs-on: windows-latest + steps: + - uses: actions/setup-java@v1 + with: + java-version: 17 + - uses: actions/checkout@v2 + - run: ./mvnw install -DiconType=ico -DskipTests + - uses: actions/upload-artifact@v3 + with: + name: windows-${{ github.run_id }} + path: crypto-messenger-desktop/target/*.exe + build-for-macos: + runs-on: macos-latest + steps: + - uses: actions/setup-java@v1 + with: + java-version: 17 + - uses: actions/checkout@v2 + - run: ./mvnw install -DskipTests + - uses: actions/upload-artifact@v3 + with: + name: macos-${{ github.run_id }} + path: crypto-messenger-desktop/target/*.dmg diff --git a/crypto-messenger-coder/pom.xml b/crypto-messenger-coder/pom.xml index 9b06d17..b99af34 100644 --- a/crypto-messenger-coder/pom.xml +++ b/crypto-messenger-coder/pom.xml @@ -7,7 +7,7 @@ org.example crypto-messenger - 1.0-SNAPSHOT + 0.1.0 crypto-messenger-coder diff --git a/crypto-messenger-desktop/pom.xml b/crypto-messenger-desktop/pom.xml index 22ee46e..77e4d85 100644 --- a/crypto-messenger-desktop/pom.xml +++ b/crypto-messenger-desktop/pom.xml @@ -7,11 +7,15 @@ org.example crypto-messenger - 1.0-SNAPSHOT + 0.1.0 crypto-messenger-desktop + + png + + org.springframework.data @@ -47,6 +51,41 @@ org.springframework.boot spring-boot-maven-plugin + + ${project.build.directory}/app + + + + + org.panteleyev + jpackage-maven-plugin + 1.6.0 + + + install + + jpackage + + + + + + ${project.build.directory}/app + ${project.build.finalName}.jar + ${project.build.directory} + + + CryptoMessenger + src/main/resources/graphics/lock.${iconType} + Kirill + + + true + true + true + true + Kirill + diff --git a/crypto-messenger-desktop/src/main/java/cryptomessenger/desktop/infrastructure/ui/JavaFxApplication.java b/crypto-messenger-desktop/src/main/java/cryptomessenger/desktop/infrastructure/ui/JavaFxApplication.java index 8d720a0..ddb709b 100644 --- a/crypto-messenger-desktop/src/main/java/cryptomessenger/desktop/infrastructure/ui/JavaFxApplication.java +++ b/crypto-messenger-desktop/src/main/java/cryptomessenger/desktop/infrastructure/ui/JavaFxApplication.java @@ -23,7 +23,7 @@ public JavaFxApplication() { @Override public void start(Stage primaryStage) { primaryStage.setTitle("CryptoMessenger"); - primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/graphics/lock.jpg"))); + primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/graphics/lock.png"))); primaryStage.setScene(sceneLoader.load("MainScene")); primaryStage.show(); } diff --git a/crypto-messenger-desktop/src/main/java/cryptomessenger/desktop/infrastructure/ui/dialog/SendMessageDialog.java b/crypto-messenger-desktop/src/main/java/cryptomessenger/desktop/infrastructure/ui/dialog/SendMessageDialog.java index b39488e..8b1bfc0 100644 --- a/crypto-messenger-desktop/src/main/java/cryptomessenger/desktop/infrastructure/ui/dialog/SendMessageDialog.java +++ b/crypto-messenger-desktop/src/main/java/cryptomessenger/desktop/infrastructure/ui/dialog/SendMessageDialog.java @@ -19,7 +19,7 @@ public class SendMessageDialog { public void show(Runnable onSuccess) { var stage = new Stage(); stage.setTitle("Send Message"); - stage.getIcons().add(new Image(getClass().getResourceAsStream("/graphics/lock.jpg"))); + stage.getIcons().add(new Image(getClass().getResourceAsStream("/graphics/lock.png"))); stage.initModality(Modality.APPLICATION_MODAL); var sceneProperties = SceneProperties.of( entry("onSent", (Runnable) () -> { diff --git a/crypto-messenger-desktop/src/main/resources/application.yml b/crypto-messenger-desktop/src/main/resources/application.yml index 5f81ba1..3f1eb53 100644 --- a/crypto-messenger-desktop/src/main/resources/application.yml +++ b/crypto-messenger-desktop/src/main/resources/application.yml @@ -1,5 +1,5 @@ app: - server-base-url: http://localhost:8080 + server-base-url: http://164.90.184.120 spring: main: web-application-type: none diff --git a/crypto-messenger-desktop/src/main/resources/graphics/lock.ico b/crypto-messenger-desktop/src/main/resources/graphics/lock.ico new file mode 100644 index 0000000000000000000000000000000000000000..6d6f332edc08bdd19f6f1395c3ef8bd788b7704f GIT binary patch literal 3719 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 UzrWE`23(k)7DBV`j?0yYtNfB*mh literal 0 HcmV?d00001 diff --git a/crypto-messenger-desktop/src/main/resources/graphics/lock.jpg b/crypto-messenger-desktop/src/main/resources/graphics/lock.jpg deleted file mode 100644 index 395340a5d90496f710d1a895858cbe65674a0b2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51391 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

    ?uie$;nQ^@c>b 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ௌ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 I+@IzD1(cyHga7~l diff --git a/crypto-messenger-desktop/src/main/resources/graphics/lock.png b/crypto-messenger-desktop/src/main/resources/graphics/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..92665677b1c7f3940ffd6334c9765c733b7405ac GIT binary patch literal 9362 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 UO-T{?eh2`M+nBvP<`(mR0HU;s7ytkO literal 0 HcmV?d00001 diff --git a/crypto-messenger-server/pom.xml b/crypto-messenger-server/pom.xml index d73686f..709bbda 100644 --- a/crypto-messenger-server/pom.xml +++ b/crypto-messenger-server/pom.xml @@ -7,7 +7,7 @@ org.example crypto-messenger - 1.0-SNAPSHOT + 0.1.0 crypto-messenger-server diff --git a/crypto-messenger-server/src/main/resources/application.yml b/crypto-messenger-server/src/main/resources/application.yml index 67b66ed..43ef74f 100644 --- a/crypto-messenger-server/src/main/resources/application.yml +++ b/crypto-messenger-server/src/main/resources/application.yml @@ -1,5 +1,6 @@ spring: data: mongodb: + host: mongo database: main auto-index-creation: true diff --git a/crypto-messenger-server/src/test/resources/application.yml b/crypto-messenger-server/src/test/resources/application.yml new file mode 100644 index 0000000..e69de29 diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..3d3845c --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,4 @@ +FROM eclipse-temurin:17-jre-alpine +WORKDIR /opt +COPY *.jar . +ENTRYPOINT exec java -Xmx200M -jar *.jar diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..27c486e --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,16 @@ +version: '3' +services: + app: + build: . + restart: always + ports: + - 0.0.0.0:80:8080 + mongo: + image: mongo + restart: always + ports: + - 127.0.0.1:27017:27017 + volumes: + - mongo:/data/db +volumes: + mongo: diff --git a/pom.xml b/pom.xml index 21a3f33..15bdb58 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.example crypto-messenger - 1.0-SNAPSHOT + 0.1.0 pom