From ffe5e256efe541ad92fe18c4f82ccd914fc3af44 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Fri, 28 Jun 2024 16:15:36 +0100 Subject: [PATCH 01/43] Remove java-library plugin This isn't a java-library, and adding this makes Graal generate a dynamic library instead of an executable --- server/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/server/build.gradle b/server/build.gradle index c044873ba2..9c84e03749 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -1,7 +1,6 @@ import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform plugins { - id 'java-library' id 'maven-publish' id("com.github.johnrengelman.shadow") version "8.1.1" id("io.micronaut.application") version "4.4.0" From 5fd6fd5bb20e63125c0be10150fc1e842cb92cfd Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Fri, 28 Jun 2024 16:18:41 +0100 Subject: [PATCH 02/43] Update the google cloud postgres socket factory lib See: https://github.com/GoogleCloudPlatform/cloud-sql-jdbc-socket-factory/issues/1979 --- server/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/build.gradle b/server/build.gradle index 9c84e03749..50f2c3d18a 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -88,7 +88,7 @@ dependencies { implementation "com.google.apis:google-api-services-gmail:v1-rev20240422-2.0.0" implementation "com.google.apis:google-api-services-admin-directory:directory_v1-rev20240509-2.0.0" - implementation 'com.google.cloud.sql:postgres-socket-factory:1.18.1' + implementation 'com.google.cloud.sql:postgres-socket-factory:1.19.0' implementation("io.micronaut.reactor:micronaut-reactor") implementation("io.micrometer:context-propagation") From 18cf35aa0f9a01a2fbe2e77c042317aaa97cbf0e Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Fri, 28 Jun 2024 16:21:46 +0100 Subject: [PATCH 03/43] Add reflect-config to allow custom deserializer and fix flyway See https://github.com/micronaut-projects/micronaut-flyway/issues/540 for the flyway issue --- .../checkins/reflect-config.json | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json diff --git a/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json b/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json new file mode 100644 index 0000000000..edd360c8c8 --- /dev/null +++ b/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json @@ -0,0 +1,20 @@ +[ + { + "name": "com.objectcomputing.checkins.services.permissions.PermissionSerializer", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true + }, + { + "name": "com.objectcomputing.checkins.services.settings.SettingOptionSerializer", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true + }, + { + "name": "org.flywaydb.database.postgresql.PostgreSQLConfigurationExtension", + "condition": { + "typeReachable": "org.flywaydb.core.internal.plugin.PluginRegister" + }, + "allPublicConstructors": true, + "allPublicMethods": true + } +] \ No newline at end of file From a47b4b086b7f4320adc73b32db87e30136f6e8a2 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Fri, 28 Jun 2024 16:24:00 +0100 Subject: [PATCH 04/43] Name the generated executable and fix migrations for local dev --- server/build.gradle | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/server/build.gradle b/server/build.gradle index 50f2c3d18a..8891eb6126 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -28,6 +28,21 @@ micronaut { } } +graalvmNative { + toolchainDetection = false + binaries { + all { + imageName.set('check-ins') + + // See https://github.com/micronaut-projects/micronaut-core/issues/10771 + buildArgs.add("--initialize-at-build-time=kotlin.coroutines.intrinsics.CoroutineSingletons") + + // This lets Graal see the migrations for local dev TODO: We need to be able to configure this to not add db/dev in prod + buildArgs.add("-Dflyway.locations=db/common,db/dev") + } + } +} + configurations { yarnBuildElements { canBeResolved = true From 29bf75e33bc701fbe1ace63bfc389d61a52c72c4 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Fri, 28 Jun 2024 16:48:01 +0100 Subject: [PATCH 05/43] Add section to ignore dev migration on CI --- server/build.gradle | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/server/build.gradle b/server/build.gradle index 8891eb6126..f644a6e072 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -37,8 +37,13 @@ graalvmNative { // See https://github.com/micronaut-projects/micronaut-core/issues/10771 buildArgs.add("--initialize-at-build-time=kotlin.coroutines.intrinsics.CoroutineSingletons") - // This lets Graal see the migrations for local dev TODO: We need to be able to configure this to not add db/dev in prod - buildArgs.add("-Dflyway.locations=db/common,db/dev") + // TODO: We need to set the CI environment variable in the Github Actions workflow + def isCI = System.getenv("CI") != null + def migrationLocations = isCI ? "db/common" : "db/common,db/dev" + logger.lifecycle("ℹ️ Building with the migrations from: $migrationLocations") + + // This lets Graal see the migrations for local dev + buildArgs.add("-Dflyway.locations=$migrationLocations") } } } From 163c20d34521f43a497ad26c2e735e74db22f6b5 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Fri, 28 Jun 2024 17:06:16 +0100 Subject: [PATCH 06/43] Add Github action for nativeCompile on CI --- .../workflows/gradle-build-feature-native.yml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/gradle-build-feature-native.yml diff --git a/.github/workflows/gradle-build-feature-native.yml b/.github/workflows/gradle-build-feature-native.yml new file mode 100644 index 0000000000..0fe6a74e24 --- /dev/null +++ b/.github/workflows/gradle-build-feature-native.yml @@ -0,0 +1,35 @@ +name: Gradle Build - Feature / Bug +on: + push: + branches: + - 'feature-**/*' + - 'bugfix-**/*' + - 'chore-**/*' + - 'doc-**/*' + - 'hotfix-**/*' + - 'dependabot/**/*' +jobs: + build: + runs-on: ubuntu-latest + env: + CI: true + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Node LTS + uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Set up GraalVM 21 + uses: graalvm/setup-graalvm@v1.1.8 + with: + distribution: 'graalvm' + java-version: '21' + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b + - name: Build native image + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: nativeCompile From fad6eeb10ae90041ec6dfe14c7d6a794a6bec3b7 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Fri, 28 Jun 2024 17:06:58 +0100 Subject: [PATCH 07/43] Rename action --- .github/workflows/gradle-build-feature-native.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle-build-feature-native.yml b/.github/workflows/gradle-build-feature-native.yml index 0fe6a74e24..849ba171dc 100644 --- a/.github/workflows/gradle-build-feature-native.yml +++ b/.github/workflows/gradle-build-feature-native.yml @@ -1,4 +1,4 @@ -name: Gradle Build - Feature / Bug +name: Gradle Build Native Image - Feature / Bug on: push: branches: From 2150f8c5e1a24727d2ae869ed5f73d83962ed7fb Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Mon, 1 Jul 2024 14:17:34 +0100 Subject: [PATCH 08/43] Better comments in build --- server/build.gradle | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/build.gradle b/server/build.gradle index 73a43a7fc1..58452cd22e 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -37,12 +37,13 @@ graalvmNative { // See https://github.com/micronaut-projects/micronaut-core/issues/10771 buildArgs.add("--initialize-at-build-time=kotlin.coroutines.intrinsics.CoroutineSingletons") - // TODO: We need to set the CI environment variable in the Github Actions workflow + // When we are building on CI, we do not want to include the dev migrations. def isCI = System.getenv("CI") != null def migrationLocations = isCI ? "db/common" : "db/common,db/dev" logger.lifecycle("ℹ️ Building with the migrations from: $migrationLocations") - // This lets Graal see the migrations for local dev + // Graal cannot scan for migrations at run-time, so we use this to specify the locations. + // See https://micronaut-projects.github.io/micronaut-flyway/latest/guide/#graalvm buildArgs.add("-Dflyway.locations=$migrationLocations") } } From 2b40be6103bef2544f72e42925a60c7f6c2695ec Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Mon, 1 Jul 2024 14:18:43 +0100 Subject: [PATCH 09/43] Add reflect info for docker runtime info when testing --- .../checkins-test/reflect-config.json | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 server/src/test/resources/META-INF/native-image/com.objectcomputing/checkins-test/reflect-config.json diff --git a/server/src/test/resources/META-INF/native-image/com.objectcomputing/checkins-test/reflect-config.json b/server/src/test/resources/META-INF/native-image/com.objectcomputing/checkins-test/reflect-config.json new file mode 100644 index 0000000000..fadf978ec5 --- /dev/null +++ b/server/src/test/resources/META-INF/native-image/com.objectcomputing/checkins-test/reflect-config.json @@ -0,0 +1,22 @@ +[ + { + "name": "com.github.dockerjava.api.model.RuntimeInfo", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "", + "parameterTypes": [ + + ] + }, + { + "name": "setPath", + "parameterTypes": [ + "java.lang.String" + ] + } + ] + } +] \ No newline at end of file From 8f0cd0cbbd6195460e161b0644d4f44a52599d0c Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Mon, 1 Jul 2024 14:19:00 +0100 Subject: [PATCH 10/43] add deserializer and jsonerror --- .../checkins/reflect-config.json | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json b/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json index edd360c8c8..4cf0c95cd4 100644 --- a/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json +++ b/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json @@ -9,6 +9,11 @@ "allDeclaredConstructors" : true, "allPublicConstructors" : true }, + { + "name": "com.objectcomputing.checkins.services.settings.SettingOptionDeserializer", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true + }, { "name": "org.flywaydb.database.postgresql.PostgreSQLConfigurationExtension", "condition": { @@ -16,5 +21,25 @@ }, "allPublicConstructors": true, "allPublicMethods": true + }, + { + "name": "io.micronaut.http.hateoas.JsonError", + "queryAllDeclaredMethods": true, + "allDeclaredFields": true, + "queryAllDeclaredConstructors": true, + "methods": [ + { + "name": "logref", + "parameterTypes": [ + "java.lang.String" + ] + }, + { + "name": "path", + "parameterTypes": [ + "java.lang.String" + ] + } + ] } ] \ No newline at end of file From f7dbe56d99d82eb4af0ca9bdb53525fd8958ed4e Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Mon, 1 Jul 2024 14:19:20 +0100 Subject: [PATCH 11/43] This needs to be public when mocking with the GraalVM --- .../services/memberprofile/memberphoto/GooglePhotoAccessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/GooglePhotoAccessor.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/GooglePhotoAccessor.java index f610582aeb..c2a74f6c8b 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/GooglePhotoAccessor.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/GooglePhotoAccessor.java @@ -3,7 +3,7 @@ /** * Interface to access Google Photo data, and allow for simpler mocking in tests */ -interface GooglePhotoAccessor { +public interface GooglePhotoAccessor { byte[] getPhotoData(String workEmail); } From d8916fb202ae81a25f84a7342946ebdbef944269 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Tue, 2 Jul 2024 09:48:11 +0100 Subject: [PATCH 12/43] Add missing introspection (for Graal) --- .../services/feedback/suggestions/FeedbackSuggestionDTO.java | 2 ++ .../question_and_answer/QuestionAndAnswerServices.java | 2 ++ .../retentionreport/RetentionReportResponseDTO.java | 2 ++ 3 files changed, 6 insertions(+) diff --git a/server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionDTO.java index be7e9f603a..0cde7db135 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/feedback/suggestions/FeedbackSuggestionDTO.java @@ -1,5 +1,6 @@ package com.objectcomputing.checkins.services.feedback.suggestions; +import io.micronaut.core.annotation.Introspected; import io.micronaut.core.annotation.Nullable; import lombok.AllArgsConstructor; import lombok.Data; @@ -8,6 +9,7 @@ import java.util.UUID; @Data +@Introspected @NoArgsConstructor @AllArgsConstructor public class FeedbackSuggestionDTO { diff --git a/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/question_and_answer/QuestionAndAnswerServices.java b/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/question_and_answer/QuestionAndAnswerServices.java index 8e6badf7fc..18322d5120 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/question_and_answer/QuestionAndAnswerServices.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/question_and_answer/QuestionAndAnswerServices.java @@ -3,6 +3,7 @@ import com.objectcomputing.checkins.services.feedback_answer.FeedbackAnswer; import com.objectcomputing.checkins.services.feedback_request.FeedbackRequest; import com.objectcomputing.checkins.services.feedback_template.template_question.TemplateQuestion; +import io.micronaut.core.annotation.Introspected; import io.micronaut.core.annotation.Nullable; import lombok.Getter; import lombok.Setter; @@ -14,6 +15,7 @@ public interface QuestionAndAnswerServices { @Setter @Getter + @Introspected class Tuple { private TemplateQuestion question; private FeedbackAnswer answer; diff --git a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/retentionreport/RetentionReportResponseDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/retentionreport/RetentionReportResponseDTO.java index dc61c4bce0..27cd6be7ca 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/retentionreport/RetentionReportResponseDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/memberprofile/retentionreport/RetentionReportResponseDTO.java @@ -1,5 +1,6 @@ package com.objectcomputing.checkins.services.memberprofile.retentionreport; +import io.micronaut.core.annotation.Introspected; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; @@ -8,6 +9,7 @@ @Setter @Getter +@Introspected public class RetentionReportResponseDTO { @Schema(description = "Total retention rate for specified period") From d6a61877671cbcdc50b823f717ceea6c5fc3f733 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Tue, 2 Jul 2024 09:48:47 +0100 Subject: [PATCH 13/43] CoreMatchers.hasItems doesn't play well with native compilation --- .../security/CheckinsOpenIdAuthenticationMapperTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/src/test/java/com/objectcomputing/checkins/security/CheckinsOpenIdAuthenticationMapperTest.java b/server/src/test/java/com/objectcomputing/checkins/security/CheckinsOpenIdAuthenticationMapperTest.java index bc4329a95b..a51ec9a4fa 100644 --- a/server/src/test/java/com/objectcomputing/checkins/security/CheckinsOpenIdAuthenticationMapperTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/security/CheckinsOpenIdAuthenticationMapperTest.java @@ -18,7 +18,9 @@ import org.junit.jupiter.api.Test; import reactor.test.StepVerifier; +import java.util.HashSet; import java.util.List; +import java.util.Set; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.*; @@ -58,7 +60,7 @@ void testCreateAuthenticationResponse() { Authentication authentication = auth.getAuthentication().orElse(null); assertNotNull(authentication); assertEquals(MemberProfileUtils.getFullName(memberProfile), authentication.getName()); - assertThat(authentication.getRoles(), CoreMatchers.hasItems(RoleType.Constants.PDL_ROLE, RoleType.Constants.ADMIN_ROLE)); + assertEquals(Set.of(RoleType.Constants.PDL_ROLE, RoleType.Constants.ADMIN_ROLE), new HashSet<>(authentication.getRoles())); assertTrue(roles.containsAll(authentication.getRoles())); assertEquals(roles.size(), authentication.getRoles().size()); }).verifyComplete(); From cce3cbf30f89a7d6a97e4e7362715f94b1a00226 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Tue, 2 Jul 2024 10:44:20 +0100 Subject: [PATCH 14/43] Disable tests that use Mockito and fail when run natively --- .../security/SecurityRuleResultTest.java | 4 +++ .../CheckinDocumentServiceImplTest.java | 20 +++++++++++-- .../services/email/EmailControllerTest.java | 20 +++++++++---- .../FeedbackRequestControllerTest.java | 21 +++++++++++--- .../feedback_request/FeedbackRequestTest.java | 17 +++++++++-- .../services/file/FileControllerTest.java | 18 ++++++++++-- .../services/file/FileServicesImplTest.java | 4 +++ .../services/guild/GuildControllerTest.java | 24 ++++++++++++--- .../checkins/services/guild/GuildTest.java | 29 +++++++++++++++---- .../member/GuildMemberControllerTest.java | 15 ++++++++-- .../MemberSkillServiceImplTest.java | 5 +++- .../SkillsReportServicesImplTest.java | 4 +++ .../memberprofile/MemberProfileTest.java | 22 ++++++++++---- .../MemberProfileReportServicesImplTest.java | 9 ++++-- .../CurrentUserControllerTest.java | 4 +++ .../CurrentUserServicesImplTest.java | 11 +++++-- .../MemberPhotoControllerTest.java | 4 +++ .../MemberPhotoServiceImplTest.java | 4 +++ .../pulseresponse/PulseResponseTest.java | 20 +++++++++++-- .../CheckServicesImplTest.java | 4 +++ .../reviews/ReviewPeriodControllerTest.java | 4 +++ .../SkillRecordServicesImplTest.java | 4 +++ 22 files changed, 225 insertions(+), 42 deletions(-) diff --git a/server/src/test/java/com/objectcomputing/checkins/security/SecurityRuleResultTest.java b/server/src/test/java/com/objectcomputing/checkins/security/SecurityRuleResultTest.java index c6a5e61201..f0e083b8f4 100644 --- a/server/src/test/java/com/objectcomputing/checkins/security/SecurityRuleResultTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/security/SecurityRuleResultTest.java @@ -19,6 +19,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mock; import org.reactivestreams.Publisher; import reactor.test.StepVerifier; @@ -32,6 +33,9 @@ import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.openMocks; +// Disabled in nativeTest, as we get an exception from Mockito +// java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class SecurityRuleResultTest extends TestContainersSuite { private static final List USER_PERMISSIONS = List.of( diff --git a/server/src/test/java/com/objectcomputing/checkins/services/checkindocument/CheckinDocumentServiceImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/checkindocument/CheckinDocumentServiceImplTest.java index 1084f66327..595aaadc9d 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/checkindocument/CheckinDocumentServiceImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/checkindocument/CheckinDocumentServiceImplTest.java @@ -9,6 +9,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -17,9 +18,22 @@ import java.util.Set; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +// Disabled in nativeTest, as we get an exception from Mockito +// => org.graalvm.nativeimage.MissingReflectionRegistrationError: The program tried to reflectively access the proxy class +// inheriting [org.mockito.plugins.MockMaker] without it being registered for runtime reflection +@DisabledInNativeImage class CheckinDocumentServiceImplTest extends TestContainersSuite { @Mock diff --git a/server/src/test/java/com/objectcomputing/checkins/services/email/EmailControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/email/EmailControllerTest.java index 90f1fcbebe..af6b4ee29d 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/email/EmailControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/email/EmailControllerTest.java @@ -13,21 +13,31 @@ import io.micronaut.http.client.HttpClient; import io.micronaut.http.client.annotation.Client; import io.micronaut.http.client.exceptions.HttpClientResponseException; +import jakarta.inject.Inject; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mock; import org.mockito.Mockito; -import jakarta.inject.Inject; - import java.util.HashMap; import java.util.List; import java.util.Map; import static com.objectcomputing.checkins.services.validate.PermissionsValidation.NOT_AUTHORIZED_MSG; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class EmailControllerTest extends TestContainersSuite implements MemberProfileFixture, RoleFixture { @Inject diff --git a/server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestControllerTest.java index ce1baff719..8ca40953a4 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestControllerTest.java @@ -4,7 +4,11 @@ import com.objectcomputing.checkins.notifications.email.EmailSender; import com.objectcomputing.checkins.services.TestContainersSuite; import com.objectcomputing.checkins.services.feedback_template.FeedbackTemplate; -import com.objectcomputing.checkins.services.fixture.*; +import com.objectcomputing.checkins.services.fixture.FeedbackRequestFixture; +import com.objectcomputing.checkins.services.fixture.FeedbackTemplateFixture; +import com.objectcomputing.checkins.services.fixture.MemberProfileFixture; +import com.objectcomputing.checkins.services.fixture.ReviewPeriodFixture; +import com.objectcomputing.checkins.services.fixture.RoleFixture; import com.objectcomputing.checkins.services.memberprofile.MemberProfile; import com.objectcomputing.checkins.services.reviews.ReviewPeriod; import com.objectcomputing.checkins.services.role.RoleType; @@ -21,6 +25,7 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mockito; import java.time.LocalDate; @@ -31,9 +36,17 @@ import static com.objectcomputing.checkins.services.memberprofile.MemberProfileTestUtil.mkMemberProfile; import static com.objectcomputing.checkins.services.validate.PermissionsValidation.NOT_AUTHORIZED_MSG; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; + +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class FeedbackRequestControllerTest extends TestContainersSuite implements MemberProfileFixture, FeedbackTemplateFixture, FeedbackRequestFixture, RoleFixture, ReviewPeriodFixture { @Inject diff --git a/server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestTest.java b/server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestTest.java index 3d30055790..df9d84482f 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestTest.java @@ -12,16 +12,27 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mockito; import java.time.LocalDate; import java.util.Optional; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; - +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class FeedbackRequestTest extends TestContainersSuite { private FeedbackRequestRepository feedbackReqRepository; diff --git a/server/src/test/java/com/objectcomputing/checkins/services/file/FileControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/file/FileControllerTest.java index b62eece9ce..314fa1f6e4 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/file/FileControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/file/FileControllerTest.java @@ -15,6 +15,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import java.io.File; import java.io.FileWriter; @@ -26,9 +27,20 @@ import static com.objectcomputing.checkins.services.role.RoleType.Constants.MEMBER_ROLE; import static io.micronaut.http.MediaType.MULTIPART_FORM_DATA; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class FileControllerTest extends TestContainersSuite { @Inject diff --git a/server/src/test/java/com/objectcomputing/checkins/services/file/FileServicesImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/file/FileServicesImplTest.java index 4a2498aa54..79c4d6769c 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/file/FileServicesImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/file/FileServicesImplTest.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.invocation.InvocationOnMock; @@ -60,6 +61,9 @@ import static org.mockito.Mockito.when; import static org.mockito.MockitoAnnotations.openMocks; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class FileServicesImplTest extends TestContainersSuite { private static File testFile; diff --git a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java index 8dcb461be4..9ee16090f5 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildControllerTest.java @@ -21,17 +21,33 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mock; import org.mockito.Mockito; -import java.util.*; - -import static com.objectcomputing.checkins.services.role.RoleType.Constants.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; + +import static com.objectcomputing.checkins.services.role.RoleType.Constants.ADMIN_ROLE; +import static com.objectcomputing.checkins.services.role.RoleType.Constants.MEMBER_ROLE; +import static com.objectcomputing.checkins.services.role.RoleType.Constants.PDL_ROLE; import static com.objectcomputing.checkins.services.validate.PermissionsValidation.NOT_AUTHORIZED_MSG; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class GuildControllerTest extends TestContainersSuite implements GuildFixture, MemberProfileFixture, RoleFixture, GuildMemberFixture { diff --git a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildTest.java b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildTest.java index 8ccbadc025..23edd60b30 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/guild/GuildTest.java @@ -18,14 +18,33 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mockito; -import java.util.*; - -import static org.junit.jupiter.api.Assertions.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.*; - +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class GuildTest extends TestContainersSuite { @Inject diff --git a/server/src/test/java/com/objectcomputing/checkins/services/guild/member/GuildMemberControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/guild/member/GuildMemberControllerTest.java index 4a70ec57f6..f33625fdd1 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/guild/member/GuildMemberControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/guild/member/GuildMemberControllerTest.java @@ -20,19 +20,30 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mock; import org.mockito.Mockito; -import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; import java.util.stream.Collectors; import static com.objectcomputing.checkins.services.role.RoleType.Constants.ADMIN_ROLE; import static com.objectcomputing.checkins.services.role.RoleType.Constants.MEMBER_ROLE; import static com.objectcomputing.checkins.services.validate.PermissionsValidation.NOT_AUTHORIZED_MSG; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class GuildMemberControllerTest extends TestContainersSuite implements GuildFixture, MemberProfileFixture, RoleFixture, GuildMemberFixture { @Inject diff --git a/server/src/test/java/com/objectcomputing/checkins/services/member_skill/MemberSkillServiceImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/member_skill/MemberSkillServiceImplTest.java index 2afed973a4..ea5ef37802 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/member_skill/MemberSkillServiceImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/member_skill/MemberSkillServiceImplTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -26,13 +27,15 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class MemberSkillServiceImplTest extends TestContainersSuite { @Mock diff --git a/server/src/test/java/com/objectcomputing/checkins/services/member_skill/skillsreport/SkillsReportServicesImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/member_skill/skillsreport/SkillsReportServicesImplTest.java index ba38018919..a861c67315 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/member_skill/skillsreport/SkillsReportServicesImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/member_skill/skillsreport/SkillsReportServicesImplTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -35,6 +36,9 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class SkillsReportServicesImplTest extends TestContainersSuite { @Mock diff --git a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/MemberProfileTest.java b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/MemberProfileTest.java index fc0ea98799..3a8cae1333 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/MemberProfileTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/MemberProfileTest.java @@ -6,6 +6,7 @@ import com.objectcomputing.checkins.services.checkins.CheckInServices; import com.objectcomputing.checkins.services.member_skill.MemberSkillServices; import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices; +import com.objectcomputing.checkins.services.role.RoleServices; import com.objectcomputing.checkins.services.team.member.TeamMemberServices; import io.micronaut.validation.validator.Validator; import jakarta.inject.Inject; @@ -13,6 +14,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mockito; import java.time.LocalDate; @@ -20,11 +22,21 @@ import java.util.Set; import java.util.UUID; -import com.objectcomputing.checkins.services.role.RoleServices; - -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.contains; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class MemberProfileTest extends TestContainersSuite { @Inject protected Validator validator; diff --git a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/csvreport/MemberProfileReportServicesImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/csvreport/MemberProfileReportServicesImplTest.java index c55fda5aac..244d78cf4e 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/csvreport/MemberProfileReportServicesImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/csvreport/MemberProfileReportServicesImplTest.java @@ -8,6 +8,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; @@ -21,10 +22,14 @@ import java.util.List; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class MemberProfileReportServicesImplTest extends TestContainersSuite { @Mock diff --git a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserControllerTest.java index 96b7f012e2..0f8107236b 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserControllerTest.java @@ -14,6 +14,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -26,6 +27,9 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class CurrentUserControllerTest extends TestContainersSuite implements MemberProfileFixture, RoleFixture { private static final Map userAttributes = new HashMap<>(); diff --git a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserServicesImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserServicesImplTest.java index 7a1753bcd1..47abbcbe6e 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserServicesImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserServicesImplTest.java @@ -10,6 +10,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -18,8 +19,14 @@ import static com.objectcomputing.checkins.services.memberprofile.MemberProfileTestUtil.mkMemberProfile; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.*; - +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class CurrentUserServicesImplTest extends TestContainersSuite { @Mock diff --git a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoControllerTest.java index c85658032a..a16bddb9e5 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoControllerTest.java @@ -9,6 +9,7 @@ import io.micronaut.test.annotation.MockBean; import jakarta.inject.Inject; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import java.util.Base64; @@ -21,6 +22,9 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +// Disabled in nativeTest, as we get an exception from Mockito +// => Message: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class MemberPhotoControllerTest extends TestContainersSuite { @Inject diff --git a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoServiceImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoServiceImplTest.java index ab371dee1b..2108e86bc0 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoServiceImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/memberprofile/memberphoto/MemberPhotoServiceImplTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -26,6 +27,9 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class MemberPhotoServiceImplTest extends TestContainersSuite { @Mock diff --git a/server/src/test/java/com/objectcomputing/checkins/services/pulseresponse/PulseResponseTest.java b/server/src/test/java/com/objectcomputing/checkins/services/pulseresponse/PulseResponseTest.java index 16ed619831..5db07d1f46 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/pulseresponse/PulseResponseTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/pulseresponse/PulseResponseTest.java @@ -15,6 +15,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.Mockito; import java.time.LocalDate; @@ -23,9 +24,22 @@ import java.util.Set; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.contains; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class PulseResponseTest extends TestContainersSuite { @Inject protected Validator validator; diff --git a/server/src/test/java/com/objectcomputing/checkins/services/request_notifications/CheckServicesImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/request_notifications/CheckServicesImplTest.java index 3c3a8a81b2..530d545fd6 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/request_notifications/CheckServicesImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/request_notifications/CheckServicesImplTest.java @@ -7,6 +7,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -19,6 +20,9 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage class CheckServicesImplTest extends TestContainersSuite { @Mock diff --git a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java index 8c9e73bdcb..05504da6aa 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java @@ -20,6 +20,7 @@ import jakarta.inject.Inject; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -45,6 +46,9 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.Mockito +@DisabledInNativeImage class ReviewPeriodControllerTest extends TestContainersSuite implements ReviewAssignmentFixture, ReviewPeriodFixture, MemberProfileFixture, RoleFixture, FeedbackRequestFixture { diff --git a/server/src/test/java/com/objectcomputing/checkins/services/skill_record/SkillRecordServicesImplTest.java b/server/src/test/java/com/objectcomputing/checkins/services/skill_record/SkillRecordServicesImplTest.java index 7738829fec..f403b13b27 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/skill_record/SkillRecordServicesImplTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/skill_record/SkillRecordServicesImplTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.api.condition.DisabledInNativeImage; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -28,6 +29,9 @@ import static org.mockito.Mockito.reset; import static org.mockito.Mockito.when; +// Disabled in nativeTest, as we get an exception from Mockito +// => java.lang.NoClassDefFoundError: Could not initialize class org.mockito.internal.configuration.plugins.Plugins +@DisabledInNativeImage @TestMethodOrder(MethodOrderer.OrderAnnotation.class) class SkillRecordServicesImplTest extends TestContainersSuite { From 52a4bfbbe54c644233647ee2e0dc61083e9b16f7 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Tue, 2 Jul 2024 10:45:30 +0100 Subject: [PATCH 15/43] Add nativeTest stage to action --- .github/workflows/gradle-build-feature-native.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/gradle-build-feature-native.yml b/.github/workflows/gradle-build-feature-native.yml index 849ba171dc..401c98680d 100644 --- a/.github/workflows/gradle-build-feature-native.yml +++ b/.github/workflows/gradle-build-feature-native.yml @@ -33,3 +33,7 @@ jobs: uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 with: arguments: nativeCompile + - name: Gradle runs tests + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: nativeTest \ No newline at end of file From 2828a99ff06aecd5977692d03213b7e31b5c7716 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Thu, 4 Jul 2024 14:10:35 +0100 Subject: [PATCH 16/43] Enable (and test) dockerBuildNative --- .github/workflows/gradle-build-feature-native.yml | 11 ++++++++--- server/build.gradle | 14 +++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.github/workflows/gradle-build-feature-native.yml b/.github/workflows/gradle-build-feature-native.yml index 401c98680d..ed73a614b9 100644 --- a/.github/workflows/gradle-build-feature-native.yml +++ b/.github/workflows/gradle-build-feature-native.yml @@ -8,11 +8,12 @@ on: - 'doc-**/*' - 'hotfix-**/*' - 'dependabot/**/*' +env: + PROJECT_ID: ${{ secrets.RUN_PROJECT }} + SERVICE_NAME: checkins-pullrequest jobs: build: runs-on: ubuntu-latest - env: - CI: true steps: - name: Checkout uses: actions/checkout@v4 @@ -36,4 +37,8 @@ jobs: - name: Gradle runs tests uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 with: - arguments: nativeTest \ No newline at end of file + arguments: nativeTest + - name: Build a native docker image + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: dockerBuildNative diff --git a/server/build.gradle b/server/build.gradle index 58452cd22e..df222aae42 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -28,6 +28,14 @@ micronaut { } } +dockerBuildNative { + def imageNameFromGithub = [] + if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME') && System.getenv('GITHUB_SHA')) { + imageNameFromGithub = ["ghcr.io/${System.getenv('PROJECT_ID')}/${System.getenv('SERVICE_NAME')}:${System.getenv("GITHUB_SHA")}".toString()] + } + images = ["checkins:latest"] + imageNameFromGithub +} + graalvmNative { toolchainDetection = false binaries { @@ -37,9 +45,9 @@ graalvmNative { // See https://github.com/micronaut-projects/micronaut-core/issues/10771 buildArgs.add("--initialize-at-build-time=kotlin.coroutines.intrinsics.CoroutineSingletons") - // When we are building on CI, we do not want to include the dev migrations. - def isCI = System.getenv("CI") != null - def migrationLocations = isCI ? "db/common" : "db/common,db/dev" + // When we are building for production (on CI), we do not want to include the dev migrations. + def isProduction = System.getenv('SERVICE_NAME') != null && System.getenv('SERVICE_NAME') == 'checkins-master' + def migrationLocations = isProduction ? "db/common" : "db/common,db/dev" logger.lifecycle("ℹ️ Building with the migrations from: $migrationLocations") // Graal cannot scan for migrations at run-time, so we use this to specify the locations. From 6490f67c92931308e7b98318d42fdf70ed8f44be Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 25 Jul 2024 14:28:21 -0500 Subject: [PATCH 17/43] Attemt to deploy to develop --- .../gradle-native-build-development.yml | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 .github/workflows/gradle-native-build-development.yml diff --git a/.github/workflows/gradle-native-build-development.yml b/.github/workflows/gradle-native-build-development.yml new file mode 100644 index 0000000000..2bd4b058de --- /dev/null +++ b/.github/workflows/gradle-native-build-development.yml @@ -0,0 +1,112 @@ +name: Gradle Build & Deploy - Develop +on: + push: + branches: + - 'develop' + +env: + PROJECT_ID: ${{ secrets.RUN_PROJECT }} + RUN_REGION: us-central1 + SERVICE_NAME: checkins-develop +jobs: + build: + runs-on: ubuntu-latest + environment: + name: Development + url: https://checkins-develop-tuvcfzotpq-uc.a.run.app/ + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Set up Node LTS + uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Set up GraalVM 21 + uses: graalvm/setup-graalvm@v1.1.8 + with: + distribution: 'graalvm' + java-version: '21' + - name: Cache SonarQube packages + uses: actions/cache@v4 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + - name: Cache Gradle packages + uses: actions/cache@v4 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: ${{ runner.os }}-gradle + - name: Validate Gradle wrapper + uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b + - name: Build with Gradle + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: nativeCompile + env: + VITE_APP_API_URL: https://checkins-develop-tuvcfzotpq-uc.a.run.app + - name: Gradle runs tests + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: nativeTest +# - name: Do SonarQube checks +# uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 +# with: +# arguments: sonarqube --info +# env: +# GITHUB_TOKEN: ${{ secrets.GIT_HUB_TOKEN }} +# SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} +# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + - name: Setup python + run: | + sudo apt-get install python2.7 + - name: Export gcloud related env variable + run: export CLOUDSDK_PYTHON="/usr/bin/python2" + # Setup gcloud CLI + - uses: google-github-actions/setup-gcloud@v0 + with: + version: "290.0.1" + service_account_key: ${{ secrets.RUN_SA_KEY }} + project_id: ${{ secrets.RUN_PROJECT }} + - name: Auth Configure Docker + run: |- + gcloud --quiet auth configure-docker + - name: Build a native docker image + uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 + with: + arguments: dockerBuildNative + - name: Push the Docker image to Google Container Registry + run: |- + cd server + docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" + - name: Deploy image to Cloud Run + run: |- + gcloud run deploy "$SERVICE_NAME" \ + --quiet \ + --region "$RUN_REGION" \ + --image "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" \ + --memory 1Gi \ + --add-cloudsql-instances ${{ secrets.DB_CONNECTION_NAME }} \ + --set-env-vars "CLOUD_DB_CONNECTION_NAME=${{ secrets.DB_CONNECTION_NAME }}" \ + --set-env-vars "DB_NAME=${{ secrets.DB_NAME }}" \ + --set-env-vars "DATASOURCES_DEFAULT_PASSWORD=${{ secrets.DB_PASSWORD }}" \ + --set-env-vars "DATASOURCES_DEFAULT_USERNAME=${{ secrets.DB_USERNAME }}" \ + --set-env-vars "AES_KEY=${{ secrets.AES_KEY }}" \ + --set-env-vars "OAUTH_CLIENT_ID=${{ secrets.OAUTH_CLIENT_ID }}" \ + --set-env-vars "OAUTH_CLIENT_SECRET=${{ secrets.OAUTH_CLIENT_SECRET }}" \ + --set-env-vars "OAUTH_CALLBACK_URI"=${{ secrets.OAUTH_CALLBACK_URI }} \ + --set-env-vars "DIRECTORY_ID=${{ secrets.DIRECTORY_ID }}" \ + --set-env-vars "SERVICE_ACCOUNT_CREDENTIALS=${{ secrets.SERVICE_ACCOUNT_CREDENTIALS }}" \ + --set-env-vars "GSUITE_SUPER_ADMIN=${{ secrets.GSUITE_SUPER_ADMIN }}" \ + --set-env-vars "MJ_APIKEY_PUBLIC=${{ secrets.MJ_APIKEY_PUBLIC }}" \ + --set-env-vars "MJ_APIKEY_PRIVATE=${{ secrets.MJ_APIKEY_PRIVATE }}" \ + --set-env-vars "GIT_HUB_TOKEN=${{ secrets.GIT_HUB_TOKEN }}" \ + --set-env-vars "WEB_ADDRESS=https://checkins-develop-tuvcfzotpq-uc.a.run.app" \ + --set-env-vars "FROM_ADDRESS=kimberlinm@objectcomputing.com" \ + --set-env-vars "FROM_NAME=Check-Ins - DEVELOP" \ + --set-env-vars "^@^MICRONAUT_ENVIRONMENTS=dev,cloud,google,gcp" \ + --platform "managed" \ + --max-instances 2 \ + --allow-unauthenticated From cd22d8990276a638babd077cc0705317cc118d01 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 25 Jul 2024 14:51:11 -0500 Subject: [PATCH 18/43] Attempt to deploy to develop --- .github/workflows/gradle-native-build-development.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-native-build-development.yml b/.github/workflows/gradle-native-build-development.yml index 2bd4b058de..89e751eb42 100644 --- a/.github/workflows/gradle-native-build-development.yml +++ b/.github/workflows/gradle-native-build-development.yml @@ -1,9 +1,9 @@ -name: Gradle Build & Deploy - Develop +name: Gradle Build & Deploy - Native - Develop on: push: branches: - 'develop' - + - 'feature-2532/graal' env: PROJECT_ID: ${{ secrets.RUN_PROJECT }} RUN_REGION: us-central1 From 57e8f3fe62dbd8f53a5fac639127bcf0f25407c6 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 25 Jul 2024 15:32:14 -0500 Subject: [PATCH 19/43] adjust image tagging --- server/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/build.gradle b/server/build.gradle index df222aae42..456153ae2d 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -30,7 +30,7 @@ micronaut { dockerBuildNative { def imageNameFromGithub = [] - if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME') && System.getenv('GITHUB_SHA')) { + if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME')) { imageNameFromGithub = ["ghcr.io/${System.getenv('PROJECT_ID')}/${System.getenv('SERVICE_NAME')}:${System.getenv("GITHUB_SHA")}".toString()] } images = ["checkins:latest"] + imageNameFromGithub From 98077d10aeb340720608476ed4058504adaf2b51 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 25 Jul 2024 16:19:38 -0500 Subject: [PATCH 20/43] image name fix --- server/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/build.gradle b/server/build.gradle index 456153ae2d..4fe79b522f 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -30,8 +30,8 @@ micronaut { dockerBuildNative { def imageNameFromGithub = [] - if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME')) { - imageNameFromGithub = ["ghcr.io/${System.getenv('PROJECT_ID')}/${System.getenv('SERVICE_NAME')}:${System.getenv("GITHUB_SHA")}".toString()] + if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME') && System.getenv('GITHUB_SHA')) { + imageNameFromGithub = ["gcr.io/${System.getenv('PROJECT_ID')}/${System.getenv('SERVICE_NAME')}:${System.getenv("GITHUB_SHA")}".toString()] } images = ["checkins:latest"] + imageNameFromGithub } From ddf55e4efd537f5a45617763bad9e30789c48713 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Fri, 16 Aug 2024 10:11:36 -0500 Subject: [PATCH 21/43] Attempt to add LocalDateTimeSerializer constructors --- .../com.objectcomputing/checkins/reflect-config.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json b/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json index 4cf0c95cd4..779eb54605 100644 --- a/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json +++ b/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json @@ -1,4 +1,9 @@ [ + { + "name": "com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true + }, { "name": "com.objectcomputing.checkins.services.permissions.PermissionSerializer", "allDeclaredConstructors" : true, From bfcac1afd0a1c159a574a51389fbda55a16eac06 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Wed, 21 Aug 2024 16:41:22 -0500 Subject: [PATCH 22/43] fixed the godforsaken serialization test --- .../gradle-native-build-development.yml | 4 ++-- .../checkins/services/reviews/ReviewPeriod.java | 2 +- .../services/reviews/ReviewPeriodCreateDTO.java | 2 +- .../util/serialize/LocalDateTimeSerializer.java | 17 +++++++++++++++++ .../checkins/reflect-config.json | 5 +++++ .../reviews/ReviewPeriodControllerTest.java | 15 ++++++++++----- 6 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 server/src/main/java/com/objectcomputing/checkins/util/serialize/LocalDateTimeSerializer.java diff --git a/.github/workflows/gradle-native-build-development.yml b/.github/workflows/gradle-native-build-development.yml index 89e751eb42..07953b7293 100644 --- a/.github/workflows/gradle-native-build-development.yml +++ b/.github/workflows/gradle-native-build-development.yml @@ -7,13 +7,13 @@ on: env: PROJECT_ID: ${{ secrets.RUN_PROJECT }} RUN_REGION: us-central1 - SERVICE_NAME: checkins-develop + SERVICE_NAME: checkins-develop-native jobs: build: runs-on: ubuntu-latest environment: name: Development - url: https://checkins-develop-tuvcfzotpq-uc.a.run.app/ + url: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app/ steps: - uses: actions/checkout@v4 with: diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriod.java b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriod.java index 254102e502..c131b239e8 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriod.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriod.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import com.objectcomputing.checkins.util.serialize.LocalDateTimeSerializer; import io.micronaut.core.annotation.Introspected; import io.micronaut.core.annotation.Nullable; import io.micronaut.data.annotation.AutoPopulated; diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodCreateDTO.java b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodCreateDTO.java index b0eb19d859..d0aa16c1b3 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodCreateDTO.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodCreateDTO.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import com.objectcomputing.checkins.util.serialize.LocalDateTimeSerializer; import io.micronaut.core.annotation.Introspected; import io.micronaut.core.annotation.Nullable; import io.swagger.v3.oas.annotations.media.Schema; diff --git a/server/src/main/java/com/objectcomputing/checkins/util/serialize/LocalDateTimeSerializer.java b/server/src/main/java/com/objectcomputing/checkins/util/serialize/LocalDateTimeSerializer.java new file mode 100644 index 0000000000..5e70e2ca3c --- /dev/null +++ b/server/src/main/java/com/objectcomputing/checkins/util/serialize/LocalDateTimeSerializer.java @@ -0,0 +1,17 @@ +package com.objectcomputing.checkins.util.serialize; + +import io.micronaut.core.annotation.Introspected; + +import java.time.format.DateTimeFormatter; + +@Introspected +public class LocalDateTimeSerializer extends com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer { + + protected LocalDateTimeSerializer() { + super(); + } + + public LocalDateTimeSerializer(DateTimeFormatter t) { + super(t); + } +} \ No newline at end of file diff --git a/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json b/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json index 779eb54605..c7ac5c8c37 100644 --- a/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json +++ b/server/src/main/resources/META-INF/native-image/com.objectcomputing/checkins/reflect-config.json @@ -4,6 +4,11 @@ "allDeclaredConstructors" : true, "allPublicConstructors" : true }, + { + "name": "com.objectcomputing.checkins.util.serialize.LocalDateTimeSerializer", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true + }, { "name": "com.objectcomputing.checkins.services.permissions.PermissionSerializer", "allDeclaredConstructors" : true, diff --git a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java index 7cecbdf621..311371670f 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java @@ -27,10 +27,13 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; @@ -51,6 +54,8 @@ class ReviewPeriodControllerTest extends TestContainersSuite implements ReviewAssignmentFixture, ReviewPeriodFixture, MemberProfileFixture, RoleFixture, FeedbackRequestFixture { + public static final Logger LOG = LoggerFactory.getLogger(ReviewPeriodControllerTest.class); + @Inject @Client("/services/review-periods") private HttpClient client; @@ -189,6 +194,11 @@ void testReviewPeriodCreateDTOSerialization() throws JsonProcessingException { reviewPeriodCreateDTO.setSelfReviewCloseDate(LocalDateTime.now()); reviewPeriodCreateDTO.setCloseDate(LocalDateTime.now()); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + String expectedLaunchDateFormat = formatter.format(reviewPeriodCreateDTO.getLaunchDate()); + String expectedSelfReviewCloseDateFormat = formatter.format(reviewPeriodCreateDTO.getSelfReviewCloseDate()); + String expectedCloseDateFormat = formatter.format(reviewPeriodCreateDTO.getCloseDate()); + final HttpRequest request = HttpRequest. POST("/", reviewPeriodCreateDTO).basicAuth(ADMIN_ROLE, ADMIN_ROLE); final HttpResponse response = client.toBlocking().exchange(request, String.class); @@ -199,17 +209,12 @@ void testReviewPeriodCreateDTOSerialization() throws JsonProcessingException { assertEquals(HttpStatus.CREATED, response.getStatus()); ObjectMapper objectMapper = new ObjectMapper(); - String expectedJson = objectMapper.writeValueAsString(reviewPeriodCreateDTO); - - String expectedLaunchDateFormat = objectMapper.readTree(expectedJson).get("launchDate").asText(); String actualLaunchDateFormat = objectMapper.readTree(actualJson).get("launchDate").asText(); assertEquals(expectedLaunchDateFormat, actualLaunchDateFormat); - String expectedSelfReviewCloseDateFormat = objectMapper.readTree(expectedJson).get("selfReviewCloseDate").asText(); String actualSelfReviewCloseDateFormat = objectMapper.readTree(actualJson).get("selfReviewCloseDate").asText(); assertEquals(expectedSelfReviewCloseDateFormat, actualSelfReviewCloseDateFormat); - String expectedCloseDateFormat = objectMapper.readTree(expectedJson).get("closeDate").asText(); String actualCloseDateFormat = objectMapper.readTree(actualJson).get("closeDate").asText(); assertEquals(expectedCloseDateFormat, actualCloseDateFormat); } From 61a5ec9684d5058ce924f7b2b7166c6ab844ea9d Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 22 Aug 2024 12:29:06 -0500 Subject: [PATCH 23/43] Attempted to adjust native build to use new gcloud actions --- ...velopment.yml => gradle-build-develop.yml} | 0 ...ve.yml => gradle-build-native-feature.yml} | 2 +- .../gradle-dependency-submission.yml | 22 ++++++++ ...t.yml => gradle-deploy-native-develop.yml} | 51 +++++++++---------- 4 files changed, 47 insertions(+), 28 deletions(-) rename .github/workflows/{gradle-build-development.yml => gradle-build-develop.yml} (100%) rename .github/workflows/{gradle-build-feature-native.yml => gradle-build-native-feature.yml} (96%) create mode 100644 .github/workflows/gradle-dependency-submission.yml rename .github/workflows/{gradle-native-build-development.yml => gradle-deploy-native-develop.yml} (77%) diff --git a/.github/workflows/gradle-build-development.yml b/.github/workflows/gradle-build-develop.yml similarity index 100% rename from .github/workflows/gradle-build-development.yml rename to .github/workflows/gradle-build-develop.yml diff --git a/.github/workflows/gradle-build-feature-native.yml b/.github/workflows/gradle-build-native-feature.yml similarity index 96% rename from .github/workflows/gradle-build-feature-native.yml rename to .github/workflows/gradle-build-native-feature.yml index ed73a614b9..142b0cf4fe 100644 --- a/.github/workflows/gradle-build-feature-native.yml +++ b/.github/workflows/gradle-build-native-feature.yml @@ -1,4 +1,4 @@ -name: Gradle Build Native Image - Feature / Bug +name: Gradle Build - Native - Feature / Bug on: push: branches: diff --git a/.github/workflows/gradle-dependency-submission.yml b/.github/workflows/gradle-dependency-submission.yml new file mode 100644 index 0000000000..3aa1f9b734 --- /dev/null +++ b/.github/workflows/gradle-dependency-submission.yml @@ -0,0 +1,22 @@ +name: Gradle Dependency Submission + +on: + push: + branches: [ 'develop', 'master', 'feature-2532/graal' ] + +permissions: + contents: write + +jobs: + dependency-submission: + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v4 + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 21 + - name: Generate and submit dependency graph + uses: gradle/actions/dependency-submission@v4 diff --git a/.github/workflows/gradle-native-build-development.yml b/.github/workflows/gradle-deploy-native-develop.yml similarity index 77% rename from .github/workflows/gradle-native-build-development.yml rename to .github/workflows/gradle-deploy-native-develop.yml index 07953b7293..8c62e21011 100644 --- a/.github/workflows/gradle-native-build-development.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -12,7 +12,7 @@ jobs: build: runs-on: ubuntu-latest environment: - name: Development + name: Development - Native url: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app/ steps: - uses: actions/checkout@v4 @@ -27,30 +27,26 @@ jobs: with: distribution: 'graalvm' java-version: '21' - - name: Cache SonarQube packages - uses: actions/cache@v4 - with: - path: ~/.sonar/cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar +# - name: Cache SonarQube packages +# uses: actions/cache@v4 +# with: +# path: ~/.sonar/cache +# key: ${{ runner.os }}-sonar +# restore-keys: ${{ runner.os }}-sonar - name: Cache Gradle packages uses: actions/cache@v4 with: path: ~/.gradle/caches key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} restore-keys: ${{ runner.os }}-gradle - - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 - name: Build with Gradle - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: nativeCompile + run: ./gradlew nativeCompile env: - VITE_APP_API_URL: https://checkins-develop-tuvcfzotpq-uc.a.run.app - - name: Gradle runs tests - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: nativeTest + VITE_APP_API_URL: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app + - name: Run tests with Gradle + run: ./gradlew nativeTest # - name: Do SonarQube checks # uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 # with: @@ -64,19 +60,20 @@ jobs: sudo apt-get install python2.7 - name: Export gcloud related env variable run: export CLOUDSDK_PYTHON="/usr/bin/python2" - # Setup gcloud CLI - - uses: google-github-actions/setup-gcloud@v0 + - id: 'auth' + uses: 'google-github-actions/auth@v2' + with: + workload_identity_provider: 'projects/832140020593/locations/global/workloadIdentityPools/github-pool/providers/github-oidc-provider' + service_account: 'sa-github-action@oci-intern-2019.iam.gserviceaccount.com' + - name: 'Set up Cloud SDK' + uses: 'google-github-actions/setup-gcloud@v2' with: - version: "290.0.1" - service_account_key: ${{ secrets.RUN_SA_KEY }} - project_id: ${{ secrets.RUN_PROJECT }} - - name: Auth Configure Docker + version: '>= 363.0.0' + - name: 'Auth Configure Docker' run: |- gcloud --quiet auth configure-docker - name: Build a native docker image - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: dockerBuildNative + run: ./gradlew dockerBuildNative - name: Push the Docker image to Google Container Registry run: |- cd server @@ -103,7 +100,7 @@ jobs: --set-env-vars "MJ_APIKEY_PUBLIC=${{ secrets.MJ_APIKEY_PUBLIC }}" \ --set-env-vars "MJ_APIKEY_PRIVATE=${{ secrets.MJ_APIKEY_PRIVATE }}" \ --set-env-vars "GIT_HUB_TOKEN=${{ secrets.GIT_HUB_TOKEN }}" \ - --set-env-vars "WEB_ADDRESS=https://checkins-develop-tuvcfzotpq-uc.a.run.app" \ + --set-env-vars "WEB_ADDRESS=https://checkins-develop-native-tuvcfzotpq-uc.a.run.app" \ --set-env-vars "FROM_ADDRESS=kimberlinm@objectcomputing.com" \ --set-env-vars "FROM_NAME=Check-Ins - DEVELOP" \ --set-env-vars "^@^MICRONAUT_ENVIRONMENTS=dev,cloud,google,gcp" \ From ed152690990e97f771b620e089e541ce4bd64ae5 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 22 Aug 2024 13:03:27 -0500 Subject: [PATCH 24/43] Added token permissions to the workflow and temporarily disabled tests --- .github/workflows/gradle-deploy-native-develop.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index 8c62e21011..f8b4936421 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -10,6 +10,9 @@ env: SERVICE_NAME: checkins-develop-native jobs: build: + permissions: + contents: 'read' + id-token: 'write' runs-on: ubuntu-latest environment: name: Development - Native @@ -45,8 +48,8 @@ jobs: run: ./gradlew nativeCompile env: VITE_APP_API_URL: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app - - name: Run tests with Gradle - run: ./gradlew nativeTest +# - name: Run tests with Gradle +# run: ./gradlew nativeTest # - name: Do SonarQube checks # uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 # with: From 4ddb8d0475845c1e2485d7e1abaa534f6ade9700 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 22 Aug 2024 13:55:21 -0500 Subject: [PATCH 25/43] Skip to auth and add project id --- .github/workflows/gradle-deploy-native-develop.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index f8b4936421..2e1450786e 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -44,10 +44,10 @@ jobs: restore-keys: ${{ runner.os }}-gradle - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - - name: Build with Gradle - run: ./gradlew nativeCompile - env: - VITE_APP_API_URL: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app +# - name: Build with Gradle +# run: ./gradlew nativeCompile +# env: +# VITE_APP_API_URL: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app # - name: Run tests with Gradle # run: ./gradlew nativeTest # - name: Do SonarQube checks @@ -66,6 +66,7 @@ jobs: - id: 'auth' uses: 'google-github-actions/auth@v2' with: + project_id: 'oci-intern-2019' workload_identity_provider: 'projects/832140020593/locations/global/workloadIdentityPools/github-pool/providers/github-oidc-provider' service_account: 'sa-github-action@oci-intern-2019.iam.gserviceaccount.com' - name: 'Set up Cloud SDK' @@ -77,6 +78,8 @@ jobs: gcloud --quiet auth configure-docker - name: Build a native docker image run: ./gradlew dockerBuildNative + env: + VITE_APP_API_URL: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app - name: Push the Docker image to Google Container Registry run: |- cd server From f755a095026e6601798da5fb2ef58ff759e4aac1 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 22 Aug 2024 14:47:59 -0500 Subject: [PATCH 26/43] Adjusted workload pool --- .github/workflows/gradle-deploy-native-develop.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index 2e1450786e..f98ab503ce 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -67,8 +67,8 @@ jobs: uses: 'google-github-actions/auth@v2' with: project_id: 'oci-intern-2019' - workload_identity_provider: 'projects/832140020593/locations/global/workloadIdentityPools/github-pool/providers/github-oidc-provider' - service_account: 'sa-github-action@oci-intern-2019.iam.gserviceaccount.com' + workload_identity_provider: 'projects/832140020593/locations/global/workloadIdentityPools/github/providers/my-repo' +# service_account: 'sa-github-action@oci-intern-2019.iam.gserviceaccount.com' - name: 'Set up Cloud SDK' uses: 'google-github-actions/setup-gcloud@v2' with: From 4bef44207e14cc7c80662e58d23f54e682f3b47e Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 22 Aug 2024 16:19:47 -0500 Subject: [PATCH 27/43] Attempted to adjust docker push call --- .../gradle-deploy-native-develop.yml | 60 ++++++++++--------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index f98ab503ce..3089ace596 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -9,7 +9,7 @@ env: RUN_REGION: us-central1 SERVICE_NAME: checkins-develop-native jobs: - build: + deploy: permissions: contents: 'read' id-token: 'write' @@ -30,12 +30,6 @@ jobs: with: distribution: 'graalvm' java-version: '21' -# - name: Cache SonarQube packages -# uses: actions/cache@v4 -# with: -# path: ~/.sonar/cache -# key: ${{ runner.os }}-sonar -# restore-keys: ${{ runner.os }}-sonar - name: Cache Gradle packages uses: actions/cache@v4 with: @@ -44,31 +38,16 @@ jobs: restore-keys: ${{ runner.os }}-gradle - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 -# - name: Build with Gradle -# run: ./gradlew nativeCompile -# env: -# VITE_APP_API_URL: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app -# - name: Run tests with Gradle -# run: ./gradlew nativeTest -# - name: Do SonarQube checks -# uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 -# with: -# arguments: sonarqube --info -# env: -# GITHUB_TOKEN: ${{ secrets.GIT_HUB_TOKEN }} -# SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} -# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - name: Setup python - run: | - sudo apt-get install python2.7 - - name: Export gcloud related env variable - run: export CLOUDSDK_PYTHON="/usr/bin/python2" +# - name: Setup python +# run: | +# sudo apt-get install python2.7 +# - name: Export gcloud related env variable +# run: export CLOUDSDK_PYTHON="/usr/bin/python2" - id: 'auth' uses: 'google-github-actions/auth@v2' with: project_id: 'oci-intern-2019' workload_identity_provider: 'projects/832140020593/locations/global/workloadIdentityPools/github/providers/my-repo' -# service_account: 'sa-github-action@oci-intern-2019.iam.gserviceaccount.com' - name: 'Set up Cloud SDK' uses: 'google-github-actions/setup-gcloud@v2' with: @@ -83,7 +62,7 @@ jobs: - name: Push the Docker image to Google Container Registry run: |- cd server - docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" + gcloud docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" - name: Deploy image to Cloud Run run: |- gcloud run deploy "$SERVICE_NAME" \ @@ -113,3 +92,28 @@ jobs: --platform "managed" \ --max-instances 2 \ --allow-unauthenticated + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Set up Node LTS + uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Set up GraalVM 21 + uses: graalvm/setup-graalvm@v1.1.8 + with: + distribution: 'graalvm' + java-version: '21' + - name: Cache Gradle packages + uses: actions/cache@v4 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: ${{ runner.os }}-gradle + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + - name: Run tests with Gradle + run: ./gradlew nativeTest From 47446c95bde47eccc7c4043d5c03b8604f78d7f9 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Thu, 22 Aug 2024 16:34:24 -0500 Subject: [PATCH 28/43] Use regular docker --- .github/workflows/gradle-deploy-native-develop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index 3089ace596..e146b841bf 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -62,7 +62,7 @@ jobs: - name: Push the Docker image to Google Container Registry run: |- cd server - gcloud docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" + docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" - name: Deploy image to Cloud Run run: |- gcloud run deploy "$SERVICE_NAME" \ From f163d14693a30e87806afa7285ed2a66d9209670 Mon Sep 17 00:00:00 2001 From: Michael Kimberlin Date: Fri, 6 Sep 2024 13:00:40 -0500 Subject: [PATCH 29/43] Fix test merge --- .../checkins/services/reviews/ReviewPeriodControllerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java index ce6a6ab6ea..0835a0c971 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodControllerTest.java @@ -200,6 +200,8 @@ void testReviewPeriodCreateDTOSerialization() throws JsonProcessingException { String expectedLaunchDateFormat = formatter.format(reviewPeriodCreateDTO.getLaunchDate()); String expectedSelfReviewCloseDateFormat = formatter.format(reviewPeriodCreateDTO.getSelfReviewCloseDate()); String expectedCloseDateFormat = formatter.format(reviewPeriodCreateDTO.getCloseDate()); + String expectedPeriodStartDateFormat = formatter.format(reviewPeriodCreateDTO.getPeriodStartDate()); + String expectedPeriodEndDateFormat = formatter.format(reviewPeriodCreateDTO.getPeriodEndDate()); final HttpRequest request = HttpRequest. POST("/", reviewPeriodCreateDTO).basicAuth(ADMIN_ROLE, ADMIN_ROLE); @@ -220,11 +222,9 @@ void testReviewPeriodCreateDTOSerialization() throws JsonProcessingException { String actualCloseDateFormat = objectMapper.readTree(actualJson).get("closeDate").asText(); assertEquals(expectedCloseDateFormat, actualCloseDateFormat); - String expectedPeriodStartDateFormat = objectMapper.readTree(expectedJson).get("periodStartDate").asText(); String actualPeriodStartDateFormat = objectMapper.readTree(actualJson).get("periodStartDate").asText(); assertEquals(expectedPeriodStartDateFormat, actualPeriodStartDateFormat); - String expectedPeriodEndDateFormat = objectMapper.readTree(expectedJson).get("periodEndDate").asText(); String actualPeriodEndDateFormat = objectMapper.readTree(actualJson).get("periodEndDate").asText(); assertEquals(expectedPeriodEndDateFormat, actualPeriodEndDateFormat); } From 7111c47876505ee5164b892efd79b3bb8bf3df48 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Mon, 16 Sep 2024 12:20:27 +0100 Subject: [PATCH 30/43] I suspect it's an origin issue... fix the URL --- .github/workflows/gradle-deploy-native-develop.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index e146b841bf..d58a54294a 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest environment: name: Development - Native - url: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app/ + url: https://checkins-develop-native-832140020593.us-central1.run.app steps: - uses: actions/checkout@v4 with: @@ -58,7 +58,7 @@ jobs: - name: Build a native docker image run: ./gradlew dockerBuildNative env: - VITE_APP_API_URL: https://checkins-develop-native-tuvcfzotpq-uc.a.run.app + VITE_APP_API_URL: https://checkins-develop-native-832140020593.us-central1.run.app - name: Push the Docker image to Google Container Registry run: |- cd server @@ -85,7 +85,7 @@ jobs: --set-env-vars "MJ_APIKEY_PUBLIC=${{ secrets.MJ_APIKEY_PUBLIC }}" \ --set-env-vars "MJ_APIKEY_PRIVATE=${{ secrets.MJ_APIKEY_PRIVATE }}" \ --set-env-vars "GIT_HUB_TOKEN=${{ secrets.GIT_HUB_TOKEN }}" \ - --set-env-vars "WEB_ADDRESS=https://checkins-develop-native-tuvcfzotpq-uc.a.run.app" \ + --set-env-vars "WEB_ADDRESS=https://checkins-develop-native-832140020593.us-central1.run.app" \ --set-env-vars "FROM_ADDRESS=kimberlinm@objectcomputing.com" \ --set-env-vars "FROM_NAME=Check-Ins - DEVELOP" \ --set-env-vars "^@^MICRONAUT_ENVIRONMENTS=dev,cloud,google,gcp" \ From f583b89f293856dc09de6e978674df27fc7d1854 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Tue, 17 Sep 2024 12:44:10 +0100 Subject: [PATCH 31/43] Test AOT to see if it speeds things up --- .../workflows/gradle-build-native-feature.yml | 2 +- .../gradle-deploy-native-develop.yml | 2 +- server/build.gradle | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-build-native-feature.yml b/.github/workflows/gradle-build-native-feature.yml index 142b0cf4fe..ff064045ec 100644 --- a/.github/workflows/gradle-build-native-feature.yml +++ b/.github/workflows/gradle-build-native-feature.yml @@ -41,4 +41,4 @@ jobs: - name: Build a native docker image uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 with: - arguments: dockerBuildNative + arguments: optimizedDockerBuildNative diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index d58a54294a..ce6ba6294f 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -56,7 +56,7 @@ jobs: run: |- gcloud --quiet auth configure-docker - name: Build a native docker image - run: ./gradlew dockerBuildNative + run: ./gradlew optimizedDockerBuildNative env: VITE_APP_API_URL: https://checkins-develop-native-832140020593.us-central1.run.app - name: Push the Docker image to Google Container Registry diff --git a/server/build.gradle b/server/build.gradle index 4fe79b522f..8349265926 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -4,6 +4,7 @@ plugins { id 'maven-publish' id("com.github.johnrengelman.shadow") version "8.1.1" id("io.micronaut.application") version "4.4.0" + id("io.micronaut.aot") version "4.4.0" id "jacoco" id("org.openrewrite.rewrite") version "latest.release" } @@ -26,6 +27,20 @@ micronaut { incremental(true) annotations("com.objectcomputing.checkins.*") } + aot { + // Please review carefully the optimizations enabled below + // Check https://micronaut-projects.github.io/micronaut-aot/latest/guide/ for more details + optimizeServiceLoading = false + convertYamlToJava = false + precomputeOperations = true + cacheEnvironment = true + optimizeClassLoading = true + deduceEnvironment = true + optimizeNetty = true + replaceLogbackXml = true + configurationProperties.put("micronaut.security.jwks.enabled","false") + configurationProperties.put("micronaut.security.openid-configuration.enabled","false") + } } dockerBuildNative { @@ -36,6 +51,14 @@ dockerBuildNative { images = ["checkins:latest"] + imageNameFromGithub } +optimizedDockerBuildNative { + def imageNameFromGithub = [] + if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME') && System.getenv('GITHUB_SHA')) { + imageNameFromGithub = ["gcr.io/${System.getenv('PROJECT_ID')}/${System.getenv('SERVICE_NAME')}:${System.getenv("GITHUB_SHA")}".toString()] + } + images = ["checkins:latest"] + imageNameFromGithub +} + graalvmNative { toolchainDetection = false binaries { From 7c898bc73d34c9332afc0075cf3ffe41d2973398 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Tue, 17 Sep 2024 13:00:20 +0100 Subject: [PATCH 32/43] Revert "Test AOT to see if it speeds things up" This reverts commit f583b89f293856dc09de6e978674df27fc7d1854. --- .../workflows/gradle-build-native-feature.yml | 2 +- .../gradle-deploy-native-develop.yml | 2 +- server/build.gradle | 23 ------------------- 3 files changed, 2 insertions(+), 25 deletions(-) diff --git a/.github/workflows/gradle-build-native-feature.yml b/.github/workflows/gradle-build-native-feature.yml index ff064045ec..142b0cf4fe 100644 --- a/.github/workflows/gradle-build-native-feature.yml +++ b/.github/workflows/gradle-build-native-feature.yml @@ -41,4 +41,4 @@ jobs: - name: Build a native docker image uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 with: - arguments: optimizedDockerBuildNative + arguments: dockerBuildNative diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index ce6ba6294f..d58a54294a 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -56,7 +56,7 @@ jobs: run: |- gcloud --quiet auth configure-docker - name: Build a native docker image - run: ./gradlew optimizedDockerBuildNative + run: ./gradlew dockerBuildNative env: VITE_APP_API_URL: https://checkins-develop-native-832140020593.us-central1.run.app - name: Push the Docker image to Google Container Registry diff --git a/server/build.gradle b/server/build.gradle index 8349265926..4fe79b522f 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -4,7 +4,6 @@ plugins { id 'maven-publish' id("com.github.johnrengelman.shadow") version "8.1.1" id("io.micronaut.application") version "4.4.0" - id("io.micronaut.aot") version "4.4.0" id "jacoco" id("org.openrewrite.rewrite") version "latest.release" } @@ -27,20 +26,6 @@ micronaut { incremental(true) annotations("com.objectcomputing.checkins.*") } - aot { - // Please review carefully the optimizations enabled below - // Check https://micronaut-projects.github.io/micronaut-aot/latest/guide/ for more details - optimizeServiceLoading = false - convertYamlToJava = false - precomputeOperations = true - cacheEnvironment = true - optimizeClassLoading = true - deduceEnvironment = true - optimizeNetty = true - replaceLogbackXml = true - configurationProperties.put("micronaut.security.jwks.enabled","false") - configurationProperties.put("micronaut.security.openid-configuration.enabled","false") - } } dockerBuildNative { @@ -51,14 +36,6 @@ dockerBuildNative { images = ["checkins:latest"] + imageNameFromGithub } -optimizedDockerBuildNative { - def imageNameFromGithub = [] - if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME') && System.getenv('GITHUB_SHA')) { - imageNameFromGithub = ["gcr.io/${System.getenv('PROJECT_ID')}/${System.getenv('SERVICE_NAME')}:${System.getenv("GITHUB_SHA")}".toString()] - } - images = ["checkins:latest"] + imageNameFromGithub -} - graalvmNative { toolchainDetection = false binaries { From 51094e53b974305baf161e825ad6ce5d107c7087 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Tue, 17 Sep 2024 12:44:10 +0100 Subject: [PATCH 33/43] Try again with AOT to see if it speeds things up --- .../workflows/gradle-build-native-feature.yml | 2 +- .../gradle-deploy-native-develop.yml | 2 +- server/build.gradle | 23 +++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle-build-native-feature.yml b/.github/workflows/gradle-build-native-feature.yml index 142b0cf4fe..ff064045ec 100644 --- a/.github/workflows/gradle-build-native-feature.yml +++ b/.github/workflows/gradle-build-native-feature.yml @@ -41,4 +41,4 @@ jobs: - name: Build a native docker image uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 with: - arguments: dockerBuildNative + arguments: optimizedDockerBuildNative diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index d58a54294a..ce6ba6294f 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -56,7 +56,7 @@ jobs: run: |- gcloud --quiet auth configure-docker - name: Build a native docker image - run: ./gradlew dockerBuildNative + run: ./gradlew optimizedDockerBuildNative env: VITE_APP_API_URL: https://checkins-develop-native-832140020593.us-central1.run.app - name: Push the Docker image to Google Container Registry diff --git a/server/build.gradle b/server/build.gradle index 074d4f017a..f1da9ee219 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -4,6 +4,7 @@ plugins { id 'maven-publish' id("com.gradleup.shadow") version "8.3.1" id("io.micronaut.application") version "4.4.0" + id("io.micronaut.aot") version "4.4.0" id "jacoco" id("org.openrewrite.rewrite") version "latest.release" } @@ -26,6 +27,20 @@ micronaut { incremental(true) annotations("com.objectcomputing.checkins.*") } + aot { + // Please review carefully the optimizations enabled below + // Check https://micronaut-projects.github.io/micronaut-aot/latest/guide/ for more details + optimizeServiceLoading = false + convertYamlToJava = false + precomputeOperations = true + cacheEnvironment = true + optimizeClassLoading = true + deduceEnvironment = true + optimizeNetty = true + replaceLogbackXml = true + configurationProperties.put("micronaut.security.jwks.enabled","false") + configurationProperties.put("micronaut.security.openid-configuration.enabled","false") + } } dockerBuildNative { @@ -36,6 +51,14 @@ dockerBuildNative { images = ["checkins:latest"] + imageNameFromGithub } +optimizedDockerBuildNative { + def imageNameFromGithub = [] + if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME') && System.getenv('GITHUB_SHA')) { + imageNameFromGithub = ["gcr.io/${System.getenv('PROJECT_ID')}/${System.getenv('SERVICE_NAME')}:${System.getenv("GITHUB_SHA")}".toString()] + } + images = ["checkins:latest"] + imageNameFromGithub +} + graalvmNative { toolchainDetection = false binaries { From 097ffca753bfaa10e894075f80b3bfe9accf2cbd Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Tue, 17 Sep 2024 14:09:23 +0100 Subject: [PATCH 34/43] Revert "Try again with AOT to see if it speeds things up" It does seem to improve startup time, but I don't think it belongs in this PR This reverts commit 51094e53b974305baf161e825ad6ce5d107c7087. --- .../workflows/gradle-build-native-feature.yml | 2 +- .../gradle-deploy-native-develop.yml | 2 +- server/build.gradle | 23 ------------------- 3 files changed, 2 insertions(+), 25 deletions(-) diff --git a/.github/workflows/gradle-build-native-feature.yml b/.github/workflows/gradle-build-native-feature.yml index ff064045ec..142b0cf4fe 100644 --- a/.github/workflows/gradle-build-native-feature.yml +++ b/.github/workflows/gradle-build-native-feature.yml @@ -41,4 +41,4 @@ jobs: - name: Build a native docker image uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 with: - arguments: optimizedDockerBuildNative + arguments: dockerBuildNative diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index ce6ba6294f..d58a54294a 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -56,7 +56,7 @@ jobs: run: |- gcloud --quiet auth configure-docker - name: Build a native docker image - run: ./gradlew optimizedDockerBuildNative + run: ./gradlew dockerBuildNative env: VITE_APP_API_URL: https://checkins-develop-native-832140020593.us-central1.run.app - name: Push the Docker image to Google Container Registry diff --git a/server/build.gradle b/server/build.gradle index f1da9ee219..074d4f017a 100755 --- a/server/build.gradle +++ b/server/build.gradle @@ -4,7 +4,6 @@ plugins { id 'maven-publish' id("com.gradleup.shadow") version "8.3.1" id("io.micronaut.application") version "4.4.0" - id("io.micronaut.aot") version "4.4.0" id "jacoco" id("org.openrewrite.rewrite") version "latest.release" } @@ -27,20 +26,6 @@ micronaut { incremental(true) annotations("com.objectcomputing.checkins.*") } - aot { - // Please review carefully the optimizations enabled below - // Check https://micronaut-projects.github.io/micronaut-aot/latest/guide/ for more details - optimizeServiceLoading = false - convertYamlToJava = false - precomputeOperations = true - cacheEnvironment = true - optimizeClassLoading = true - deduceEnvironment = true - optimizeNetty = true - replaceLogbackXml = true - configurationProperties.put("micronaut.security.jwks.enabled","false") - configurationProperties.put("micronaut.security.openid-configuration.enabled","false") - } } dockerBuildNative { @@ -51,14 +36,6 @@ dockerBuildNative { images = ["checkins:latest"] + imageNameFromGithub } -optimizedDockerBuildNative { - def imageNameFromGithub = [] - if (System.getenv('PROJECT_ID') != null && System.getenv('SERVICE_NAME') && System.getenv('GITHUB_SHA')) { - imageNameFromGithub = ["gcr.io/${System.getenv('PROJECT_ID')}/${System.getenv('SERVICE_NAME')}:${System.getenv("GITHUB_SHA")}".toString()] - } - images = ["checkins:latest"] + imageNameFromGithub -} - graalvmNative { toolchainDetection = false binaries { From 469c0be70d0c8dfb176ad3e629d5c1bff831d0dc Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Wed, 18 Sep 2024 15:35:09 +0100 Subject: [PATCH 35/43] Fix order of tables in teardown --- .../objectcomputing/checkins/services/TestContainersSuite.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/test/java/com/objectcomputing/checkins/services/TestContainersSuite.java b/server/src/test/java/com/objectcomputing/checkins/services/TestContainersSuite.java index 0cbb4c108c..931cd8eb9f 100644 --- a/server/src/test/java/com/objectcomputing/checkins/services/TestContainersSuite.java +++ b/server/src/test/java/com/objectcomputing/checkins/services/TestContainersSuite.java @@ -72,9 +72,9 @@ private void deleteAllEntities() { getRoleRepository().deleteAll(); getCheckInRepository().deleteAll(); getFeedbackRequestRepository().deleteAll(); + getReviewPeriodRepository().deleteAll(); getFeedbackTemplateRepository().deleteAll(); getMemberProfileRepository().deleteAll(); - getReviewPeriodRepository().deleteAll(); getReviewAssignmentRepository().deleteAll(); } From 0f922171c3d47b597aef4974afa10ad7accbf300 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Wed, 18 Sep 2024 15:38:12 +0100 Subject: [PATCH 36/43] Align action scripts --- .github/workflows/gradle-build-develop.yml | 112 ------------------ .../gradle-deploy-native-develop.yml | 59 +++++---- 2 files changed, 27 insertions(+), 144 deletions(-) delete mode 100644 .github/workflows/gradle-build-develop.yml diff --git a/.github/workflows/gradle-build-develop.yml b/.github/workflows/gradle-build-develop.yml deleted file mode 100644 index f155759711..0000000000 --- a/.github/workflows/gradle-build-develop.yml +++ /dev/null @@ -1,112 +0,0 @@ -name: Gradle Build & Deploy - Develop -on: - push: - branches: - - 'develop' - -env: - PROJECT_ID: ${{ secrets.RUN_PROJECT }} - RUN_REGION: us-central1 - SERVICE_NAME: checkins-develop -jobs: - build: - runs-on: ubuntu-latest - environment: - name: Development - url: https://checkins-develop-tuvcfzotpq-uc.a.run.app/ - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up Node LTS - uses: actions/setup-node@v4 - with: - node-version: '20' - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - distribution: 'temurin' # See 'Supported distributions' for available options - java-version: 21 - - name: Cache SonarQube packages - uses: actions/cache@v4 - with: - path: ~/.sonar/cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - name: Cache Gradle packages - uses: actions/cache@v4 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} - restore-keys: ${{ runner.os }}-gradle - - name: Validate Gradle wrapper - uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b - - name: Build with Gradle - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: assemble - env: - VITE_APP_API_URL: https://checkins-develop-tuvcfzotpq-uc.a.run.app - - name: Gradle runs tests - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: check -# - name: Do SonarQube checks -# uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 -# with: -# arguments: sonarqube --info -# env: -# GITHUB_TOKEN: ${{ secrets.GIT_HUB_TOKEN }} -# SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} -# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - - name: Setup python - run: | - sudo apt-get install python2.7 - - name: Export gcloud related env variable - run: export CLOUDSDK_PYTHON="/usr/bin/python2" - # Setup gcloud CLI - - uses: google-github-actions/setup-gcloud@v0 - with: - version: "290.0.1" - service_account_key: ${{ secrets.RUN_SA_KEY }} - project_id: ${{ secrets.RUN_PROJECT }} - - name: Auth Configure Docker - run: |- - gcloud --quiet auth configure-docker - - name: Build the Docker image - run: |- - cd server - docker build --tag "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" . - - name: Push the Docker image to Google Container Registry - run: |- - cd server - docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" - - name: Deploy image to Cloud Run - run: |- - gcloud run deploy "$SERVICE_NAME" \ - --quiet \ - --region "$RUN_REGION" \ - --image "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" \ - --memory 1Gi \ - --add-cloudsql-instances ${{ secrets.DB_CONNECTION_NAME }} \ - --set-env-vars "CLOUD_DB_CONNECTION_NAME=${{ secrets.DB_CONNECTION_NAME }}" \ - --set-env-vars "DB_NAME=${{ secrets.DB_NAME }}" \ - --set-env-vars "DATASOURCES_DEFAULT_PASSWORD=${{ secrets.DB_PASSWORD }}" \ - --set-env-vars "DATASOURCES_DEFAULT_USERNAME=${{ secrets.DB_USERNAME }}" \ - --set-env-vars "AES_KEY=${{ secrets.AES_KEY }}" \ - --set-env-vars "OAUTH_CLIENT_ID=${{ secrets.OAUTH_CLIENT_ID }}" \ - --set-env-vars "OAUTH_CLIENT_SECRET=${{ secrets.OAUTH_CLIENT_SECRET }}" \ - --set-env-vars "OAUTH_CALLBACK_URI"=${{ secrets.OAUTH_CALLBACK_URI }} \ - --set-env-vars "DIRECTORY_ID=${{ secrets.DIRECTORY_ID }}" \ - --set-env-vars "SERVICE_ACCOUNT_CREDENTIALS=${{ secrets.SERVICE_ACCOUNT_CREDENTIALS }}" \ - --set-env-vars "GSUITE_SUPER_ADMIN=${{ secrets.GSUITE_SUPER_ADMIN }}" \ - --set-env-vars "MJ_APIKEY_PUBLIC=${{ secrets.MJ_APIKEY_PUBLIC }}" \ - --set-env-vars "MJ_APIKEY_PRIVATE=${{ secrets.MJ_APIKEY_PRIVATE }}" \ - --set-env-vars "GIT_HUB_TOKEN=${{ secrets.GIT_HUB_TOKEN }}" \ - --set-env-vars "WEB_ADDRESS=https://checkins-develop-tuvcfzotpq-uc.a.run.app" \ - --set-env-vars "FROM_ADDRESS=kimberlinm@objectcomputing.com" \ - --set-env-vars "FROM_NAME=Check-Ins - DEVELOP" \ - --set-env-vars "^@^MICRONAUT_ENVIRONMENTS=dev,cloud,google,gcp" \ - --platform "managed" \ - --max-instances 2 \ - --allow-unauthenticated diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index d58a54294a..9109fa9a92 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -9,6 +9,31 @@ env: RUN_REGION: us-central1 SERVICE_NAME: checkins-develop-native jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Node LTS + uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Set up GraalVM 21 + uses: graalvm/setup-graalvm@v1.1.8 + with: + distribution: 'graalvm' + java-version: '21' + - name: Cache Gradle packages + uses: actions/cache@v4 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: ${{ runner.os }}-gradle + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + - name: Run tests with Gradle + run: ./gradlew nativeTest deploy: permissions: contents: 'read' @@ -20,7 +45,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + fetch-depth: 0 - name: Set up Node LTS uses: actions/setup-node@v4 with: @@ -38,18 +63,13 @@ jobs: restore-keys: ${{ runner.os }}-gradle - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 -# - name: Setup python -# run: | -# sudo apt-get install python2.7 -# - name: Export gcloud related env variable -# run: export CLOUDSDK_PYTHON="/usr/bin/python2" - id: 'auth' uses: 'google-github-actions/auth@v2' with: project_id: 'oci-intern-2019' workload_identity_provider: 'projects/832140020593/locations/global/workloadIdentityPools/github/providers/my-repo' - name: 'Set up Cloud SDK' - uses: 'google-github-actions/setup-gcloud@v2' + uses: google-github-actions/setup-gcloud@v2 with: version: '>= 363.0.0' - name: 'Auth Configure Docker' @@ -92,28 +112,3 @@ jobs: --platform "managed" \ --max-instances 2 \ --allow-unauthenticated - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up Node LTS - uses: actions/setup-node@v4 - with: - node-version: '20' - - name: Set up GraalVM 21 - uses: graalvm/setup-graalvm@v1.1.8 - with: - distribution: 'graalvm' - java-version: '21' - - name: Cache Gradle packages - uses: actions/cache@v4 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} - restore-keys: ${{ runner.os }}-gradle - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - name: Run tests with Gradle - run: ./gradlew nativeTest From ba4620f6c76dcaf584a212c186b2eb4e82da4506 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Wed, 18 Sep 2024 16:00:45 +0100 Subject: [PATCH 37/43] =?UTF-8?q?Add=20the=20missing=20action=20?= =?UTF-8?q?=F0=9F=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/gradle-deploy-develop.yml | 112 ++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 .github/workflows/gradle-deploy-develop.yml diff --git a/.github/workflows/gradle-deploy-develop.yml b/.github/workflows/gradle-deploy-develop.yml new file mode 100644 index 0000000000..8fe4fb8885 --- /dev/null +++ b/.github/workflows/gradle-deploy-develop.yml @@ -0,0 +1,112 @@ +name: Gradle Build & Deploy - Develop +on: + push: + branches: + - 'develop' + - 'feature-2532/graal' +env: + PROJECT_ID: ${{ secrets.RUN_PROJECT }} + RUN_REGION: us-central1 + SERVICE_NAME: checkins-develop +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Node LTS + uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Set up Temurin 21 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 21 + - name: Cache Gradle packages + uses: actions/cache@v4 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: ${{ runner.os }}-gradle + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + - name: Run tests with Gradle + run: ./gradlew check + deploy: + permissions: + contents: 'read' + id-token: 'write' + runs-on: ubuntu-latest + environment: + name: Development + url: https://checkins-develop-tuvcfzotpq-uc.a.run.app/ + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Node LTS + uses: actions/setup-node@v4 + with: + node-version: '20' + - name: Set up Temurin 21 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 21 + - name: Cache Gradle packages + uses: actions/cache@v4 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: ${{ runner.os }}-gradle + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + - id: 'auth' + uses: 'google-github-actions/auth@v2' + with: + project_id: 'oci-intern-2019' + workload_identity_provider: 'projects/832140020593/locations/global/workloadIdentityPools/github/providers/my-repo' + - name: 'Set up Cloud SDK' + uses: google-github-actions/setup-gcloud@v2 + with: + version: '>= 363.0.0' + - name: 'Auth Configure Docker' + run: |- + gcloud --quiet auth configure-docker + - name: Build the Docker image + run: |- + cd server + docker build --tag "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" . + - name: Push the Docker image to Google Container Registry + run: docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" + - name: Deploy image to Cloud Run + run: |- + gcloud run deploy "$SERVICE_NAME" \ + --quiet \ + --region "$RUN_REGION" \ + --image "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" \ + --memory 1Gi \ + --add-cloudsql-instances ${{ secrets.DB_CONNECTION_NAME }} \ + --set-env-vars "CLOUD_DB_CONNECTION_NAME=${{ secrets.DB_CONNECTION_NAME }}" \ + --set-env-vars "DB_NAME=${{ secrets.DB_NAME }}" \ + --set-env-vars "DATASOURCES_DEFAULT_PASSWORD=${{ secrets.DB_PASSWORD }}" \ + --set-env-vars "DATASOURCES_DEFAULT_USERNAME=${{ secrets.DB_USERNAME }}" \ + --set-env-vars "AES_KEY=${{ secrets.AES_KEY }}" \ + --set-env-vars "OAUTH_CLIENT_ID=${{ secrets.OAUTH_CLIENT_ID }}" \ + --set-env-vars "OAUTH_CLIENT_SECRET=${{ secrets.OAUTH_CLIENT_SECRET }}" \ + --set-env-vars "OAUTH_CALLBACK_URI"=${{ secrets.OAUTH_CALLBACK_URI }} \ + --set-env-vars "DIRECTORY_ID=${{ secrets.DIRECTORY_ID }}" \ + --set-env-vars "SERVICE_ACCOUNT_CREDENTIALS=${{ secrets.SERVICE_ACCOUNT_CREDENTIALS }}" \ + --set-env-vars "GSUITE_SUPER_ADMIN=${{ secrets.GSUITE_SUPER_ADMIN }}" \ + --set-env-vars "MJ_APIKEY_PUBLIC=${{ secrets.MJ_APIKEY_PUBLIC }}" \ + --set-env-vars "MJ_APIKEY_PRIVATE=${{ secrets.MJ_APIKEY_PRIVATE }}" \ + --set-env-vars "GIT_HUB_TOKEN=${{ secrets.GIT_HUB_TOKEN }}" \ + --set-env-vars "WEB_ADDRESS=https://checkins-develop-tuvcfzotpq-uc.a.run.app" \ + --set-env-vars "FROM_ADDRESS=kimberlinm@objectcomputing.com" \ + --set-env-vars "FROM_NAME=Check-Ins - DEVELOP" \ + --set-env-vars "^@^MICRONAUT_ENVIRONMENTS=dev,cloud,google,gcp" \ + --platform "managed" \ + --max-instances 2 \ + --allow-unauthenticated From b6a6d0fee8ac5b2175fd4e9f24346504707fe415 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Wed, 18 Sep 2024 16:04:39 +0100 Subject: [PATCH 38/43] Assemble before creating the docker image --- .github/workflows/gradle-deploy-develop.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/gradle-deploy-develop.yml b/.github/workflows/gradle-deploy-develop.yml index 8fe4fb8885..5acaac3f55 100644 --- a/.github/workflows/gradle-deploy-develop.yml +++ b/.github/workflows/gradle-deploy-develop.yml @@ -77,6 +77,7 @@ jobs: gcloud --quiet auth configure-docker - name: Build the Docker image run: |- + ./gradlew assemble cd server docker build --tag "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" . - name: Push the Docker image to Google Container Registry From 18fb56014bdaa909499311a044bd2734c6655326 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Wed, 18 Sep 2024 16:20:00 +0100 Subject: [PATCH 39/43] Patch Vite URL --- .github/workflows/gradle-deploy-develop.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/gradle-deploy-develop.yml b/.github/workflows/gradle-deploy-develop.yml index 5acaac3f55..c175bdf804 100644 --- a/.github/workflows/gradle-deploy-develop.yml +++ b/.github/workflows/gradle-deploy-develop.yml @@ -80,6 +80,8 @@ jobs: ./gradlew assemble cd server docker build --tag "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" . + env: + VITE_APP_API_URL: https://checkins-develop-tuvcfzotpq-uc.a.run.app - name: Push the Docker image to Google Container Registry run: docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" - name: Deploy image to Cloud Run From a6808b1d889f798ad12f63fa6b1e580b4d98faa5 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Thu, 19 Sep 2024 12:49:53 +0100 Subject: [PATCH 40/43] Extract URL --- .github/workflows/gradle-deploy-develop.yml | 7 ++++--- .github/workflows/gradle-deploy-native-develop.yml | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/gradle-deploy-develop.yml b/.github/workflows/gradle-deploy-develop.yml index c175bdf804..d798ce5cb2 100644 --- a/.github/workflows/gradle-deploy-develop.yml +++ b/.github/workflows/gradle-deploy-develop.yml @@ -8,6 +8,7 @@ env: PROJECT_ID: ${{ secrets.RUN_PROJECT }} RUN_REGION: us-central1 SERVICE_NAME: checkins-develop + TARGET_URL: https://checkins-develop-tuvcfzotpq-uc.a.run.app jobs: test: runs-on: ubuntu-latest @@ -41,7 +42,7 @@ jobs: runs-on: ubuntu-latest environment: name: Development - url: https://checkins-develop-tuvcfzotpq-uc.a.run.app/ + url: ${{ env.TARGET_URL }} steps: - uses: actions/checkout@v4 with: @@ -81,7 +82,7 @@ jobs: cd server docker build --tag "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" . env: - VITE_APP_API_URL: https://checkins-develop-tuvcfzotpq-uc.a.run.app + VITE_APP_API_URL: ${{ env.TARGET_URL }} - name: Push the Docker image to Google Container Registry run: docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" - name: Deploy image to Cloud Run @@ -106,7 +107,7 @@ jobs: --set-env-vars "MJ_APIKEY_PUBLIC=${{ secrets.MJ_APIKEY_PUBLIC }}" \ --set-env-vars "MJ_APIKEY_PRIVATE=${{ secrets.MJ_APIKEY_PRIVATE }}" \ --set-env-vars "GIT_HUB_TOKEN=${{ secrets.GIT_HUB_TOKEN }}" \ - --set-env-vars "WEB_ADDRESS=https://checkins-develop-tuvcfzotpq-uc.a.run.app" \ + --set-env-vars "WEB_ADDRESS=${{ env.TARGET_URL }}" \ --set-env-vars "FROM_ADDRESS=kimberlinm@objectcomputing.com" \ --set-env-vars "FROM_NAME=Check-Ins - DEVELOP" \ --set-env-vars "^@^MICRONAUT_ENVIRONMENTS=dev,cloud,google,gcp" \ diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index 9109fa9a92..777a85be1a 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -8,6 +8,7 @@ env: PROJECT_ID: ${{ secrets.RUN_PROJECT }} RUN_REGION: us-central1 SERVICE_NAME: checkins-develop-native + TARGET_URL: https://checkins-develop-native-832140020593.us-central1.run.app jobs: test: runs-on: ubuntu-latest @@ -41,7 +42,7 @@ jobs: runs-on: ubuntu-latest environment: name: Development - Native - url: https://checkins-develop-native-832140020593.us-central1.run.app + url: ${{ env.TARGET_URL }} steps: - uses: actions/checkout@v4 with: @@ -78,7 +79,7 @@ jobs: - name: Build a native docker image run: ./gradlew dockerBuildNative env: - VITE_APP_API_URL: https://checkins-develop-native-832140020593.us-central1.run.app + VITE_APP_API_URL: ${{ env.TARGET_URL }} - name: Push the Docker image to Google Container Registry run: |- cd server @@ -105,7 +106,7 @@ jobs: --set-env-vars "MJ_APIKEY_PUBLIC=${{ secrets.MJ_APIKEY_PUBLIC }}" \ --set-env-vars "MJ_APIKEY_PRIVATE=${{ secrets.MJ_APIKEY_PRIVATE }}" \ --set-env-vars "GIT_HUB_TOKEN=${{ secrets.GIT_HUB_TOKEN }}" \ - --set-env-vars "WEB_ADDRESS=https://checkins-develop-native-832140020593.us-central1.run.app" \ + --set-env-vars "WEB_ADDRESS=${{ env.TARGET_URL }}" \ --set-env-vars "FROM_ADDRESS=kimberlinm@objectcomputing.com" \ --set-env-vars "FROM_NAME=Check-Ins - DEVELOP" \ --set-env-vars "^@^MICRONAUT_ENVIRONMENTS=dev,cloud,google,gcp" \ From 2b72a1a519b2701676b7a46effbbe780bf6c98d5 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Thu, 19 Sep 2024 14:03:14 +0100 Subject: [PATCH 41/43] Mark serialized classes as Introspected for Graal --- .../checkins/services/reports/CompensationHistory.java | 2 ++ .../checkins/services/reports/CurrentInformation.java | 2 ++ .../objectcomputing/checkins/services/reports/Feedback.java | 2 ++ .../checkins/services/reports/PositionHistory.java | 2 ++ .../objectcomputing/checkins/services/reports/ReportHours.java | 3 +++ .../objectcomputing/checkins/services/reports/ReportKudos.java | 3 +++ 6 files changed, 14 insertions(+) diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reports/CompensationHistory.java b/server/src/main/java/com/objectcomputing/checkins/services/reports/CompensationHistory.java index b64dbb9555..bfabaf4b5e 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reports/CompensationHistory.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reports/CompensationHistory.java @@ -4,6 +4,7 @@ import com.objectcomputing.checkins.services.memberprofile.MemberProfileRepository; import com.objectcomputing.checkins.exceptions.BadArgException; +import io.micronaut.core.annotation.Introspected; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; @@ -22,6 +23,7 @@ public class CompensationHistory extends CSVProcessor { + @Introspected public record Compensation( UUID memberId, LocalDate startDate, diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reports/CurrentInformation.java b/server/src/main/java/com/objectcomputing/checkins/services/reports/CurrentInformation.java index 6674a576f2..ec44709dfe 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reports/CurrentInformation.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reports/CurrentInformation.java @@ -5,6 +5,7 @@ import com.objectcomputing.checkins.services.memberprofile.MemberProfileRepository; import com.objectcomputing.checkins.exceptions.BadArgException; +import io.micronaut.core.annotation.Introspected; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; @@ -18,6 +19,7 @@ public class CurrentInformation extends CSVProcessor { + @Introspected public record Information( UUID memberId, float salary, diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reports/Feedback.java b/server/src/main/java/com/objectcomputing/checkins/services/reports/Feedback.java index 35673d4c31..2285c5e03c 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reports/Feedback.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reports/Feedback.java @@ -11,7 +11,9 @@ @Getter @Introspected class Feedback { + @AllArgsConstructor + @Introspected @Getter public static class Answer { private final String memberName; diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reports/PositionHistory.java b/server/src/main/java/com/objectcomputing/checkins/services/reports/PositionHistory.java index b8cbe28c5c..957ff63446 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reports/PositionHistory.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reports/PositionHistory.java @@ -4,6 +4,7 @@ import com.objectcomputing.checkins.services.memberprofile.MemberProfileRepository; import com.objectcomputing.checkins.exceptions.BadArgException; +import io.micronaut.core.annotation.Introspected; import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVRecord; @@ -22,6 +23,7 @@ public class PositionHistory extends CSVProcessor { + @Introspected public record Position( UUID memberId, LocalDate date, diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reports/ReportHours.java b/server/src/main/java/com/objectcomputing/checkins/services/reports/ReportHours.java index 11b27a6463..0ec2d3f5dc 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reports/ReportHours.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reports/ReportHours.java @@ -1,5 +1,8 @@ package com.objectcomputing.checkins.services.reports; +import io.micronaut.core.annotation.Introspected; + +@Introspected record ReportHours( float contributionHours, float ptoHours, diff --git a/server/src/main/java/com/objectcomputing/checkins/services/reports/ReportKudos.java b/server/src/main/java/com/objectcomputing/checkins/services/reports/ReportKudos.java index 064bc743d1..b3787b7dbe 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/reports/ReportKudos.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/reports/ReportKudos.java @@ -1,7 +1,10 @@ package com.objectcomputing.checkins.services.reports; +import io.micronaut.core.annotation.Introspected; + import java.time.LocalDate; +@Introspected record ReportKudos( LocalDate dateCreated, String message, From 0f4eb6412789f111a87f66d98b311461e02faf08 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Thu, 19 Sep 2024 14:32:13 +0100 Subject: [PATCH 42/43] Reduce amount of work in feature actions We don't need to assemble, or build a docker image, or cache sonar things (as we're not doing sonar) --- .github/workflows/gradle-build-feature.yml | 18 ------------------ .../workflows/gradle-build-native-feature.yml | 17 ++++++----------- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/.github/workflows/gradle-build-feature.yml b/.github/workflows/gradle-build-feature.yml index fc023588e2..d33770c901 100644 --- a/.github/workflows/gradle-build-feature.yml +++ b/.github/workflows/gradle-build-feature.yml @@ -25,12 +25,6 @@ jobs: with: distribution: 'temurin' # See 'Supported distributions' for available options java-version: 21 - - name: Cache SonarQube packages - uses: actions/cache@v4 - with: - path: ~/.sonar/cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - name: Cache Gradle packages uses: actions/cache@v4 with: @@ -39,19 +33,7 @@ jobs: restore-keys: ${{ runner.os }}-gradle - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b - - name: Build with Gradle - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: assemble - name: Gradle runs tests uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 with: arguments: check -# - name: Do SonarQube checks -# uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 -# with: -# arguments: sonarqube --info -# env: -# GITHUB_TOKEN: ${{ secrets.GIT_HUB_TOKEN }} -# SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} -# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/gradle-build-native-feature.yml b/.github/workflows/gradle-build-native-feature.yml index 142b0cf4fe..21266cd59c 100644 --- a/.github/workflows/gradle-build-native-feature.yml +++ b/.github/workflows/gradle-build-native-feature.yml @@ -8,9 +8,6 @@ on: - 'doc-**/*' - 'hotfix-**/*' - 'dependabot/**/*' -env: - PROJECT_ID: ${{ secrets.RUN_PROJECT }} - SERVICE_NAME: checkins-pullrequest jobs: build: runs-on: ubuntu-latest @@ -28,17 +25,15 @@ jobs: with: distribution: 'graalvm' java-version: '21' + - name: Cache Gradle packages + uses: actions/cache@v4 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} + restore-keys: ${{ runner.os }}-gradle - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b - - name: Build native image - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: nativeCompile - name: Gradle runs tests uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 with: arguments: nativeTest - - name: Build a native docker image - uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021 - with: - arguments: dockerBuildNative From b45519dd16405be93906d38990564830858f80d2 Mon Sep 17 00:00:00 2001 From: Tim Yates Date: Thu, 19 Sep 2024 14:32:53 +0100 Subject: [PATCH 43/43] Remove Graal branch from develop actions --- .github/workflows/gradle-deploy-develop.yml | 1 - .github/workflows/gradle-deploy-native-develop.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/gradle-deploy-develop.yml b/.github/workflows/gradle-deploy-develop.yml index d798ce5cb2..6c6be65dbc 100644 --- a/.github/workflows/gradle-deploy-develop.yml +++ b/.github/workflows/gradle-deploy-develop.yml @@ -3,7 +3,6 @@ on: push: branches: - 'develop' - - 'feature-2532/graal' env: PROJECT_ID: ${{ secrets.RUN_PROJECT }} RUN_REGION: us-central1 diff --git a/.github/workflows/gradle-deploy-native-develop.yml b/.github/workflows/gradle-deploy-native-develop.yml index 777a85be1a..1ddc5d2251 100644 --- a/.github/workflows/gradle-deploy-native-develop.yml +++ b/.github/workflows/gradle-deploy-native-develop.yml @@ -3,7 +3,6 @@ on: push: branches: - 'develop' - - 'feature-2532/graal' env: PROJECT_ID: ${{ secrets.RUN_PROJECT }} RUN_REGION: us-central1