diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 95a9793bcf19dc4dfcea4d7e9060ff20c2965720..54b44d2d60556053414c64fdb810ce8451c3ab37 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -51,11 +51,11 @@ test-helm: .get-version: before_script: - - export PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout $MAVEN_CLI_OPTS) + - export PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout $MAVEN_CLI_OPTS | cut -d'-' -f1) - export PROJECT_ARTIFACTID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout $MAVEN_CLI_OPTS) - export NEXUS_IMAGE_PREFIX="docker.ozg-sh.de/${PROJECT_ARTIFACTID}" - - export MERGE_REQUEST_TAG="MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}" - - export SNAPSHOT_TAG="${CI_COMMIT_BRANCH}-${PROJECT_VERSION}" + - export MERGE_REQUEST_TAG="${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID}" + - export SNAPSHOT_TAG="${PROJECT_VERSION}-${CI_COMMIT_BRANCH}" .publish-helm-chart: before_script: @@ -169,7 +169,7 @@ push-release-image-gitlab: extends: .get-version script: - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS - - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:release-${CI_COMMIT_TAG},${CI_REGISTRY_IMAGE}:latest" + - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG},${CI_REGISTRY_IMAGE}:latest" - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS rules: - if: $CI_COMMIT_TAG @@ -179,7 +179,7 @@ push-release-image-nexus: extends: .get-version script: - mvn versions:set -DnewVersion=${CI_COMMIT_TAG} $MAVEN_CLI_OPTS - - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:release-${CI_COMMIT_TAG},${NEXUS_IMAGE_PREFIX}:latest" + - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${CI_COMMIT_TAG},${NEXUS_IMAGE_PREFIX}:latest" - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS rules: - if: $CI_COMMIT_TAG @@ -192,7 +192,7 @@ push-release-helm-nexus: - !reference [.get-version, before_script] - !reference [.publish-helm-chart, before_script] script: - - export HELM_CHART_VERSION=${PROJECT_VERSION} + - export HELM_CHART_VERSION=${CI_COMMIT_TAG} - !reference [.publish-helm-chart, script] rules: - if: $CI_COMMIT_TAG diff --git a/pom.xml b/pom.xml index 8f260eea03c75c71a1502c4cd175d8c70e3b4446..a2099a449fcecc6f725476bcae6401fa98072896 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ <groupId>de.ozgcloud.eingang</groupId> <artifactId>xta-adapter</artifactId> - <version>2.16.0-SNAPSHOT</version> + <version>2.17.0-SNAPSHOT</version> <name>XTA-Adapter</name> <description>Eingangs Adapter - XTA</description> @@ -139,7 +139,7 @@ <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> - <mainClass>de.ozgcloud.eingang.Application</mainClass> + <mainClass>de.ozgcloud.eingang.xta.XtaApplication</mainClass> </configuration> <executions> <execution> diff --git a/src/main/helm/templates/_helpers.tpl b/src/main/helm/templates/_helpers.tpl index 5f233e14c2eca1effd045608f7549e390bef9c99..e2be5fd71b5d365410fa3d1c37d0967e1efc4a8a 100644 --- a/src/main/helm/templates/_helpers.tpl +++ b/src/main/helm/templates/_helpers.tpl @@ -1,3 +1,27 @@ +# +# Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den +# Ministerpräsidenten des Landes Schleswig-Holstein +# Staatskanzlei +# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung +# +# Lizenziert unter der EUPL, Version 1.2 oder - sobald +# diese von der Europäischen Kommission genehmigt wurden - +# Folgeversionen der EUPL ("Lizenz"); +# Sie dürfen dieses Werk ausschließlich gemäß +# dieser Lizenz nutzen. +# Eine Kopie der Lizenz finden Sie hier: +# +# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +# +# Sofern nicht durch anwendbare Rechtsvorschriften +# gefordert oder in schriftlicher Form vereinbart, wird +# die unter der Lizenz verbreitete Software "so wie sie +# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - +# ausdrücklich oder stillschweigend - verbreitet. +# Die sprachspezifischen Genehmigungen und Beschränkungen +# unter der Lizenz sind dem Lizenztext zu entnehmen. +# + {{/* vim: set filetype=mustache: */}} {{/* error check 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec) */}} diff --git a/src/main/helm/templates/xta_adapter_cronjob.yaml b/src/main/helm/templates/xta_adapter_cronjob.yaml index 761959137f507e67d20c246ec86bc7393c52a75d..c6113194451c9bd8b1bec6ead91957fbb1329404 100644 --- a/src/main/helm/templates/xta_adapter_cronjob.yaml +++ b/src/main/helm/templates/xta_adapter_cronjob.yaml @@ -66,7 +66,7 @@ spec: - name: ozgcloud_xta_identifiers value: {{ (.Values.xta).identifiers | join "," | quote }} - name: ozgcloud_xta_keystore_file - value: "keystore/xta-keystore.p12" + value: "file:/workspace/keystore/xta-keystore.p12" - name: ozgcloud_xta_keystore_password valueFrom: secretKeyRef: diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaApplication.java b/src/main/java/de/ozgcloud/eingang/xta/XtaApplication.java new file mode 100644 index 0000000000000000000000000000000000000000..063c0cc038a68fa89fa2ba64a7bc893f5e256748 --- /dev/null +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaApplication.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.eingang.xta; + +import java.util.TimeZone; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; + +import de.ozgcloud.eingang.Application; + +@SpringBootApplication(scanBasePackages = { "de.ozgcloud" }) +@EnableScheduling +public class XtaApplication extends Application { + + public static void main(String[] args) { + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + var appContext = SpringApplication.run(XtaApplication.class, args); + SpringApplication.exit(appContext); + } +} diff --git a/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java b/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java index 4d21e58b37db2c415f443a10e041d0ab97667b33..7f095f771c99194dca793da1c9aca0d934f74df2 100644 --- a/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java +++ b/src/main/java/de/ozgcloud/eingang/xta/XtaRunner.java @@ -25,7 +25,6 @@ package de.ozgcloud.eingang.xta; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; -import org.springframework.context.annotation.Profile; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; @@ -34,7 +33,6 @@ import de.ozgcloud.eingang.semantik.SemantikAdapter; import lombok.NonNull; import lombok.extern.log4j.Log4j2; -@Profile({ "!itcase" }) @Log4j2 @Component class XtaRunner implements ApplicationListener<ContextRefreshedEvent> { @@ -48,6 +46,7 @@ class XtaRunner implements ApplicationListener<ContextRefreshedEvent> { public void onApplicationEvent(ContextRefreshedEvent event) { LOG.info("Fetching XTA Messages"); runGetXtaMessages(); + // shutdownService.shutdown(); } void runGetXtaMessages() { diff --git a/src/test/helm/xta_adapter_cronjob_env_test.yaml b/src/test/helm/xta_adapter_cronjob_env_test.yaml index e247e20d6703fa518cf1eb74616e5447f4fd8a2e..789f902c2741e17b685761fc902496ce0c977586 100644 --- a/src/test/helm/xta_adapter_cronjob_env_test.yaml +++ b/src/test/helm/xta_adapter_cronjob_env_test.yaml @@ -78,7 +78,7 @@ tests: path: spec.jobTemplate.spec.template.spec.containers[0].env content: name: ozgcloud_xta_keystore_file - value: "keystore/xta-keystore.p12" + value: "file:/workspace/keystore/xta-keystore.p12" - contains: path: spec.jobTemplate.spec.template.spec.containers[0].env content: diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java b/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java index 7a7760142b49480c3bdc53d1ee049ec04fce244f..cd81ff838263803704d775fe39f5cc0cc582fcde 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaApplicationTest.java @@ -23,21 +23,19 @@ */ package de.ozgcloud.eingang.xta; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; -import de.ozgcloud.eingang.Application; - @ActiveProfiles({ "local", "itcase" }) -@SpringBootTest(classes = Application.class) +@SpringBootTest(classes = XtaApplication.class) class XtaApplicationTest { @Test void startup() { - // should start without exception; + // should start without exception assertTrue(true); } diff --git a/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java b/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java index ad69220224b0e2dbf0d414344bcc8133c376cf7d..92b71131a29054468da0621fce5aeb5a5bae22da 100644 --- a/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java +++ b/src/test/java/de/ozgcloud/eingang/xta/XtaITCase.java @@ -44,8 +44,6 @@ import org.mockito.Captor; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.context.annotation.Bean; import org.springframework.test.context.ActiveProfiles; @@ -58,6 +56,8 @@ import de.ozgcloud.vorgang.grpc.binaryFile.BinaryFileServiceGrpc.BinaryFileServi import de.ozgcloud.vorgang.vorgang.GrpcEingang; import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import io.grpc.Channel; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; @SpringBootTest(classes = { Application.class, @@ -66,9 +66,9 @@ import io.grpc.Channel; @ActiveProfiles({ "itcase" }) class XtaITCase { - @SpyBean + @MockitoSpyBean private VorgangRemoteService vorgangRemoteService; - @MockBean + @MockitoBean private VorgangManagerServerResolver resolver; @Mock @@ -83,7 +83,7 @@ class XtaITCase { @Mock private Channel channel; - @MockBean + @MockitoBean private XtaRemoteService xtaRemoteService; @Captor