From b9db0f6537adfb5a70edd7146fdf891f6de849b0 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Tue, 28 Jan 2025 13:04:17 +0530 Subject: [PATCH 01/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index a29f0f13..b73130e2 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -1,5 +1,10 @@ --- version: 0.2 + +env: + secrets-manager: + DOCKER_HUB_CREDENTIALS: "docker-hub-credentials" + phases: install: runtime-versions: @@ -9,6 +14,12 @@ phases: - java -version pre_build: commands: + + # Retrieve Docker credentials from Secrets Manager + - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) + - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) + - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin + - echo "Docker login successful - ${BRANCH}" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' kubernetes/k8-deployment.yaml @@ -38,4 +49,4 @@ phases: fi if expr "${BRANCH}" : ".*dev" >/dev/null; then kubectl set image deployment/reciter-dev reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME - fi \ No newline at end of file + fi From c00a9a5f5a9f845dcd1112e57c2f6c911255bb9d Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Tue, 28 Jan 2025 14:33:02 +0530 Subject: [PATCH 02/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index b73130e2..075a1c61 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -18,7 +18,7 @@ phases: # Retrieve Docker credentials from Secrets Manager - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) - - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin + - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin -q - echo "Docker login successful - ${BRANCH}" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG From 20cae41bb4c2e3bf4bdb93d01272b42a9f935714 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Tue, 28 Jan 2025 14:47:28 +0530 Subject: [PATCH 03/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 075a1c61..b1dc782c 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -18,7 +18,8 @@ phases: # Retrieve Docker credentials from Secrets Manager - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) - - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin -q + - echo "Docker username from secrets ${DOCKER_USERNAME}" + - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin - echo "Docker login successful - ${BRANCH}" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG From 91647d7f3e1bac00c09fa47f6a1e052a07ee1451 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Tue, 28 Jan 2025 19:16:42 +0530 Subject: [PATCH 04/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index b1dc782c..62b4010f 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -3,7 +3,7 @@ version: 0.2 env: secrets-manager: - DOCKER_HUB_CREDENTIALS: "docker-hub-credentials" + DOCKER_HUB_CREDENTIALS: $DOCKER_HUB_CREDENTIALS_ARN # Reference environment variable for the secret ARN phases: install: From c8592b2663b6c2e45089d2dd66579764def2554f Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Tue, 28 Jan 2025 22:59:21 +0530 Subject: [PATCH 05/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 62b4010f..0b3ea284 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -1,9 +1,9 @@ --- version: 0.2 -env: - secrets-manager: - DOCKER_HUB_CREDENTIALS: $DOCKER_HUB_CREDENTIALS_ARN # Reference environment variable for the secret ARN +#env: +# secrets-manager: +# DOCKER_HUB_CREDENTIALS: $DOCKER_HUB_CREDENTIALS_ARN # Reference environment variable for the secret ARN phases: install: @@ -16,11 +16,11 @@ phases: commands: # Retrieve Docker credentials from Secrets Manager - - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) - - echo "Docker username from secrets ${DOCKER_USERNAME}" - - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin - - echo "Docker login successful - ${BRANCH}" + #- export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) + #- export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) + #- echo "Docker username from secrets ${DOCKER_USERNAME}" + #- echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin + #- echo "Docker login successful - ${BRANCH}" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' kubernetes/k8-deployment.yaml From 16134697e3e08109e71f914d41862acf57a54fd5 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 10:58:48 +0530 Subject: [PATCH 06/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 0b3ea284..62b4010f 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -1,9 +1,9 @@ --- version: 0.2 -#env: -# secrets-manager: -# DOCKER_HUB_CREDENTIALS: $DOCKER_HUB_CREDENTIALS_ARN # Reference environment variable for the secret ARN +env: + secrets-manager: + DOCKER_HUB_CREDENTIALS: $DOCKER_HUB_CREDENTIALS_ARN # Reference environment variable for the secret ARN phases: install: @@ -16,11 +16,11 @@ phases: commands: # Retrieve Docker credentials from Secrets Manager - #- export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - #- export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) - #- echo "Docker username from secrets ${DOCKER_USERNAME}" - #- echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin - #- echo "Docker login successful - ${BRANCH}" + - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) + - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) + - echo "Docker username from secrets ${DOCKER_USERNAME}" + - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin + - echo "Docker login successful - ${BRANCH}" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' kubernetes/k8-deployment.yaml From 3398425022651e2039397a6d08a5de883c63ee37 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 11:54:09 +0530 Subject: [PATCH 07/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 62b4010f..f3d719a5 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -18,7 +18,10 @@ phases: # Retrieve Docker credentials from Secrets Manager - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) - - echo "Docker username from secrets ${DOCKER_USERNAME}" + #- docker_login_secret=$(aws secretsmanager get-secret-value --secret-id $DOCKER_CREDENTIALS --query SecretString --output text) + #- export DOCKER_USERNAME=$(echo $docker_login_secret | jq -r .username) + #- export DOCKER_PASSWORD=$(echo $docker_login_secret | jq -r .password) + - echo "Docker username from secrets: $DOCKER_USERNAME" - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin - echo "Docker login successful - ${BRANCH}" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" From 13d5b730b2e9a549ca1151da9df122ad7c90311c Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 12:02:49 +0530 Subject: [PATCH 08/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index f3d719a5..8d26198c 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -18,9 +18,6 @@ phases: # Retrieve Docker credentials from Secrets Manager - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) - #- docker_login_secret=$(aws secretsmanager get-secret-value --secret-id $DOCKER_CREDENTIALS --query SecretString --output text) - #- export DOCKER_USERNAME=$(echo $docker_login_secret | jq -r .username) - #- export DOCKER_PASSWORD=$(echo $docker_login_secret | jq -r .password) - echo "Docker username from secrets: $DOCKER_USERNAME" - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin - echo "Docker login successful - ${BRANCH}" From aad05da55a5fc167e90a30701a1814cfd50a4945 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 12:45:51 +0530 Subject: [PATCH 09/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 8d26198c..fdd3d0c2 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -16,11 +16,22 @@ phases: commands: # Retrieve Docker credentials from Secrets Manager + # Check the full secret to ensure the structure is correct + - aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) + # Debugging: Verify the values are being set correctly + echo "Docker username from secrets: $DOCKER_USERNAME" + echo "DOCKER_PASSWORD is set" + + # Check if the password is empty + if [ -z "$DOCKER_PASSWORD" ]; then + echo "Error: DOCKER_PASSWORD is empty" + exit 1 + fi - echo "Docker username from secrets: $DOCKER_USERNAME" - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin - - echo "Docker login successful - ${BRANCH}" + - echo "Docker login successful" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' kubernetes/k8-deployment.yaml From e2b628d83302a117a0ff676a129304b1a3482743 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 12:55:29 +0530 Subject: [PATCH 10/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index fdd3d0c2..195f6357 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -21,8 +21,8 @@ phases: - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) # Debugging: Verify the values are being set correctly - echo "Docker username from secrets: $DOCKER_USERNAME" - echo "DOCKER_PASSWORD is set" + - echo "Docker username from secrets: $DOCKER_USERNAME" + - echo "DOCKER_PASSWORD is set" # Check if the password is empty if [ -z "$DOCKER_PASSWORD" ]; then From e165e9ab1b91f08d8bdfc8949d2e4e050e44d2d7 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 13:05:41 +0530 Subject: [PATCH 11/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 195f6357..67c5512e 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -25,6 +25,7 @@ phases: - echo "DOCKER_PASSWORD is set" # Check if the password is empty + - | if [ -z "$DOCKER_PASSWORD" ]; then echo "Error: DOCKER_PASSWORD is empty" exit 1 From 3628423b244259000156d845cc0d459b4b641fca Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 13:28:58 +0530 Subject: [PATCH 12/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 88 +++++++++++++++++++++++++++--------------------- 1 file changed, 49 insertions(+), 39 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 67c5512e..468b5c28 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -3,51 +3,58 @@ version: 0.2 env: secrets-manager: - DOCKER_HUB_CREDENTIALS: $DOCKER_HUB_CREDENTIALS_ARN # Reference environment variable for the secret ARN - + DOCKER_HUB_CREDENTIALS: $DOCKER_HUB_CREDENTIALS_ARN phases: install: runtime-versions: java: openjdk11 commands: - - kubectl version --short --client - - java -version + - kubectl version --short --client + - java -version pre_build: - commands: - - # Retrieve Docker credentials from Secrets Manager - # Check the full secret to ensure the structure is correct - - aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text - - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .username) - - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r .password) - # Debugging: Verify the values are being set correctly - - echo "Docker username from secrets: $DOCKER_USERNAME" - - echo "DOCKER_PASSWORD is set" - - # Check if the password is empty - - | - if [ -z "$DOCKER_PASSWORD" ]; then - echo "Error: DOCKER_PASSWORD is empty" - exit 1 - fi - - echo "Docker username from secrets: $DOCKER_USERNAME" - - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin - - echo "Docker login successful" - - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - - echo $TAG - - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' kubernetes/k8-deployment.yaml - - echo "${CODEBUILD_WEBHOOK_HEAD_REF}" - - echo "${BRANCH}" - - | - if expr "${BRANCH}" : ".*dev" >/dev/null; then - sed -i.bak -e 's@NAMESPACE@'"reciter"'@' -e 's@ENVCONFIG@'"env-config-dev"'@' -e 's@APPNAME@'"reciter-dev"'@' -e 's@HPANAME@'"hpa-reciter-dev"'@' -e 's@ENVIRONMENT_LABEL@'"dev"'@' kubernetes/k8-deployment.yaml; - fi - - | - if expr "${BRANCH}" : ".*master" >/dev/null; then - sed -i.bak -e 's@NAMESPACE@'"reciter"'@' -e 's@ENVCONFIG@'"env-config-prod"'@' -e 's@APPNAME@'"reciter-prod"'@' -e 's@HPANAME@'"hpa-reciter-prod"'@' -e 's@ENVIRONMENT_LABEL@'"prod"'@' kubernetes/k8-deployment.yaml; - fi - - $(aws ecr get-login --no-include-email) - - cat ./kubernetes/k8-deployment.yaml + commands: + - >- + aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS + --query 'SecretString' --output text + - >- + export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id + $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r + .username) + - >- + export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id + $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r + .password) + - echo "Docker username from secrets: $DOCKER_USERNAME" + - echo "DOCKER_PASSWORD is set" + - | + if [ -z "$DOCKER_PASSWORD" ]; then + echo "Error: DOCKER_PASSWORD is empty" + exit 1 + fi + - echo "Docker username from secrets: $DOCKER_USERNAME" + - >- + echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME + --password-stdin + - echo "Docker login successful" + - >- + TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo + $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" + - echo $TAG + - >- + sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' + kubernetes/k8-deployment.yaml + - 'echo "${CODEBUILD_WEBHOOK_HEAD_REF}"' + - 'echo "${BRANCH}"' + - | + if expr "${BRANCH}" : ".*dev" >/dev/null; then + sed -i.bak -e 's@NAMESPACE@'"reciter"'@' -e 's@ENVCONFIG@'"env-config-dev"'@' -e 's@APPNAME@'"reciter-dev"'@' -e 's@HPANAME@'"hpa-reciter-dev"'@' -e 's@ENVIRONMENT_LABEL@'"dev"'@' kubernetes/k8-deployment.yaml; + fi + - | + if expr "${BRANCH}" : ".*master" >/dev/null; then + sed -i.bak -e 's@NAMESPACE@'"reciter"'@' -e 's@ENVCONFIG@'"env-config-prod"'@' -e 's@APPNAME@'"reciter-prod"'@' -e 's@HPANAME@'"hpa-reciter-prod"'@' -e 's@ENVIRONMENT_LABEL@'"prod"'@' kubernetes/k8-deployment.yaml; + fi + - $(aws ecr get-login --no-include-email) + - cat ./kubernetes/k8-deployment.yaml build: commands: - mvn clean install -Dmaven.test.skip=true @@ -57,9 +64,12 @@ phases: docker push $REPOSITORY_URI:$TAG aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN fi + + if expr "${BRANCH}" : ".*master" >/dev/null; then kubectl set image deployment/reciter-prod reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME fi + if expr "${BRANCH}" : ".*dev" >/dev/null; then kubectl set image deployment/reciter-dev reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME fi From ec9c01e5b9defbe223ca8e479d32e912520f495f Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 13:58:19 +0530 Subject: [PATCH 13/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 70 +++++++++++++----------------------------------- 1 file changed, 18 insertions(+), 52 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 468b5c28..76be8470 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -1,60 +1,29 @@ --- version: 0.2 - -env: - secrets-manager: - DOCKER_HUB_CREDENTIALS: $DOCKER_HUB_CREDENTIALS_ARN phases: install: runtime-versions: java: openjdk11 commands: - - kubectl version --short --client - - java -version + - kubectl version --short --client + - java -version pre_build: - commands: - - >- - aws secretsmanager get-secret-value --secret-id $DOCKER_HUB_CREDENTIALS - --query 'SecretString' --output text - - >- - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id - $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r - .username) - - >- - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id - $DOCKER_HUB_CREDENTIALS --query 'SecretString' --output text | jq -r - .password) - - echo "Docker username from secrets: $DOCKER_USERNAME" - - echo "DOCKER_PASSWORD is set" - - | - if [ -z "$DOCKER_PASSWORD" ]; then - echo "Error: DOCKER_PASSWORD is empty" - exit 1 - fi - - echo "Docker username from secrets: $DOCKER_USERNAME" - - >- - echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME - --password-stdin - - echo "Docker login successful" - - >- - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo - $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - - echo $TAG - - >- - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' - kubernetes/k8-deployment.yaml - - 'echo "${CODEBUILD_WEBHOOK_HEAD_REF}"' - - 'echo "${BRANCH}"' - - | - if expr "${BRANCH}" : ".*dev" >/dev/null; then - sed -i.bak -e 's@NAMESPACE@'"reciter"'@' -e 's@ENVCONFIG@'"env-config-dev"'@' -e 's@APPNAME@'"reciter-dev"'@' -e 's@HPANAME@'"hpa-reciter-dev"'@' -e 's@ENVIRONMENT_LABEL@'"dev"'@' kubernetes/k8-deployment.yaml; - fi - - | - if expr "${BRANCH}" : ".*master" >/dev/null; then - sed -i.bak -e 's@NAMESPACE@'"reciter"'@' -e 's@ENVCONFIG@'"env-config-prod"'@' -e 's@APPNAME@'"reciter-prod"'@' -e 's@HPANAME@'"hpa-reciter-prod"'@' -e 's@ENVIRONMENT_LABEL@'"prod"'@' kubernetes/k8-deployment.yaml; - fi - - $(aws ecr get-login --no-include-email) - - cat ./kubernetes/k8-deployment.yaml + commands: + - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" + - echo $TAG + - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' kubernetes/k8-deployment.yaml + - echo "${CODEBUILD_WEBHOOK_HEAD_REF}" + - echo "${BRANCH}" + - | + if expr "${BRANCH}" : ".*dev" >/dev/null; then + sed -i.bak -e 's@NAMESPACE@'"reciter"'@' -e 's@ENVCONFIG@'"env-config-dev"'@' -e 's@APPNAME@'"reciter-dev"'@' -e 's@HPANAME@'"hpa-reciter-dev"'@' -e 's@ENVIRONMENT_LABEL@'"dev"'@' kubernetes/k8-deployment.yaml; + fi + - | + if expr "${BRANCH}" : ".*master" >/dev/null; then + sed -i.bak -e 's@NAMESPACE@'"reciter"'@' -e 's@ENVCONFIG@'"env-config-prod"'@' -e 's@APPNAME@'"reciter-prod"'@' -e 's@HPANAME@'"hpa-reciter-prod"'@' -e 's@ENVIRONMENT_LABEL@'"prod"'@' kubernetes/k8-deployment.yaml; + fi + - $(aws ecr get-login --no-include-email) + - cat ./kubernetes/k8-deployment.yaml build: commands: - mvn clean install -Dmaven.test.skip=true @@ -64,12 +33,9 @@ phases: docker push $REPOSITORY_URI:$TAG aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN fi - - if expr "${BRANCH}" : ".*master" >/dev/null; then kubectl set image deployment/reciter-prod reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME fi - if expr "${BRANCH}" : ".*dev" >/dev/null; then kubectl set image deployment/reciter-dev reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME fi From 763aba2e2d068e7cf5748bfbd1049421415ec2aa Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 14:14:03 +0530 Subject: [PATCH 14/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 76be8470..5482bb5a 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -9,6 +9,12 @@ phases: - java -version pre_build: commands: + # Retrieve Docker credentials from Secrets Manager + - echo Logging in to Docker Hub... + - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id docker-hub-credentials --query SecretString --output text | jq -r .username) + - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id docker-hub-credentials --query SecretString --output text | jq -r .password) + - echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin + - echo "docker login successful" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' kubernetes/k8-deployment.yaml From ec7473341631dd2693093c73198c33ffdfbf412a Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 14:23:18 +0530 Subject: [PATCH 15/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 5482bb5a..2bd8a980 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -12,7 +12,9 @@ phases: # Retrieve Docker credentials from Secrets Manager - echo Logging in to Docker Hub... - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id docker-hub-credentials --query SecretString --output text | jq -r .username) + - echo "Docker username during post-build: $DOCKER_USERNAME" - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id docker-hub-credentials --query SecretString --output text | jq -r .password) + - echo "Docker password fetched correctly" - echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin - echo "docker login successful" - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" From 5f0f90dddba6243bee6ec0567b69de14bd7393d5 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 14:41:30 +0530 Subject: [PATCH 16/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 2bd8a980..673da5bd 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -9,14 +9,18 @@ phases: - java -version pre_build: commands: - # Retrieve Docker credentials from Secrets Manager - - echo Logging in to Docker Hub... - - export DOCKER_USERNAME=$(aws secretsmanager get-secret-value --secret-id docker-hub-credentials --query SecretString --output text | jq -r .username) - - echo "Docker username during post-build: $DOCKER_USERNAME" - - export DOCKER_PASSWORD=$(aws secretsmanager get-secret-value --secret-id docker-hub-credentials --query SecretString --output text | jq -r .password) - - echo "Docker password fetched correctly" + # Fetch Docker credentials from AWS Secrets Manager + - echo "Fetching Docker credentials from AWS Secrets Manager" + - SECRET=$(aws secretsmanager get-secret-value --secret-id docker-hub-credentials --query "SecretString" --output text) + + # Extract username and password from the JSON response + - DOCKER_USERNAME=$(echo $SECRET | sed -n 's/.*"username":"\([^"]*\)".*/\1/p') + - DOCKER_PASSWORD=$(echo $SECRET | sed -n 's/.*"password":"\([^"]*\)".*/\1/p') + + # Log in to Docker registry + - echo "Logging in to Docker registry" - echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin - - echo "docker login successful" + - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG - sed -i.bak -e 's@CONTAINER_IMAGE@'"$REPOSITORY_URI:$TAG"'@' kubernetes/k8-deployment.yaml From 0e960410381fe90a306367d35bdc5b241625563d Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 15:11:29 +0530 Subject: [PATCH 17/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 673da5bd..c77cbaa2 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -17,6 +17,9 @@ phases: - DOCKER_USERNAME=$(echo $SECRET | sed -n 's/.*"username":"\([^"]*\)".*/\1/p') - DOCKER_PASSWORD=$(echo $SECRET | sed -n 's/.*"password":"\([^"]*\)".*/\1/p') + # Print the Docker username to the CodeBuild log + - echo "Docker Username: $DOCKER_USERNAME" + # Log in to Docker registry - echo "Logging in to Docker registry" - echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin From fe5622753acc46d730070bea691068280c50a7d7 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 15:21:43 +0530 Subject: [PATCH 18/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index c77cbaa2..58b2de1c 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -18,7 +18,7 @@ phases: - DOCKER_PASSWORD=$(echo $SECRET | sed -n 's/.*"password":"\([^"]*\)".*/\1/p') # Print the Docker username to the CodeBuild log - - echo "Docker Username: $DOCKER_USERNAME" + - echo "Docker Username $DOCKER_USERNAME" # Log in to Docker registry - echo "Logging in to Docker registry" From 2aed1026366b662c1f90c64beb13d877456cbbc2 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 15:34:57 +0530 Subject: [PATCH 19/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 58b2de1c..6663daff 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -22,7 +22,7 @@ phases: # Log in to Docker registry - echo "Logging in to Docker registry" - - echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin + - echo "$DOCKER_PASSWORD" | docker login --username $DOCKER_USERNAME --password-stdin - TAG="$CODEBUILD_BUILD_NUMBER.$(date +%Y-%m-%d.%H.%M.%S).$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | head -c 8)" - echo $TAG From c5282d5d344f8b9f061dee0bb99b2d4d5a9ac23d Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 16:04:12 +0530 Subject: [PATCH 20/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 6663daff..cbd4619e 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -46,6 +46,8 @@ phases: if expr "${BRANCH}" : ".*master" >/dev/null || expr "${BRANCH}" : ".*dev" >/dev/null; then docker build --tag $REPOSITORY_URI:$TAG . docker push $REPOSITORY_URI:$TAG + # Clear the Docker login credentials by removing config.json + rm -f ~/.docker/config.json aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN fi if expr "${BRANCH}" : ".*master" >/dev/null; then From e4e72474dbb585d789fdf2e8652419febd4d90e5 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Wed, 29 Jan 2025 16:15:52 +0530 Subject: [PATCH 21/31] Added docker hub credentials during build process to prevent pull rate limit from the dockerhub --- k8-buildspec.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index cbd4619e..993f7ede 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -46,8 +46,8 @@ phases: if expr "${BRANCH}" : ".*master" >/dev/null || expr "${BRANCH}" : ".*dev" >/dev/null; then docker build --tag $REPOSITORY_URI:$TAG . docker push $REPOSITORY_URI:$TAG - # Clear the Docker login credentials by removing config.json - rm -f ~/.docker/config.json + # Log out from the Docker registry to clear credentials + docker logout $REPOSITORY_URI aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN fi if expr "${BRANCH}" : ".*master" >/dev/null; then From 236747be7b7cb83c0c95ef9bd57f8d2a24daaaa6 Mon Sep 17 00:00:00 2001 From: paulalbert1 Date: Wed, 29 Jan 2025 15:46:30 -0500 Subject: [PATCH 22/31] Fixed some case issues with attribute names --- .../scripts/feedbackIdentityModel.keras | Bin 60960 -> 60959 bytes .../scripts/feedbackIdentityScaler.save | Bin 2695 -> 2695 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/scripts/feedbackIdentityModel.keras b/src/main/resources/scripts/feedbackIdentityModel.keras index fbae84304ff62438f1b1fac115996e745370d430..c1f53cbe9893939e91b1cf0e73eaab767de630e4 100644 GIT binary patch delta 32381 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 Hb@TrR>RJfk diff --git a/src/main/resources/scripts/feedbackIdentityScaler.save b/src/main/resources/scripts/feedbackIdentityScaler.save index 5d7d111cb741455006f70ebde500b549404a3d4d..dec6573d27d322e134495d7ceb31d74d9a4121ff 100644 GIT binary patch delta 801 zcmV++1K#|H6^9kDdIkd&Kk=VbJcYQaAyJrZO{@zFoz`(giPKWslsVwl}jykfs(F7Xo7Zk#`O zUP)>guC713>B;EQ7R5y1+jMEXYpa(8hm1+kEeg z^IlywSElOVqSBd!)-hjvZ6cU5WBPJ4b1I)(GT31G&7OR50j29f!6hFO0Om zTCfg6FCVr)s9SG;z8TFwIZPeB?TOq!&$hdosiA?t>Qn8tM~B2e1fw8iXKLd=p_4v_ zq=q*@0xIB7%~V@JvkQ&78DarVlivqHf0nL!h&T9>KR*OPj)IV)Kl93hR0~RZKk%z$ z3eyh8KUWVPaObD0KaJ`0-t=?WKh1sgx8v^dKTv9V8CuA9KdPy%j_#F)KbPKla7s(3 zKkveiam$XyKk}XfNWWs~Kcv~5rh0S#KT`*}3CBL`KUGqR)s4&aKiRY8gvWXNe?QwD zbcAyJr9akcEsY*x+du3MP(n1j=|399+Mzdj_&-A49<&}mray5;8#fP0!#|X%ypu4z z$v^0e`3$}6u0QDGZpJ7mzdvEyzY!Hh{6BIu=j!ndtv_rK?_b|#ra!|!z`U%AnWn#WaY{oS4X8i2JBKdjz?5IKvKKSb|^3LHfcKNuAe zVCsOCKPfd*r6UZgKUw7RbkZWzKc7b7rb1REKy2l~T00{>KPreb2c@xdKTOvWQ15+g zKiI*2^V4oq{ssXuM4#htm6-9Jtz ztaSlhmOwU3?s5gQ+(0-pkGbUE0lSkQ2|<6dMKVd()we&Pt>NBJA;LfXH^2mGB7i^b z?*!0%jKV*92`EeE-poJEbG9UQf8jr5tHv;_f(bxuDfD4_mz6)cC}Lnrz_CBO)=aGL zF|I#kD8x)C55Pb1-PBDS2--hvL?hhaKlDHJW+J-OYUDq$?u5vrc=11>S_Xu{IN^Uk z)T7n?`8d8mpTaeX+v?RnR#~0Y9XjtnB|~e3l_2Xshd)J)K}yv>iN%!pCkfa;MB!M8 z@P*Sqz2RZxn#Q(2t>jMWkMYt!*krsDI9>5SZ%0t4ed)nJ$$gANDYMK!XWU1U0Kw%y fcc5b`d+I_!2CXT+zHMbdE1fizSsnpZlV1ublCgqI From 84fe096d1f6af038fa0a7c33ee5bbb05a0a8f555 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Thu, 30 Jan 2025 12:00:19 +0530 Subject: [PATCH 23/31] new python models for the issue --- .../scripts/feedbackIdentityModel.keras | Bin 60960 -> 60959 bytes .../scripts/feedbackIdentityScaler.save | Bin 2695 -> 2695 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/scripts/feedbackIdentityModel.keras b/src/main/resources/scripts/feedbackIdentityModel.keras index fbae84304ff62438f1b1fac115996e745370d430..c1f53cbe9893939e91b1cf0e73eaab767de630e4 100644 GIT binary patch delta 32381 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 Hb@TrR>RJfk diff --git a/src/main/resources/scripts/feedbackIdentityScaler.save b/src/main/resources/scripts/feedbackIdentityScaler.save index 5d7d111cb741455006f70ebde500b549404a3d4d..dec6573d27d322e134495d7ceb31d74d9a4121ff 100644 GIT binary patch delta 801 zcmV++1K#|H6^9kDdIkd&Kk=VbJcYQaAyJrZO{@zFoz`(giPKWslsVwl}jykfs(F7Xo7Zk#`O zUP)>guC713>B;EQ7R5y1+jMEXYpa(8hm1+kEeg z^IlywSElOVqSBd!)-hjvZ6cU5WBPJ4b1I)(GT31G&7OR50j29f!6hFO0Om zTCfg6FCVr)s9SG;z8TFwIZPeB?TOq!&$hdosiA?t>Qn8tM~B2e1fw8iXKLd=p_4v_ zq=q*@0xIB7%~V@JvkQ&78DarVlivqHf0nL!h&T9>KR*OPj)IV)Kl93hR0~RZKk%z$ z3eyh8KUWVPaObD0KaJ`0-t=?WKh1sgx8v^dKTv9V8CuA9KdPy%j_#F)KbPKla7s(3 zKkveiam$XyKk}XfNWWs~Kcv~5rh0S#KT`*}3CBL`KUGqR)s4&aKiRY8gvWXNe?QwD zbcAyJr9akcEsY*x+du3MP(n1j=|399+Mzdj_&-A49<&}mray5;8#fP0!#|X%ypu4z z$v^0e`3$}6u0QDGZpJ7mzdvEyzY!Hh{6BIu=j!ndtv_rK?_b|#ra!|!z`U%AnWn#WaY{oS4X8i2JBKdjz?5IKvKKSb|^3LHfcKNuAe zVCsOCKPfd*r6UZgKUw7RbkZWzKc7b7rb1REKy2l~T00{>KPreb2c@xdKTOvWQ15+g zKiI*2^V4oq{ssXuM4#htm6-9Jtz ztaSlhmOwU3?s5gQ+(0-pkGbUE0lSkQ2|<6dMKVd()we&Pt>NBJA;LfXH^2mGB7i^b z?*!0%jKV*92`EeE-poJEbG9UQf8jr5tHv;_f(bxuDfD4_mz6)cC}Lnrz_CBO)=aGL zF|I#kD8x)C55Pb1-PBDS2--hvL?hhaKlDHJW+J-OYUDq$?u5vrc=11>S_Xu{IN^Uk z)T7n?`8d8mpTaeX+v?RnR#~0Y9XjtnB|~e3l_2Xshd)J)K}yv>iN%!pCkfa;MB!M8 z@P*Sqz2RZxn#Q(2t>jMWkMYt!*krsDI9>5SZ%0t4ed)nJ$$gANDYMK!XWU1U0Kw%y fcc5b`d+I_!2CXT+zHMbdE1fizSsnpZlV1ublCgqI From 41b90d8b4339d7f06e448cd77d5c96ae9b83219d Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Thu, 30 Jan 2025 14:04:05 +0530 Subject: [PATCH 24/31] Update EducationYearEvidence score in Identity and Feedback --- .../cluster/article/scorer/ReCiterArticleScorer.java | 7 +++++-- .../article/scorer/ReciterFeedbackArticleScorer.java | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/reciter/algorithm/cluster/article/scorer/ReCiterArticleScorer.java b/src/main/java/reciter/algorithm/cluster/article/scorer/ReCiterArticleScorer.java index c3166060..7b44f54c 100644 --- a/src/main/java/reciter/algorithm/cluster/article/scorer/ReCiterArticleScorer.java +++ b/src/main/java/reciter/algorithm/cluster/article/scorer/ReCiterArticleScorer.java @@ -491,8 +491,11 @@ private static double getAuthorsCountScore(AuthorCountEvidence evidence) private static double getEducationYearScore(EducationYearEvidence evidence) { return Optional.ofNullable(evidence) - .map(EducationYearEvidence::getDiscrepancyDegreeYearDoctoralScore) - .orElse(0.0); + .map(EducationYearEvidence::getDiscrepancyDegreeYearDoctoralScore) + .filter(score -> score != 0.0) + .orElseGet(() -> Optional.ofNullable(evidence) + .map(EducationYearEvidence::getDiscrepancyDegreeYearBachelorScore) + .orElse(0.0)); } private static double getEmailMatchScore(EmailEvidence evidence) { diff --git a/src/main/java/reciter/algorithm/feedback/article/scorer/ReciterFeedbackArticleScorer.java b/src/main/java/reciter/algorithm/feedback/article/scorer/ReciterFeedbackArticleScorer.java index b917f3fe..3f226bc9 100644 --- a/src/main/java/reciter/algorithm/feedback/article/scorer/ReciterFeedbackArticleScorer.java +++ b/src/main/java/reciter/algorithm/feedback/article/scorer/ReciterFeedbackArticleScorer.java @@ -653,7 +653,10 @@ private static double getAuthorsCountScore(AuthorCountEvidence evidence) private static double getEducationYearScore(EducationYearEvidence evidence) { return Optional.ofNullable(evidence) .map(EducationYearEvidence::getDiscrepancyDegreeYearDoctoralScore) - .orElse(0.0); + .filter(score -> score != 0.0) + .orElseGet(() -> Optional.ofNullable(evidence) + .map(EducationYearEvidence::getDiscrepancyDegreeYearBachelorScore) + .orElse(0.0)); } private static double getEmailMatchScore(EmailEvidence evidence) { From 4adbdcc0a3222698c0fc4a5a2b326432775a6af0 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Fri, 31 Jan 2025 21:01:42 +0530 Subject: [PATCH 25/31] Added more debug logs to the authorshipLikelihoodScore --- .../article/scorer/ReciterFeedbackArticleScorer.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/reciter/algorithm/feedback/article/scorer/ReciterFeedbackArticleScorer.java b/src/main/java/reciter/algorithm/feedback/article/scorer/ReciterFeedbackArticleScorer.java index 3f226bc9..81d9642f 100644 --- a/src/main/java/reciter/algorithm/feedback/article/scorer/ReciterFeedbackArticleScorer.java +++ b/src/main/java/reciter/algorithm/feedback/article/scorer/ReciterFeedbackArticleScorer.java @@ -576,7 +576,11 @@ private List executePythonScriptForArticleFeedbackTotal(List 0) - return mapAuthorshipLikelihoodScore(reCiterArticles, articlesIdentityFeedbackScoreTotal); + { + List articlesScores = mapAuthorshipLikelihoodScore(reCiterArticles, articlesIdentityFeedbackScoreTotal); + articlesScores.forEach(article -> log.info("articleId :", article.getArticleId(), "authorshipLikelihoodScore : ", article.getAuthorshipLikelihoodScore() )); + return articlesScores; + } } catch (IOException e) { @@ -714,6 +718,7 @@ private static List mapAuthorshipLikelihoodScore(List { // Find the JSON object that corresponds to this article's ID ReCiterArticle reCiterArticle = findJSONObjectById(authorshipLikelihoodScoreArray, article); + log.info("After setting the score to article***",reCiterArticle.getAuthorshipLikelihoodScore()); // count the targetAuthors per article long targetAuthorCount = article.getArticleCoAuthors().getAuthors().stream() .filter(ReCiterAuthor::isTargetAuthor) // Filter target authors @@ -739,11 +744,14 @@ else if (reCiterArticle == null) { private static ReCiterArticle findJSONObjectById(JSONArray jsonArray, ReCiterArticle article) { for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); + log.info("ArticleId from JSONArray: ", jsonObject.getLong("id") , ", Article Id from ReCiterArticle: " , article.getArticleId()); if (jsonObject.getLong("id") == article.getArticleId()) { /*article.setAuthorshipLikelihoodScore(BigDecimal.valueOf(jsonObject.getDouble("scoreTotal")*100) .setScale(3, RoundingMode.DOWN) .doubleValue());*/ + log.info("both articleIds are matching and Score is ***",jsonObject.getDouble("scoreTotal")); article.setAuthorshipLikelihoodScore(jsonObject.getDouble("scoreTotal")*100); + log.info("After setting the score to article***",article.getAuthorshipLikelihoodScore()); return article; // Return the modified article } } From 4825536c2a62ea473538a69d2d6cbf9e9b2e7c72 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Fri, 31 Jan 2025 22:45:15 +0530 Subject: [PATCH 26/31] moved the docker logout after setting image --- k8-buildspec.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 993f7ede..ef9b349f 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -46,8 +46,6 @@ phases: if expr "${BRANCH}" : ".*master" >/dev/null || expr "${BRANCH}" : ".*dev" >/dev/null; then docker build --tag $REPOSITORY_URI:$TAG . docker push $REPOSITORY_URI:$TAG - # Log out from the Docker registry to clear credentials - docker logout $REPOSITORY_URI aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN fi if expr "${BRANCH}" : ".*master" >/dev/null; then @@ -55,4 +53,6 @@ phases: fi if expr "${BRANCH}" : ".*dev" >/dev/null; then kubectl set image deployment/reciter-dev reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME + # Log out from the Docker registry to clear credentials + docker logout $REPOSITORY_URI fi From 0e53d80c607a80f33ed4cd2fc7b76d236a039761 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Sat, 1 Feb 2025 19:29:43 +0530 Subject: [PATCH 27/31] commected docker logout command for testing --- k8-buildspec.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index ef9b349f..5fa7ebc4 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -54,5 +54,5 @@ phases: if expr "${BRANCH}" : ".*dev" >/dev/null; then kubectl set image deployment/reciter-dev reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME # Log out from the Docker registry to clear credentials - docker logout $REPOSITORY_URI + #docker logout $REPOSITORY_URI fi From a01e12bd6e25a78629ff11c8388731e42f886bc8 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Sat, 1 Feb 2025 20:55:46 +0530 Subject: [PATCH 28/31] Checking for whether docker is running during code pipeline execution --- k8-buildspec.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 5fa7ebc4..8e428a02 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -44,6 +44,9 @@ phases: - mvn clean install -Dmaven.test.skip=true - | if expr "${BRANCH}" : ".*master" >/dev/null || expr "${BRANCH}" : ".*dev" >/dev/null; then + # Check if Docker is installed + echo "Checking if Docker is installed" + which docker docker build --tag $REPOSITORY_URI:$TAG . docker push $REPOSITORY_URI:$TAG aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN @@ -54,5 +57,5 @@ phases: if expr "${BRANCH}" : ".*dev" >/dev/null; then kubectl set image deployment/reciter-dev reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME # Log out from the Docker registry to clear credentials - #docker logout $REPOSITORY_URI + docker logout $REPOSITORY_URI fi From 70db387e344a756b9b624e78ab3c8de5c73e2e5b Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Sat, 1 Feb 2025 21:46:48 +0530 Subject: [PATCH 29/31] Added check for the docker daemon --- k8-buildspec.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 8e428a02..74fa4704 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -47,6 +47,8 @@ phases: # Check if Docker is installed echo "Checking if Docker is installed" which docker + # Check for docker daemon + sudo systemctl status docker docker build --tag $REPOSITORY_URI:$TAG . docker push $REPOSITORY_URI:$TAG aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN From 08f6e8f4f445d60f42f75c809a3d5e483c399a3a Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Sat, 1 Feb 2025 23:05:11 +0530 Subject: [PATCH 30/31] adding more commands to check the docker avalability --- k8-buildspec.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 74fa4704..7e08788c 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -46,9 +46,13 @@ phases: if expr "${BRANCH}" : ".*master" >/dev/null || expr "${BRANCH}" : ".*dev" >/dev/null; then # Check if Docker is installed echo "Checking if Docker is installed" - which docker - # Check for docker daemon - sudo systemctl status docker + docker --version + which docker + # Verify Docker access by running a simple Docker command + echo "Checking if Docker is accessible..." + docker info + docker ps + docker build --tag $REPOSITORY_URI:$TAG . docker push $REPOSITORY_URI:$TAG aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN From 0169879ee80299b41f6a54074357d544321974b9 Mon Sep 17 00:00:00 2001 From: mrj4001 Date: Mon, 3 Feb 2025 12:05:20 +0530 Subject: [PATCH 31/31] added docker hub credentials to the ReCiter buildSpec.yml file --- k8-buildspec.yml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/k8-buildspec.yml b/k8-buildspec.yml index 7e08788c..f6bdf15b 100644 --- a/k8-buildspec.yml +++ b/k8-buildspec.yml @@ -44,17 +44,10 @@ phases: - mvn clean install -Dmaven.test.skip=true - | if expr "${BRANCH}" : ".*master" >/dev/null || expr "${BRANCH}" : ".*dev" >/dev/null; then - # Check if Docker is installed - echo "Checking if Docker is installed" - docker --version - which docker - # Verify Docker access by running a simple Docker command - echo "Checking if Docker is accessible..." - docker info - docker ps - docker build --tag $REPOSITORY_URI:$TAG . docker push $REPOSITORY_URI:$TAG + # Log out from the Docker registry to clear credentials + docker logout $REPOSITORY_URI aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region us-east-1 --role-arn $EKS_KUBECTL_ROLE_ARN fi if expr "${BRANCH}" : ".*master" >/dev/null; then @@ -62,6 +55,5 @@ phases: fi if expr "${BRANCH}" : ".*dev" >/dev/null; then kubectl set image deployment/reciter-dev reciter=$REPOSITORY_URI:$TAG -n $EKS_CLUSTER_NAME - # Log out from the Docker registry to clear credentials - docker logout $REPOSITORY_URI + fi