Skip to content

Commit

Permalink
Fix compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
juncevich committed May 6, 2023
1 parent fc75e56 commit 9ba6e3b
Show file tree
Hide file tree
Showing 23 changed files with 268 additions and 46 deletions.
1 change: 1 addition & 0 deletions infrastructure/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ plugins {

group = "ru.relay.infrastructure"
version = "unspecified"
java.sourceCompatibility = JavaVersion.VERSION_HIGHER

repositories {
mavenCentral()
Expand Down
2 changes: 1 addition & 1 deletion infrastructure/db/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ bootJar.enabled = false
jar.enabled = true

group = "ru.relay.infrastructure"
version = "0.01"
version = "0.0.1"

dependencies {
implementation("commons-beanutils:commons-beanutils:1.9.4")
Expand Down
2 changes: 1 addition & 1 deletion infrastructure/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2 changes: 1 addition & 1 deletion infrastructure/id/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
42 changes: 42 additions & 0 deletions infrastructure/local-postgres/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### Mac OS ###
.DS_Store
46 changes: 46 additions & 0 deletions infrastructure/local-postgres/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
plugins {
id("java")
id("org.springframework.boot") version "3.0.6"
id("io.spring.dependency-management") version "1.1.0"
}

group = "ru.relay.infrastructure"
version = "0.0.1"

extra["testcontainersVersion"] = "1.18.0"

dependencyManagement {
imports {
mavenBom("org.testcontainers:testcontainers-bom:${property("testcontainersVersion")}")
}
}

repositories {
mavenCentral()
}



dependencies {
implementation("org.springframework.boot:spring-boot-starter")
testImplementation(platform("org.junit:junit-bom:5.9.1"))
testImplementation("org.junit.jupiter:junit-jupiter")
implementation("org.testcontainers:postgresql:1.18.0")
implementation("org.springframework.boot:spring-boot-devtools")
}

tasks.test {
useJUnitPlatform()
}

publishing {
publications {
create<MavenPublication>("maven") {
groupId = group.toString()
artifactId = "local-postgres"
version = version.toString()

from(components["java"])
}
}
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package ru.relay.infrastructure.localpostgres;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.boot.devtools.restart.Restarter;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.EnumerablePropertySource;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.PostgreSQLContainer;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

public class LocalDeveloperConfig implements SpringApplicationRunListener {
public LocalDeveloperConfig(SpringApplication app, String[] args) {
app.addInitializers(configurableApplicationContext -> {
try {
// Restarter.getInstance();
} catch (Throwable ignored) {
// Restarter is not initialized, exiting
return;
}

ConfigurableEnvironment environment = configurableApplicationContext.getEnvironment();
environment.getPropertySources().addLast(new PostgreSQLPropertySource(environment));
});
}

private static class PostgreSQLPropertySource extends ContainerPropertySource<PostgreSQLContainer<?>> {

private final ConfigurableEnvironment environment;

public PostgreSQLPropertySource(ConfigurableEnvironment environment) {
super("org.testcontainers.postgresql");
this.environment = environment;

addPropertyMapper("spring.r2dbc.url", it -> {
return String.format(
"r2dbc:postgresql://%s:%d/test",
it.getHost(),
it.getMappedPort(5432)
);
});
addPropertyMapper("spring.r2dbc.username", PostgreSQLContainer::getUsername);
addPropertyMapper("spring.r2dbc.password", PostgreSQLContainer::getPassword);
addPropertyMapper("spring.datasource.url", PostgreSQLContainer::getJdbcUrl);
addPropertyMapper("spring.datasource.username", PostgreSQLContainer::getUsername);
addPropertyMapper("spring.datasource.password", PostgreSQLContainer::getPassword);
}

@Override
protected PostgreSQLContainer<?> createContainer() {
String image = environment.getProperty("testcontainers.postgres", "postgres:13.3");

try (PostgreSQLContainer container = new PostgreSQLContainer<>(image)
.withReuse(true)) {
return container;
}

}
}


/**
* Base class for Testcontainers-based property sources
*/
private abstract static class ContainerPropertySource<T extends GenericContainer<?>> extends EnumerablePropertySource<T> {

private final Map<String, Function<T, Object>> propertyMappers = new HashMap<>();

public ContainerPropertySource(String name) {
super(name);
}

protected void addPropertyMapper(String name, Function<T, Object> mapper) {
propertyMappers.put(name, mapper);
}

protected abstract T createContainer();

@Override
public String[] getPropertyNames() {
return propertyMappers.keySet().toArray(new String[0]);
}

@Override
public boolean containsProperty(String name) {
return propertyMappers.containsKey(name);
}

@Override
public Object getProperty(String name) {
Function<T, Object> mapper = propertyMappers.get(name);
if (mapper == null) {
return null;
}

return mapper.apply(
(T) Restarter.getInstance().getOrAddAttribute(
"ContainerPropertySource." + getName(),
() -> {
T result = createContainer();
result.start();
return result;
}
)
);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
org.springframework.boot.SpringApplicationRunListener=ru.relay.infrastructure.localpostgres.LocalDeveloperConfig
1 change: 1 addition & 0 deletions infrastructure/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ rootProject.name = "infrastructure"

include(":id")
include(":db")
include(":local-postgres")
32 changes: 16 additions & 16 deletions k8s/data-service/data-service-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,41 +3,41 @@ apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: data-service
app.kubernetes.io/name: relay-store-service
app.kubernetes.io/version: 0.0.2-SNAPSHOT
name: data-service-srv
name: relay-store-service-srv
spec:
ports:
- name: http
port: 8082
targetPort: 8082
selector:
app.kubernetes.io/name: data-service
app.kubernetes.io/name: relay-store-service
app.kubernetes.io/version: 0.0.2-SNAPSHOT
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: data-service
name: relay-store-service
labels:
app.kubernetes.io/name: data-service
app.kubernetes.io/name: relay-store-service
app.kubernetes.io/version: 0.0.2-SNAPSHOT
spec:
replicas: 1
selector:
matchLabels:
app: data-service
app.kubernetes.io/name: data-service
app: relay-store-service
app.kubernetes.io/name: relay-store-service
app.kubernetes.io/version: 0.0.2-SNAPSHOT
template:
metadata:
annotations:
app.dekorate.io/commit-id: 7937c4540c5af8396361615ae220c0112f3ddd42
app.dekorate.io/vcs-url: https://github.com/juncevich/relay-system.git
labels:
app: data-service
app.kubernetes.io/name: data-service
app: relay-store-service
app.kubernetes.io/name: relay-store-service
app.kubernetes.io/version: 0.0.2-SNAPSHOT
spec:
containers:
Expand All @@ -46,9 +46,9 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: alexunc/data-service:0.0.2-SNAPSHOT
image: alexunc/relay-store-service:0.0.2-SNAPSHOT
imagePullPolicy: IfNotPresent
name: data-service
name: relay-store-service
# volumeMounts:
# - name: mongodb
# mountPath: /etc/secretspot
Expand Down Expand Up @@ -88,7 +88,7 @@ spec:
apiVersion: v1
kind: Secret
metadata:
name: data-service
name: relay-store-service
type: Opaque
data:
spring.data.mongodb.username: bW9uZ28tYWRtaW4=
Expand All @@ -108,7 +108,7 @@ data:
#apiVersion: networking.k8s.io/v1
#kind: Ingress
#metadata:
# name: data-service-ingress
# name: relay-store-service-ingress
# annotations:
# nginx.ingress.kubernetes.io/rewrite-target: /
#spec:
Expand All @@ -119,16 +119,16 @@ data:
# pathType: Prefix
# backend:
# service:
# name: data-service
# name: relay-store-service
# port:
# number: 8082
#apiVersion: networking.k8s.io/v1
#kind: Ingress
#metadata:
# name: data-service-ingress
# name: relay-store-service-ingress
#spec:
# defaultBackend:
# service:
# name: data-service-srv
# name: relay-store-service-srv
# port:
# number: 8082
2 changes: 1 addition & 1 deletion location-service/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
2 changes: 1 addition & 1 deletion relay-store-service/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#
#ENTRYPOINT java -jar example-0.0.1-SNAPSHOT.jar

FROM openjdk:17-alpine
FROM eclipse-temurin:20-alpine

WORKDIR /app
ADD BOOT-INF/lib /app/lib
Expand Down
8 changes: 4 additions & 4 deletions relay-store-service/Tiltfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
load('ext://restart_process', 'docker_build_with_restart')

local_resource('data-service-compile', './gradlew bootJar && ' +
local_resource('relay-store-compile', './gradlew bootJar && ' +
'rm -rf build/jar-staging && ' +
'unzip -o build/libs/data-service-0.0.2-SNAPSHOT.jar -d build/jar-staging && ' +
'unzip -o build/libs/relay-store-service-0.0.2-SNAPSHOT.jar -d build/jar-staging && ' +
'rsync --delete --inplace --checksum -r build/jar-staging/ build/jar',
deps=['src', 'build.gradle'])

docker_build('alexunc/data-service', './build/jar',
docker_build('alexunc/relay-store-service', './build/jar',
entrypoint=['java', '-noverify', '-cp', '.:./lib/*', 'com.relay.RelaySystemApplication'],
dockerfile='./Dockerfile',
live_update=[
Expand All @@ -30,5 +30,5 @@ helm_remote('postgresql',
# repo_name='kong',
# repo_url='https://charts.konghq.com')

k8s_resource('data-service', port_forwards=8080, resource_deps=['data-service-compile'])
k8s_resource('relay-store-service', port_forwards=8080, resource_deps=['relay-store-compile'])
k8s_resource('postgresql', port_forwards=[5432])

0 comments on commit 9ba6e3b

Please sign in to comment.