Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/develop-pipeline.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Build and Deploy to Local Kubernetes
on:
push:
branches:
- feature/*
- 'develop'

jobs:
build-and-deploy:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/feature-pipeline.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Build and Deploy to Local Kubernetes
on:
push:
branches:
- feature/*
- 'feature/**'

jobs:
build-and-deploy:
Expand Down
41 changes: 41 additions & 0 deletions .github/workflows/qodana_code_quality.yml
Original file line number Diff line number Diff line change
@@ -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'
4 changes: 3 additions & 1 deletion k8s/deployments/order-service-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,6 @@ spec:
- name: SPRING_JPA_PROPERTIES_HIBERNATE_DEFAULT_SCHEMA
value: order
- name: KAFKA_BOOTSTRAP_SERVERS
value: kafka:9092
value: kafka:9092
- name: SPRING_PROFILES_ACTIVE
value: dev
4 changes: 3 additions & 1 deletion k8s/deployments/product-service-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,6 @@ spec:
- name: SPRING_JPA_PROPERTIES_HIBERNATE_DEFAULT_SCHEMA
value: product
- name: KAFKA_BOOTSTRAP_SERVERS
value: kafka:9092
value: kafka:9092
- name: SPRING_PROFILES_ACTIVE
value: dev
4 changes: 3 additions & 1 deletion k8s/deployments/user-service-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,6 @@ spec:
- name: SPRING_JPA_PROPERTIES_HIBERNATE_DEFAULT_SCHEMA
value: user
- name: KAFKA_BOOTSTRAP_SERVERS
value: kafka:9092
value: kafka:9092
- name: SPRING_PROFILES_ACTIVE
value: dev
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
45 changes: 45 additions & 0 deletions order-service/src/main/resources/application-prod.yaml
Original file line number Diff line number Diff line change
@@ -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
45 changes: 45 additions & 0 deletions order-service/src/main/resources/application-qa.yaml
Original file line number Diff line number Diff line change
@@ -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
21 changes: 21 additions & 0 deletions port-forward.log
Original file line number Diff line number Diff line change
@@ -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
45 changes: 45 additions & 0 deletions product-service/src/main/resources/application-prod.yaml
Original file line number Diff line number Diff line change
@@ -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
45 changes: 45 additions & 0 deletions product-service/src/main/resources/application-qa.yaml
Original file line number Diff line number Diff line change
@@ -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
44 changes: 44 additions & 0 deletions qodana.yaml
Original file line number Diff line number Diff line change
@@ -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: <SomeEnabledInspectionId>

#Disable inspections
#exclude:
# - name: <SomeDisabledInspectionId>
# paths:
# - <path/where/not/run/inspection>

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> #(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
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Loading