From 9497249bf0adade160d3889022da1122a56c0946 Mon Sep 17 00:00:00 2001 From: root123 Date: Tue, 26 Aug 2025 18:21:01 -0400 Subject: [PATCH] added dev profile --- .github/workflows/develop-pipeline.yaml | 2 +- .github/workflows/feature-pipeline.yaml | 2 +- .github/workflows/qodana_code_quality.yml | 41 +++++++++++++++++ k8s/deployments/order-service-deployment.yaml | 4 +- .../product-service-deployment.yaml | 4 +- k8s/deployments/user-service-deployment.yaml | 4 +- ...{application.yaml => application-dev.yaml} | 5 +++ .../src/main/resources/application-prod.yaml | 45 +++++++++++++++++++ .../src/main/resources/application-qa.yaml | 45 +++++++++++++++++++ port-forward.log | 21 +++++++++ ...{application.yaml => application-dev.yaml} | 0 .../src/main/resources/application-prod.yaml | 45 +++++++++++++++++++ .../src/main/resources/application-qa.yaml | 45 +++++++++++++++++++ qodana.yaml | 44 ++++++++++++++++++ ...{application.yaml => application-dev.yaml} | 24 ++++++---- .../src/main/resources/application-prod.yaml | 45 +++++++++++++++++++ .../src/main/resources/application-qa.yaml | 45 +++++++++++++++++++ 17 files changed, 408 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/qodana_code_quality.yml rename order-service/src/main/resources/{application.yaml => application-dev.yaml} (82%) create mode 100644 order-service/src/main/resources/application-prod.yaml create mode 100644 order-service/src/main/resources/application-qa.yaml create mode 100644 port-forward.log rename product-service/src/main/resources/{application.yaml => application-dev.yaml} (100%) create mode 100644 product-service/src/main/resources/application-prod.yaml create mode 100644 product-service/src/main/resources/application-qa.yaml create mode 100644 qodana.yaml rename user-service/src/main/resources/{application.yaml => application-dev.yaml} (55%) create mode 100644 user-service/src/main/resources/application-prod.yaml create mode 100644 user-service/src/main/resources/application-qa.yaml diff --git a/.github/workflows/develop-pipeline.yaml b/.github/workflows/develop-pipeline.yaml index b03356f..853abf1 100644 --- a/.github/workflows/develop-pipeline.yaml +++ b/.github/workflows/develop-pipeline.yaml @@ -3,7 +3,7 @@ name: Build and Deploy to Local Kubernetes on: push: branches: - - feature/* + - 'develop' jobs: build-and-deploy: diff --git a/.github/workflows/feature-pipeline.yaml b/.github/workflows/feature-pipeline.yaml index 2087877..28f07b1 100644 --- a/.github/workflows/feature-pipeline.yaml +++ b/.github/workflows/feature-pipeline.yaml @@ -3,7 +3,7 @@ name: Build and Deploy to Local Kubernetes on: push: branches: - - feature/* + - 'feature/**' jobs: build-and-deploy: diff --git a/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml new file mode 100644 index 0000000..28a6be8 --- /dev/null +++ b/.github/workflows/qodana_code_quality.yml @@ -0,0 +1,41 @@ +#-------------------------------------------------------------------------------# +# Discover all capabilities of Qodana in our documentation # +# https://www.jetbrains.com/help/qodana/about-qodana.html # +#-------------------------------------------------------------------------------# + +name: Qodana +on: + workflow_dispatch: + pull_request: + push: + branches: + - develop + - master + - feature/** + +jobs: + qodana: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + checks: write + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + - name: 'Qodana Scan' + uses: JetBrains/qodana-action@v2025.2 + env: + QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} + with: + # In pr-mode: 'true' Qodana checks only changed files + pr-mode: false + use-caches: true + post-pr-comment: true + use-annotations: true + # Upload Qodana results (SARIF, other artifacts, logs) as an artifact to the job + upload-result: false + # quick-fixes available in Ultimate and Ultimate Plus plans + push-fixes: 'none' \ No newline at end of file diff --git a/k8s/deployments/order-service-deployment.yaml b/k8s/deployments/order-service-deployment.yaml index 42d2044..103f31b 100644 --- a/k8s/deployments/order-service-deployment.yaml +++ b/k8s/deployments/order-service-deployment.yaml @@ -33,4 +33,6 @@ spec: - name: SPRING_JPA_PROPERTIES_HIBERNATE_DEFAULT_SCHEMA value: order - name: KAFKA_BOOTSTRAP_SERVERS - value: kafka:9092 \ No newline at end of file + value: kafka:9092 + - name: SPRING_PROFILES_ACTIVE + value: dev \ No newline at end of file diff --git a/k8s/deployments/product-service-deployment.yaml b/k8s/deployments/product-service-deployment.yaml index a28341a..08d931a 100644 --- a/k8s/deployments/product-service-deployment.yaml +++ b/k8s/deployments/product-service-deployment.yaml @@ -33,4 +33,6 @@ spec: - name: SPRING_JPA_PROPERTIES_HIBERNATE_DEFAULT_SCHEMA value: product - name: KAFKA_BOOTSTRAP_SERVERS - value: kafka:9092 \ No newline at end of file + value: kafka:9092 + - name: SPRING_PROFILES_ACTIVE + value: dev \ No newline at end of file diff --git a/k8s/deployments/user-service-deployment.yaml b/k8s/deployments/user-service-deployment.yaml index 9683f5a..3703644 100644 --- a/k8s/deployments/user-service-deployment.yaml +++ b/k8s/deployments/user-service-deployment.yaml @@ -33,4 +33,6 @@ spec: - name: SPRING_JPA_PROPERTIES_HIBERNATE_DEFAULT_SCHEMA value: user - name: KAFKA_BOOTSTRAP_SERVERS - value: kafka:9092 \ No newline at end of file + value: kafka:9092 + - name: SPRING_PROFILES_ACTIVE + value: dev \ No newline at end of file diff --git a/order-service/src/main/resources/application.yaml b/order-service/src/main/resources/application-dev.yaml similarity index 82% rename from order-service/src/main/resources/application.yaml rename to order-service/src/main/resources/application-dev.yaml index c99d833..fb88f11 100644 --- a/order-service/src/main/resources/application.yaml +++ b/order-service/src/main/resources/application-dev.yaml @@ -26,6 +26,11 @@ spring: topic: topic.v1.orders topic-partitions: 2 topic-replication-factor: 1 + properties: + security.protocol: SASL_SSL + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${EVENT_HUBS_CONNECTION_STRING}"; + consumer: group-id: order-service-group auto-offset-reset: earliest diff --git a/order-service/src/main/resources/application-prod.yaml b/order-service/src/main/resources/application-prod.yaml new file mode 100644 index 0000000..40d3209 --- /dev/null +++ b/order-service/src/main/resources/application-prod.yaml @@ -0,0 +1,45 @@ +server: + port: 8085 + +spring: + application: + name: order-service + + datasource: + url: ${SPRING_DATASOURCE_URL} + username: ${SPRING_DATASOURCE_USERNAME} + password: ${SPRING_DATASOURCE_PASSWORD} + driver-class-name: org.postgresql.Driver + jpa: + hibernate: + ddl-auto: ${SPRING_JPA_HIBERNATE_DDL_AUTO:update} + properties: + hibernate: + default_schema: order + + jwt: + secret: ${JWT_SECRET} + + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} + topic: topic.v1.orders + topic-partitions: 2 + topic-replication-factor: 1 + properties: + security.protocol: SASL_SSL + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${EVENT_HUBS_CONNECTION_STRING}"; + consumer: + group-id: order-service-group + auto-offset-reset: earliest +# key-deserializer: org.apache.kafka.common.serialization.StringDeserializer +# value-deserializer: org.apache.kafka.common.serialization.StringDeserializer + producer: + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + +logging: + level: + root: INFO + org.springframework.security: INFO + com.devsocket.ecommerce.orderservice: INFO \ No newline at end of file diff --git a/order-service/src/main/resources/application-qa.yaml b/order-service/src/main/resources/application-qa.yaml new file mode 100644 index 0000000..90ebe77 --- /dev/null +++ b/order-service/src/main/resources/application-qa.yaml @@ -0,0 +1,45 @@ +server: + port: 8085 + +spring: + application: + name: order-service + + datasource: + url: ${SPRING_DATASOURCE_URL} + username: ${SPRING_DATASOURCE_USERNAME} + password: ${SPRING_DATASOURCE_PASSWORD} + driver-class-name: org.postgresql.Driver + jpa: + hibernate: + ddl-auto: ${SPRING_JPA_HIBERNATE_DDL_AUTO:update} + properties: + hibernate: + default_schema: order + + jwt: + secret: ${JWT_SECRET} + + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} + topic: topic.v1.orders + topic-partitions: 2 + topic-replication-factor: 1 + properties: + security.protocol: SASL_SSL + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${EVENT_HUBS_CONNECTION_STRING}"; + consumer: + group-id: order-service-group + auto-offset-reset: earliest +# key-deserializer: org.apache.kafka.common.serialization.StringDeserializer +# value-deserializer: org.apache.kafka.common.serialization.StringDeserializer + producer: + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + +logging: + level: + root: INFO + org.springframework.security: INFO + com.devsocket.ecommerce.userservice: INFO \ No newline at end of file diff --git a/port-forward.log b/port-forward.log new file mode 100644 index 0000000..30bab98 --- /dev/null +++ b/port-forward.log @@ -0,0 +1,21 @@ +Forwarding from 127.0.0.1:80 -> 80 +Forwarding from [::1]:80 -> 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +Handling connection for 80 +error: lost connection to pod diff --git a/product-service/src/main/resources/application.yaml b/product-service/src/main/resources/application-dev.yaml similarity index 100% rename from product-service/src/main/resources/application.yaml rename to product-service/src/main/resources/application-dev.yaml diff --git a/product-service/src/main/resources/application-prod.yaml b/product-service/src/main/resources/application-prod.yaml new file mode 100644 index 0000000..96afbd4 --- /dev/null +++ b/product-service/src/main/resources/application-prod.yaml @@ -0,0 +1,45 @@ +server: + port: 8080 + +spring: + application: + name: user-service + + datasource: + url: ${SPRING_DATASOURCE_URL} + username: ${SPRING_DATASOURCE_USERNAME} + password: ${SPRING_DATASOURCE_PASSWORD} + driver-class-name: org.postgresql.Driver + jpa: + hibernate: + ddl-auto: ${SPRING_JPA_HIBERNATE_DDL_AUTO:update} + properties: + hibernate: + default_schema: product + + jwt: + secret: ${JWT_SECRET} + + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} + topic: topic.v1.products + topic-partitions: 2 + topic-replication-factor: 1 + properties: + security.protocol: SASL_SSL + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${EVENT_HUBS_CONNECTION_STRING}"; + consumer: + group-id: user-service-group + auto-offset-reset: earliest +# key-deserializer: org.apache.kafka.common.serialization.StringDeserializer +# value-deserializer: org.apache.kafka.common.serialization.StringDeserializer + producer: + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + +logging: + level: + root: INFO + org.springframework.security: INFO + com.devsocket.ecommerce.userservice: INFO \ No newline at end of file diff --git a/product-service/src/main/resources/application-qa.yaml b/product-service/src/main/resources/application-qa.yaml new file mode 100644 index 0000000..8e7b99a --- /dev/null +++ b/product-service/src/main/resources/application-qa.yaml @@ -0,0 +1,45 @@ +server: + port: 8081 + +spring: + application: + name: product-service + + datasource: + url: ${SPRING_QA_DATASOURCE_URL} + username: ${SPRING_DATASOURCE_USERNAME} + password: ${SPRING_DATASOURCE_PASSWORD} + driver-class-name: org.postgresql.Driver + jpa: + hibernate: + ddl-auto: ${SPRING_JPA_HIBERNATE_DDL_AUTO:update} + properties: + hibernate: + default_schema: product + + jwt: + secret: ${JWT_SECRET} + + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} + topic: topic.v1.products + topic-partitions: 2 + topic-replication-factor: 1 + properties: + security.protocol: SASL_SSL + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${EVENT_HUBS_CONNECTION_STRING}"; + consumer: + group-id: product-service-group + auto-offset-reset: earliest +# key-deserializer: org.apache.kafka.common.serialization.StringDeserializer +# value-deserializer: org.apache.kafka.common.serialization.StringDeserializer + producer: + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + +logging: + level: + root: INFO + org.springframework.security: INFO + com.devsocket.ecommerce.userservice: INFO \ No newline at end of file diff --git a/qodana.yaml b/qodana.yaml new file mode 100644 index 0000000..f6eb664 --- /dev/null +++ b/qodana.yaml @@ -0,0 +1,44 @@ +#-------------------------------------------------------------------------------# +# Qodana analysis is configured by qodana.yaml file # +# https://www.jetbrains.com/help/qodana/qodana-yaml.html # +#-------------------------------------------------------------------------------# +version: "1.0" + +#Specify inspection profile for code analysis +profile: + name: qodana.starter + +#Enable inspections +#include: +# - name: + +#Disable inspections +#exclude: +# - name: +# paths: +# - + +projectJDK: "21" #(Applied in CI/CD pipeline) + +#Execute shell command before Qodana execution (Applied in CI/CD pipeline) +#bootstrap: sh ./prepare-qodana.sh + +#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) +#plugins: +# - id: #(plugin id can be found at https://plugins.jetbrains.com) + +# Quality gate. Will fail the CI/CD pipeline if any condition is not met +# severityThresholds - configures maximum thresholds for different problem severities +# testCoverageThresholds - configures minimum code coverage on a whole project and newly added code +# Code Coverage is available in Ultimate and Ultimate Plus plans +#failureConditions: +# severityThresholds: +# any: 15 +# critical: 5 +# testCoverageThresholds: +# fresh: 70 +# total: 50 + +#Qodana supports other languages, for example, Python, JavaScript, TypeScript, Go, C#, PHP +#For all supported languages see https://www.jetbrains.com/help/qodana/linters.html +linter: jetbrains/qodana-jvm-community:2025.2 diff --git a/user-service/src/main/resources/application.yaml b/user-service/src/main/resources/application-dev.yaml similarity index 55% rename from user-service/src/main/resources/application.yaml rename to user-service/src/main/resources/application-dev.yaml index af98dd5..d28808b 100644 --- a/user-service/src/main/resources/application.yaml +++ b/user-service/src/main/resources/application-dev.yaml @@ -20,16 +20,24 @@ spring: jwt: secret: ${JWT_SECRET:dev_secret_key} -# kafka: -# bootstrap-servers: localhost:9092 -# consumer: -# group-id: user-service-group -# auto-offset-reset: earliest +kafka: + bootstrap-servers: kafka:9092 + topic: topic.v1.users + topic-partitions: 2 + topic-replication-factor: 1 + properties: + security.protocol: SASL_SSL + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${EVENT_HUBS_CONNECTION_STRING}"; + + consumer: + group-id: user-service-group + auto-offset-reset: earliest # key-deserializer: org.apache.kafka.common.serialization.StringDeserializer # value-deserializer: org.apache.kafka.common.serialization.StringDeserializer -# producer: -# key-serializer: org.apache.kafka.common.serialization.StringSerializer -# value-serializer: org.apache.kafka.common.serialization.StringSerializer + producer: + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer logging: level: diff --git a/user-service/src/main/resources/application-prod.yaml b/user-service/src/main/resources/application-prod.yaml new file mode 100644 index 0000000..44cbec0 --- /dev/null +++ b/user-service/src/main/resources/application-prod.yaml @@ -0,0 +1,45 @@ +server: + port: 8080 + +spring: + application: + name: product-service + + datasource: + url: ${SPRING_DATASOURCE_URL} + username: ${SPRING_DATASOURCE_USERNAME} + password: ${SPRING_DATASOURCE_PASSWORD} + driver-class-name: org.postgresql.Driver + jpa: + hibernate: + ddl-auto: ${SPRING_JPA_HIBERNATE_DDL_AUTO:update} + properties: + hibernate: + default_schema: product + + jwt: + secret: ${JWT_SECRET} + + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} + topic: topic.v1.products + topic-partitions: 2 + topic-replication-factor: 1 + properties: + security.protocol: SASL_SSL + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${EVENT_HUBS_CONNECTION_STRING}"; + consumer: + group-id: user-service-group + auto-offset-reset: earliest +# key-deserializer: org.apache.kafka.common.serialization.StringDeserializer +# value-deserializer: org.apache.kafka.common.serialization.StringDeserializer + producer: + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + +logging: + level: + root: INFO + org.springframework.security: INFO + com.devsocket.ecommerce.userservice: INFO \ No newline at end of file diff --git a/user-service/src/main/resources/application-qa.yaml b/user-service/src/main/resources/application-qa.yaml new file mode 100644 index 0000000..48ae254 --- /dev/null +++ b/user-service/src/main/resources/application-qa.yaml @@ -0,0 +1,45 @@ +server: + port: 8080 + +spring: + application: + name: user-service + + datasource: + url: ${SPRING_QA_DATASOURCE_URL} + username: ${SPRING_DATASOURCE_USERNAME} + password: ${SPRING_DATASOURCE_PASSWORD} + driver-class-name: org.postgresql.Driver + jpa: + hibernate: + ddl-auto: ${SPRING_JPA_HIBERNATE_DDL_AUTO:update} + properties: + hibernate: + default_schema: product + + jwt: + secret: ${JWT_SECRET} + + kafka: + bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVERS} + topic: topic.v1.products + topic-partitions: 2 + topic-replication-factor: 1 + properties: + security.protocol: SASL_SSL + sasl.mechanism: PLAIN + sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="${EVENT_HUBS_CONNECTION_STRING}"; + consumer: + group-id: user-service-group + auto-offset-reset: earliest +# key-deserializer: org.apache.kafka.common.serialization.StringDeserializer +# value-deserializer: org.apache.kafka.common.serialization.StringDeserializer + producer: + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.springframework.kafka.support.serializer.JsonSerializer + +logging: + level: + root: INFO + org.springframework.security: INFO + com.devsocket.ecommerce.userservice: INFO \ No newline at end of file