From a0e4054ffd680e894710ed46470ae665e651522b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Wed, 30 Jun 2021 13:25:07 +0200 Subject: [PATCH] RED-809: Added project structure --- bamboo-specs/pom.xml | 37 +++++ .../src/main/java/buildjob/PlanSpec.java | 122 +++++++++++++++++ .../src/main/resources/scripts/build-java.sh | 51 +++++++ .../src/test/java/buildjob/PlanSpecTest.java | 17 +++ pom.xml | 21 +++ search-service-image-v1/pom.xml | 97 +++++++++++++ .../src/main/docker/Dockerfile | 18 +++ search-service-v1/pom.xml | 39 ++++++ .../search-service-api-v1/pom.xml | 21 +++ .../search-service-server-v1/pom.xml | 127 ++++++++++++++++++ .../service/search/v1/server/Application.java | 20 +++ .../src/main/resources/application.yml | 38 ++++++ .../src/main/resources/banner.txt | 3 + .../src/main/resources/bootstrap.yml | 7 + .../service/search/v1/server/DummyTest.java | 13 ++ .../src/test/resources/application.yml | 7 + .../src/test/resources/bootstrap.yml | 3 + .../src/test/resources/log4j2-test.xml | 16 +++ 18 files changed, 657 insertions(+) create mode 100644 bamboo-specs/pom.xml create mode 100644 bamboo-specs/src/main/java/buildjob/PlanSpec.java create mode 100755 bamboo-specs/src/main/resources/scripts/build-java.sh create mode 100644 bamboo-specs/src/test/java/buildjob/PlanSpecTest.java create mode 100644 pom.xml create mode 100644 search-service-image-v1/pom.xml create mode 100644 search-service-image-v1/src/main/docker/Dockerfile create mode 100644 search-service-v1/pom.xml create mode 100644 search-service-v1/search-service-api-v1/pom.xml create mode 100644 search-service-v1/search-service-server-v1/pom.xml create mode 100644 search-service-v1/search-service-server-v1/src/main/java/com/iqser/red/service/search/v1/server/Application.java create mode 100644 search-service-v1/search-service-server-v1/src/main/resources/application.yml create mode 100644 search-service-v1/search-service-server-v1/src/main/resources/banner.txt create mode 100644 search-service-v1/search-service-server-v1/src/main/resources/bootstrap.yml create mode 100644 search-service-v1/search-service-server-v1/src/test/java/com/iqser/red/service/search/v1/server/DummyTest.java create mode 100644 search-service-v1/search-service-server-v1/src/test/resources/application.yml create mode 100644 search-service-v1/search-service-server-v1/src/test/resources/bootstrap.yml create mode 100644 search-service-v1/search-service-server-v1/src/test/resources/log4j2-test.xml 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 @@ + + + + + + + + + + + + + + + +