diff --git a/bamboo-specs/pom.xml b/bamboo-specs/pom.xml
new file mode 100644
index 0000000..f0524e0
--- /dev/null
+++ b/bamboo-specs/pom.xml
@@ -0,0 +1,37 @@
+
+ 4.0.0
+
+
+ com.atlassian.bamboo
+ bamboo-specs-parent
+ 7.2.2
+
+
+
+ bamboo-specs
+ 1.0.0-SNAPSHOT
+ jar
+
+
+
+ com.atlassian.bamboo
+ bamboo-specs-api
+
+
+ com.atlassian.bamboo
+ bamboo-specs
+
+
+
+
+ junit
+ junit
+ test
+
+
+
+
+
+
+
diff --git a/bamboo-specs/src/main/java/buildjob/PlanSpec.java b/bamboo-specs/src/main/java/buildjob/PlanSpec.java
new file mode 100644
index 0000000..f7905c1
--- /dev/null
+++ b/bamboo-specs/src/main/java/buildjob/PlanSpec.java
@@ -0,0 +1,122 @@
+package buildjob;
+
+import com.atlassian.bamboo.specs.api.BambooSpec;
+import com.atlassian.bamboo.specs.api.builders.BambooKey;
+import com.atlassian.bamboo.specs.api.builders.docker.DockerConfiguration;
+import com.atlassian.bamboo.specs.api.builders.permission.PermissionType;
+import com.atlassian.bamboo.specs.api.builders.permission.Permissions;
+import com.atlassian.bamboo.specs.api.builders.permission.PlanPermissions;
+import com.atlassian.bamboo.specs.api.builders.plan.Job;
+import com.atlassian.bamboo.specs.api.builders.plan.Plan;
+import com.atlassian.bamboo.specs.api.builders.plan.PlanIdentifier;
+import com.atlassian.bamboo.specs.api.builders.plan.Stage;
+import com.atlassian.bamboo.specs.api.builders.plan.branches.BranchCleanup;
+import com.atlassian.bamboo.specs.api.builders.plan.branches.PlanBranchManagement;
+import com.atlassian.bamboo.specs.api.builders.project.Project;
+import com.atlassian.bamboo.specs.builders.task.CheckoutItem;
+import com.atlassian.bamboo.specs.builders.task.InjectVariablesTask;
+import com.atlassian.bamboo.specs.builders.task.ScriptTask;
+import com.atlassian.bamboo.specs.builders.task.VcsCheckoutTask;
+import com.atlassian.bamboo.specs.builders.task.VcsTagTask;
+import com.atlassian.bamboo.specs.builders.trigger.BitbucketServerTrigger;
+import com.atlassian.bamboo.specs.model.task.InjectVariablesScope;
+import com.atlassian.bamboo.specs.util.BambooServer;
+import com.atlassian.bamboo.specs.builders.task.ScriptTask;
+import com.atlassian.bamboo.specs.model.task.ScriptTaskProperties.Location;
+
+import static com.atlassian.bamboo.specs.builders.task.TestParserTask.createJUnitParserTask;
+
+/**
+ * Plan configuration for Bamboo.
+ * Learn more on: https://confluence.atlassian.com/display/BAMBOO/Bamboo+Specs
+ */
+@BambooSpec
+public class PlanSpec {
+
+ private static final String SERVICE_NAME = "search-service";
+
+ private static final String JVM_ARGS =" -Xmx4g -XX:+ExitOnOutOfMemoryError -XX:SurvivorRatio=2 -XX:NewRatio=1 -XX:InitialTenuringThreshold=16 -XX:MaxTenuringThreshold=16 -XX:InitiatingHeapOccupancyPercent=35 ";
+
+ private static final String SERVICE_KEY = SERVICE_NAME.toUpperCase().replaceAll("-", "");
+
+ /**
+ * Run main to publish plan on Bamboo
+ */
+ public static void main(final String[] args) throws Exception {
+ //By default credentials are read from the '.credentials' file.
+ BambooServer bambooServer = new BambooServer("http://localhost:8085");
+
+ Plan plan = new PlanSpec().createPlan();
+ bambooServer.publish(plan);
+ PlanPermissions planPermission = new PlanSpec().createPlanPermission(plan.getIdentifier());
+ bambooServer.publish(planPermission);
+ }
+
+ private PlanPermissions createPlanPermission(PlanIdentifier planIdentifier) {
+ Permissions permission = new Permissions()
+ .userPermissions("atlbamboo", PermissionType.EDIT, PermissionType.VIEW, PermissionType.ADMIN, PermissionType.CLONE, PermissionType.BUILD)
+ .groupPermissions("red-backend", PermissionType.EDIT, PermissionType.VIEW, PermissionType.CLONE, PermissionType.BUILD)
+ .loggedInUserPermissions(PermissionType.VIEW)
+ .anonymousUserPermissionView();
+ return new PlanPermissions(planIdentifier.getProjectKey(), planIdentifier.getPlanKey()).permissions(permission);
+ }
+
+ private Project project() {
+ return new Project()
+ .name("RED")
+ .key(new BambooKey("RED"));
+ }
+
+ public Plan createPlan() {
+ return new Plan(
+ project(),
+ SERVICE_NAME, new BambooKey(SERVICE_KEY))
+ .description("Plan created from (enter repository url of your plan)")
+ .stages(new Stage("Default Stage")
+ .jobs(new Job("Default Job",
+ new BambooKey("JOB1"))
+ .tasks(
+ new ScriptTask()
+ .description("Clean")
+ .inlineBody("#!/bin/bash\n" +
+ "set -e\n" +
+ "rm -rf ./*"),
+ new VcsCheckoutTask()
+ .description("Checkout Default Repository")
+ .checkoutItems(new CheckoutItem().defaultRepository()),
+ new ScriptTask()
+ .description("Build")
+ .location(Location.FILE)
+ .fileFromPath("bamboo-specs/src/main/resources/scripts/build-java.sh")
+ .argument(SERVICE_NAME),
+ createJUnitParserTask()
+ .description("Resultparser")
+ .resultDirectories("**/test-reports/*.xml, **/target/surefire-reports/*.xml, **/target/failsafe-reports/*.xml")
+ .enabled(true),
+ new InjectVariablesTask()
+ .description("Inject git Tag")
+ .path("git.tag")
+ .namespace("g")
+ .scope(InjectVariablesScope.LOCAL),
+ new VcsTagTask()
+ .description("${bamboo.g.gitTag}")
+ .tagName("${bamboo.g.gitTag}")
+ .defaultRepository())
+ .dockerConfiguration(
+ new DockerConfiguration()
+ .image("nexus.iqser.com:5001/infra/maven:3.6.2-jdk-13-3.0.0")
+ .volume("/etc/maven/settings.xml", "/usr/share/maven/ref/settings.xml")
+ .volume("/var/run/docker.sock", "/var/run/docker.sock")
+ )
+ )
+ )
+ .linkedRepositories("RED / " + SERVICE_NAME)
+
+ .triggers(new BitbucketServerTrigger())
+ .planBranchManagement(new PlanBranchManagement()
+ .createForVcsBranch()
+ .delete(new BranchCleanup()
+ .whenInactiveInRepositoryAfterDays(14))
+ .notificationForCommitters());
+ }
+}
diff --git a/bamboo-specs/src/main/resources/scripts/build-java.sh b/bamboo-specs/src/main/resources/scripts/build-java.sh
new file mode 100755
index 0000000..60dfe78
--- /dev/null
+++ b/bamboo-specs/src/main/resources/scripts/build-java.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -e
+
+SERVICE_NAME=$1
+
+if [[ "${bamboo_version_tag}" = "dev" ]]
+then
+ ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
+ --no-transfer-progress \
+ clean install \
+ -Djava.security.egd=file:/dev/./urandomelse
+else
+ ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
+ --no-transfer-progress \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
+ versions:set \
+ -DnewVersion=${bamboo_version_tag}
+ ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
+ --no-transfer-progress \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
+ versions:set \
+ -DnewVersion=${bamboo_version_tag}
+ ${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-v1/pom.xml \
+ --no-transfer-progress \
+ clean deploy \
+ -e \
+ -DdeployAtEnd=true \
+ -Dmaven.wagon.http.ssl.insecure=true \
+ -Dmaven.wagon.http.ssl.allowall=true \
+ -Dmaven.wagon.http.ssl.ignore.validity.dates=true \
+ -DaltDeploymentRepository=iqser_release::default::https://nexus.iqser.com/repository/red-platform-releases
+fi
+
+${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
+ --no-transfer-progress \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
+ package
+
+${bamboo_capability_system_builder_mvn3_Maven_3}/bin/mvn \
+ --no-transfer-progress \
+ -f ${bamboo_build_working_directory}/$SERVICE_NAME-image-v1/pom.xml \
+ docker:push
+
+if [[ "${bamboo_version_tag}" = "dev" ]]
+then
+ echo "gitTag=${bamboo_planRepository_1_branch}_${bamboo_buildNumber}" > git.tag
+else
+ echo "gitTag=${bamboo_version_tag}" > git.tag
+fi
diff --git a/bamboo-specs/src/test/java/buildjob/PlanSpecTest.java b/bamboo-specs/src/test/java/buildjob/PlanSpecTest.java
new file mode 100644
index 0000000..d09a7f1
--- /dev/null
+++ b/bamboo-specs/src/test/java/buildjob/PlanSpecTest.java
@@ -0,0 +1,17 @@
+package buildjob;
+
+
+import org.junit.Test;
+
+import com.atlassian.bamboo.specs.api.builders.plan.Plan;
+import com.atlassian.bamboo.specs.api.exceptions.PropertiesValidationException;
+import com.atlassian.bamboo.specs.api.util.EntityPropertiesBuilders;
+
+public class PlanSpecTest {
+ @Test
+ public void checkYourPlanOffline() throws PropertiesValidationException {
+ Plan plan = new PlanSpec().createPlan();
+
+ EntityPropertiesBuilders.build(plan);
+ }
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..be5d1bc
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,21 @@
+
+
+
+ 4.0.0
+
+ search-service
+ com.iqser.red.service
+ 1.0-SNAPSHOT
+
+
+ pom
+
+
+ bamboo-specs
+ search-service-v1
+ search-service-image-v1
+
+
+
\ No newline at end of file
diff --git a/search-service-image-v1/pom.xml b/search-service-image-v1/pom.xml
new file mode 100644
index 0000000..6999996
--- /dev/null
+++ b/search-service-image-v1/pom.xml
@@ -0,0 +1,97 @@
+
+
+
+ com.iqser.red
+ platform-docker-dependency
+ 1.0.0
+
+ 4.0.0
+
+ search-service-image-v1
+ com.iqser.red.service
+ 1.0-SNAPSHOT
+ pom
+
+
+
+ search-service-server-v1
+ ${service.server}.jar
+ false
+ ${docker.image.prefix}/${service.server}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+
+
+ io.fabric8
+ docker-maven-plugin
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ download-platform-jar
+ prepare-package
+
+ copy
+
+
+
+
+ ${project.groupId}
+ ${service.server}
+ ${project.version}
+ jar
+ true
+ ${platform.jar}
+
+
+ ${docker.build.directory}
+
+
+
+
+
+ io.fabric8
+ docker-maven-plugin
+
+
+
+ ${docker.image.name}
+
+ ${docker.build.directory}
+
+ ${platform.jar}
+
+
+ ${docker.image.version}
+ latest
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/search-service-image-v1/src/main/docker/Dockerfile b/search-service-image-v1/src/main/docker/Dockerfile
new file mode 100644
index 0000000..3ab5072
--- /dev/null
+++ b/search-service-image-v1/src/main/docker/Dockerfile
@@ -0,0 +1,18 @@
+FROM red/base-image:1.0.0
+
+ARG PLATFORM_JAR
+
+ENV PLATFORM_JAR ${PLATFORM_JAR}
+
+ENV USES_ELASTICSEARCH false
+
+COPY ["${PLATFORM_JAR}", "/"]
+
+RUN apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ wget cabextract xfonts-utils fonts-liberation \
+ && rm -rf /var/lib/apt/lists/*
+
+RUN curl http://ftp.br.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.7_all.deb -o /tmp/ttf-mscorefonts-installer_3.7_all.deb \
+ && dpkg -i /tmp/ttf-mscorefonts-installer_3.7_all.deb \
+ && rm /tmp/ttf-mscorefonts-installer_3.7_all.deb \
diff --git a/search-service-v1/pom.xml b/search-service-v1/pom.xml
new file mode 100644
index 0000000..20b2cbf
--- /dev/null
+++ b/search-service-v1/pom.xml
@@ -0,0 +1,39 @@
+
+
+
+ platform-dependency
+ com.iqser.red
+ 1.1.2
+
+ 4.0.0
+
+ search-service-v1
+ com.iqser.red.service
+ 1.0-SNAPSHOT
+
+
+ pom
+
+
+ search-service-api-v1
+ search-service-server-v1
+
+
+
+
+
+
+ com.iqser.red
+ platform-commons-dependency
+ 1.3.1
+ import
+ pom
+
+
+
+
+
+
+
diff --git a/search-service-v1/search-service-api-v1/pom.xml b/search-service-v1/search-service-api-v1/pom.xml
new file mode 100644
index 0000000..a72ff27
--- /dev/null
+++ b/search-service-v1/search-service-api-v1/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ search-service-v1
+ com.iqser.red.service
+ 1.0-SNAPSHOT
+
+
+ search-service-api-v1
+
+
+
+ org.springframework
+ spring-web
+ true
+
+
+
diff --git a/search-service-v1/search-service-server-v1/pom.xml b/search-service-v1/search-service-server-v1/pom.xml
new file mode 100644
index 0000000..16b24d6
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/pom.xml
@@ -0,0 +1,127 @@
+
+
+ 4.0.0
+
+ search-service-v1
+ com.iqser.red.service
+ 1.0-SNAPSHOT
+
+
+ search-service-server-v1
+
+
+
+ com.iqser.red.commons
+ storage-commons
+
+
+ com.iqser.red.service
+ search-service-api-v1
+ ${project.version}
+
+
+
+
+ com.iqser.red.commons
+ spring-commons
+
+
+ com.iqser.red.commons
+ logging-commons
+
+
+ com.iqser.red.commons
+ metric-commons
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+ 2.3.1.RELEASE
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ com.iqser.red.commons
+ test-commons
+ test
+
+
+ org.springframework.amqp
+ spring-rabbit-test
+ 2.3.1
+ test
+
+
+
+
+
+
+
+ pl.project13.maven
+ git-commit-id-plugin
+
+
+
+ revision
+
+
+ true
+
+ true
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+ original-jar
+
+ jar
+
+
+ original
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+ true
+
+
+
+
+
+
+
+
diff --git a/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/Application.java b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/Application.java
new file mode 100644
index 0000000..73571d1
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/Application.java
@@ -0,0 +1,20 @@
+package com.iqser.red.service.search.v1.server;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+import org.springframework.context.annotation.Import;
+
+import com.iqser.red.commons.spring.DefaultWebMvcConfiguration;
+
+@Import({DefaultWebMvcConfiguration.class})
+@SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
+public class Application {
+
+ public static void main(String[] args) {
+
+ SpringApplication.run(Application.class, args);
+ }
+
+}
diff --git a/search-service-v1/search-service-server-v1/src/main/resources/application.yml b/search-service-v1/search-service-server-v1/src/main/resources/application.yml
new file mode 100644
index 0000000..aba19c0
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/src/main/resources/application.yml
@@ -0,0 +1,38 @@
+info:
+ description: Search Service Server V1
+
+server:
+ port: 8080
+
+spring:
+ profiles:
+ active: kubernetes
+ rabbitmq:
+ host: ${RABBITMQ_HOST:localhost}
+ port: ${RABBITMQ_PORT:5672}
+ username: ${RABBITMQ_USERNAME:user}
+ password: ${RABBITMQ_PASSWORD:rabbitmq}
+ listener:
+ simple:
+ acknowledge-mode: AUTO
+ concurrency: 2
+ retry:
+ enabled: true
+ max-attempts: 3
+ max-interval: 15000
+ prefetch: 1
+
+management:
+ endpoint:
+ metrics.enabled: ${monitoring.enabled:false}
+ prometheus.enabled: ${monitoring.enabled:false}
+ health.enabled: true
+ endpoints.web.exposure.include: prometheus, health
+ metrics.export.prometheus.enabled: ${monitoring.enabled:false}
+
+
+storage:
+ signer-type: 'AWSS3V4SignerType'
+ bucket-name: 'redaction'
+ region: 'us-east-1'
+ endpoint: 'https://s3.amazonaws.com'
diff --git a/search-service-v1/search-service-server-v1/src/main/resources/banner.txt b/search-service-v1/search-service-server-v1/src/main/resources/banner.txt
new file mode 100644
index 0000000..381de5f
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/src/main/resources/banner.txt
@@ -0,0 +1,3 @@
+===================================
+ Search Service Server V1
+===================================
diff --git a/search-service-v1/search-service-server-v1/src/main/resources/bootstrap.yml b/search-service-v1/search-service-server-v1/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..1b89efb
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/src/main/resources/bootstrap.yml
@@ -0,0 +1,7 @@
+spring:
+ application:
+ name: search-service-v1
+
+management.endpoints:
+ web.base-path: /
+ enabled-by-default: false
diff --git a/search-service-v1/search-service-server-v1/src/test/java/com/iqser/red/service/search/v1/server/DummyTest.java b/search-service-v1/search-service-server-v1/src/test/java/com/iqser/red/service/search/v1/server/DummyTest.java
new file mode 100644
index 0000000..870d188
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/src/test/java/com/iqser/red/service/search/v1/server/DummyTest.java
@@ -0,0 +1,13 @@
+package com.iqser.red.service.search.v1.server;
+
+import org.junit.Test;
+
+public class DummyTest {
+
+ @Test
+ public void testIt(){
+
+ System.out.println("Hello World!");
+ }
+
+}
diff --git a/search-service-v1/search-service-server-v1/src/test/resources/application.yml b/search-service-v1/search-service-server-v1/src/test/resources/application.yml
new file mode 100644
index 0000000..c4cd8a6
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/src/test/resources/application.yml
@@ -0,0 +1,7 @@
+ribbon:
+ ConnectTimeout: 600000
+ ReadTimeout: 600000
+
+spring:
+ main:
+ allow-bean-definition-overriding: true
\ No newline at end of file
diff --git a/search-service-v1/search-service-server-v1/src/test/resources/bootstrap.yml b/search-service-v1/search-service-server-v1/src/test/resources/bootstrap.yml
new file mode 100644
index 0000000..56e5ad2
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/src/test/resources/bootstrap.yml
@@ -0,0 +1,3 @@
+spring:
+ application:
+ name: search-service-v1
diff --git a/search-service-v1/search-service-server-v1/src/test/resources/log4j2-test.xml b/search-service-v1/search-service-server-v1/src/test/resources/log4j2-test.xml
new file mode 100644
index 0000000..626e519
--- /dev/null
+++ b/search-service-v1/search-service-server-v1/src/test/resources/log4j2-test.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+