From aa8477ceb11a0bb2ccbcec3e51915e5cc4550a0f Mon Sep 17 00:00:00 2001 From: dert1129 Date: Wed, 20 Sep 2023 09:08:38 -0400 Subject: [PATCH 1/5] remove failed package checker --- .../java/org/kpmp/FailedPackageChecker.java | 116 ------------------ 1 file changed, 116 deletions(-) delete mode 100644 src/main/java/org/kpmp/FailedPackageChecker.java diff --git a/src/main/java/org/kpmp/FailedPackageChecker.java b/src/main/java/org/kpmp/FailedPackageChecker.java deleted file mode 100644 index 08967ff..0000000 --- a/src/main/java/org/kpmp/FailedPackageChecker.java +++ /dev/null @@ -1,116 +0,0 @@ -package org.kpmp; - -import java.io.File; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.kpmp.stateManager.DluPackageInventoryService; -import org.kpmp.stateManager.State; -import org.kpmp.stateManager.StateService; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.CommandLineRunner; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.WebApplicationType; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.web.client.RestTemplate; - -@ComponentScan(basePackages = { "org.kpmp" }) -public class FailedPackageChecker implements CommandLineRunner { - - private StateService stateService; - - private DluPackageInventoryService dluPackageInventoryService; - - private static final Log log = LogFactory.getLog(FailedPackageChecker.class); - - @Value("${state.service.host}") - private String stateServiceHost; - @Value("${state.service.endpoint}") - private String stateServiceEndpoint; - @Value("${package.state.upload.failed}") - private String uploadFailedState; - @Value("${package.state.upload.succeeded}") - private String uploadSucceededState; - @Value("${file.base.path}") - private String basePath; - @Value("${package.state.checker.timeout}") - private long timeout; - @Value("${package.state.checker.checkaftermillis}") - private long checkAfterMillis; - - private RestTemplate restTemplate; - - public FailedPackageChecker(StateService stateService, RestTemplate restTemplate, DluPackageInventoryService dluPackageInventoryService) { - this.stateService = stateService; - this.restTemplate = restTemplate; - this.dluPackageInventoryService = dluPackageInventoryService; - } - - public static void main(String[] args) { - SpringApplication app = new SpringApplication(FailedPackageChecker.class); - app.setWebApplicationType(WebApplicationType.NONE); - app.run(args); - } - - public long getPackageLastModified(String packageId) { - String path = basePath + File.separator + "package_" + packageId + File.separator; - File file = new File(path); - return file.lastModified(); - } - - public long getTimeSinceLastModified(long lastModified) { - return System.currentTimeMillis() - lastModified; - } - - public void sendStateChange(State state) { - restTemplate.postForObject(stateServiceHost + stateServiceEndpoint + "/unknown", state, String.class); - } - - public boolean packageDidFail(State state) { - long lastModified = getPackageLastModified(state.getPackageId()); - return packageDidFail(state, lastModified); - } - - public boolean packageDidFail(State state, long lastModified) { - long timeSinceLastModified = getTimeSinceLastModified(lastModified); - return timeSinceLastModified > timeout; - } - - @Override - public void run(String... args) throws Exception { - - Date checkAfterDate = new Date(new Date().getTime() - checkAfterMillis); - List states = stateService.findFailablePackagesAfterStateChangeDate(checkAfterDate); - List failedPackages = new ArrayList<>(); - - log.info("URI: FailedPackageChecker.run | MSG: Checking " + states.size() + " packages for failure | " + - "AFTERMILLIS: " + checkAfterDate.getTime()); - - for (State state : states) { - if (!stateService.isPackageFailed(state.getPackageId()) - && !stateService.isPackageSucceeded(state.getPackageId())) { - failedPackages.add(state); - } - } - - log.info("URI: FailedPackageChecker.run | MSG: Found " + failedPackages.size() + " stale packages; setting state..."); - - for (State state : failedPackages) { - if (packageDidFail(state)) { - State failedState = new State(); - failedState.setPackageId(state.getPackageId()); - failedState.setState(uploadFailedState); - failedState.setLargeUploadChecked(state.getLargeUploadChecked()); - failedState.setStateChangeDate(new Date()); - failedState.setCodicil("Failed stale package check"); - sendStateChange(failedState); - dluPackageInventoryService.setPackageInError(state.getPackageId()); - } - } - - log.info("URI: FailedPackageChecker.run | MSG: Done"); - } -} From 40cfaaf61fae010e207d721df23f3d9da71c1bbb Mon Sep 17 00:00:00 2001 From: dert1129 Date: Fri, 22 Sep 2023 10:08:33 -0400 Subject: [PATCH 2/5] remove crontab --- Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a4436e1..171e8ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,5 @@ ARG DEPENDENCY=target/dependency COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib COPY ${DEPENDENCY}/META-INF /app/META-INF COPY ${DEPENDENCY}/BOOT-INF/classes /app -RUN echo '* * * * * java -cp /app:/app/lib/* org.kpmp.FailedPackageChecker' >> /etc/crontabs/root CMD crond && java -cp /app:app/lib/* org.kpmp.Application From 3c057d7fcb0021ad20260d650b6574c21f4f1080 Mon Sep 17 00:00:00 2001 From: dert1129 Date: Mon, 25 Sep 2023 13:02:12 -0400 Subject: [PATCH 3/5] remove failed package checker test --- src/test/java/FailedPackageCheckerTest.java | 55 --------------------- 1 file changed, 55 deletions(-) delete mode 100644 src/test/java/FailedPackageCheckerTest.java diff --git a/src/test/java/FailedPackageCheckerTest.java b/src/test/java/FailedPackageCheckerTest.java deleted file mode 100644 index 02844b3..0000000 --- a/src/test/java/FailedPackageCheckerTest.java +++ /dev/null @@ -1,55 +0,0 @@ -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.kpmp.FailedPackageChecker; -import org.kpmp.stateManager.DluPackageInventoryService; -import org.kpmp.stateManager.State; -import org.kpmp.stateManager.StateService; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.client.RestTemplate; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -public class FailedPackageCheckerTest { - - - @Mock - DluPackageInventoryService dluPackageInventoryService; - @Mock - private StateService service; - @Mock - RestTemplate restTemplate; - private FailedPackageChecker packageChecker; - @Value("${package.state.checker.timeout}") - private long timeout; - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - packageChecker = new FailedPackageChecker(service, restTemplate, dluPackageInventoryService); - } - - @After - public void tearDown() throws Exception { - packageChecker = null; - } - - @Test - public void testGetTimeSinceLastModified() throws Exception { - assertEquals(42, packageChecker.getTimeSinceLastModified(System.currentTimeMillis() - 42)); - } - - @Test - public void testPackageDidFail() throws Exception { - State state = new State(); - long timeSinceLastModified = System.currentTimeMillis() - timeout + 1; - assertFalse(packageChecker.packageDidFail(state, timeSinceLastModified)); - - timeSinceLastModified = System.currentTimeMillis() - timeout - 1; - assertTrue(packageChecker.packageDidFail(state, timeSinceLastModified)); - } -} From e48eaba7e9964416b4f265c53f7ec8582aaea6b7 Mon Sep 17 00:00:00 2001 From: Nathan Creger Date: Wed, 24 Apr 2024 14:14:04 -0400 Subject: [PATCH 4/5] add build action --- .github/workflows/build-gradle-project.yml | 49 ++++++++++++++++++++++ build.gradle | 25 ++++++++++- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build-gradle-project.yml diff --git a/.github/workflows/build-gradle-project.yml b/.github/workflows/build-gradle-project.yml new file mode 100644 index 0000000..2467f4d --- /dev/null +++ b/.github/workflows/build-gradle-project.yml @@ -0,0 +1,49 @@ +name: Build state-manager-service docker image + +on: + push: + +jobs: + build-gradle-project: + env: + IMAGE_TAG: 2.0 + runs-on: ubuntu-latest + steps: + - name: Get branch names + id: branch-names + uses: tj-actions/branch-names@v8 + + - name: Get current branch name + if: steps.branch-names.outputs.is_default == 'false' + run: | + echo "Running on branch: ${{ steps.branch-names.outputs.current_branch }}" + - name: Checkout project sources + uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + java-version: '8' + distribution: 'temurin' + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + with: + gradle-version: 7.4 + + - name: Login to Docker Hub + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + username: ${{ secrets.ENV_DOCKER_USER }} + password: ${{ secrets.ENV_DOCKER_PASS }} + + - name: Run build with Gradle Wrapper + run: | + ./gradlew build docker + + - name: Push to Docker Hub if branch is develop + if: steps.branch-names.outputs.current_branch == 'develop' + run: | + docker push "kingstonduo/state-manager-service:$IMAGE_TAG" + + - name: Push to Docker Hub if branch is not develop + if: steps.branch-names.outputs.current_branch != 'develop' + run: | + docker push "kingstonduo/state-manager-service:${{ steps.branch-names.outputs.current_branch }}" diff --git a/build.gradle b/build.gradle index a585bbd..7d41fc8 100644 --- a/build.gradle +++ b/build.gradle @@ -55,8 +55,31 @@ task unpack(type: Copy) { into("build/dependency") } +def getCurrentGitBranch() { + if (project.hasProperty('tag')) { + def tagValue = project.property('tag') + return tagValue + } else { + def gitBranch = "Unknown branch" + try { + def workingDir = new File("${project.projectDir}") + def result = 'git rev-parse --abbrev-ref HEAD'.execute(null, workingDir) + result.waitFor() + if (result.exitValue() == 0) { + gitBranch = result.text.trim() + } + } catch (e) { + } + if (gitBranch == "develop" || gitBranch == "master"){ + return jar.version + }else{ + return gitBranch + } + } +} + docker { - name "${project.group}/${jar.baseName}" + name "kingstonduo/${jar.baseName}:" + getCurrentGitBranch() copySpec.from(tasks.unpack.outputs).into("dependency") buildArgs(['DEPENDENCY': "dependency"]) } From 515f05785dd9a3e968632d2b3a74994d63cffca7 Mon Sep 17 00:00:00 2001 From: Nathan Creger Date: Wed, 24 Apr 2024 14:17:12 -0400 Subject: [PATCH 5/5] update image tag number --- .github/workflows/build-gradle-project.yml | 2 +- build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-gradle-project.yml b/.github/workflows/build-gradle-project.yml index 2467f4d..bf1a69e 100644 --- a/.github/workflows/build-gradle-project.yml +++ b/.github/workflows/build-gradle-project.yml @@ -6,7 +6,7 @@ on: jobs: build-gradle-project: env: - IMAGE_TAG: 2.0 + IMAGE_TAG: 2.2 runs-on: ubuntu-latest steps: - name: Get branch names diff --git a/build.gradle b/build.gradle index 7d41fc8..fb3756d 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ apply plugin: 'com.palantir.docker' jar { baseName='state-manager-service' - version= '2.0' + version= '2.2' } repositories {