Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
1bfe2b3
feat: Analysis Topic 구독 변경 / 운반 도착 정보 API 전송 / AGV Simulation 로직 수정
chani2104 Jul 4, 2026
ca8f320
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
chani2104 Jul 4, 2026
1d66e18
feat: Analysis Topic 구독 변경 / 운반 도착 정보 API 전송 / AGV Simulation 로직 수정
chani2104 Jul 4, 2026
b1f38dc
refactor: gitAction과 이미지 태그 변경
sknm1106 Jul 7, 2026
1eceae5
Merge pull request #25 from SK-Rookies-AIMS/infra/docker
mmije0ng Jul 7, 2026
42e4b19
fix: ì AGV eat´동 ã…상태 WebSocket 연ê-> 프론트 프론트엔드 연결, AGV 이동 로직 변경
chani2104 Jul 7, 2026
8b608ff
Merge branch 'dev' into feat/373/agv-arrive-api
chani2104 Jul 7, 2026
b2c53a9
DB 구조 변경으로 인한 시간별 담당업무, 전체 설비 상태, 설비 상태 요약 코드 변경
qwer9679 Jul 7, 2026
9516560
Merge pull request #26 from SK-Rookies-AIMS/feat/373/agv-arrive-api
qwer9679 Jul 7, 2026
55912df
Merge pull request #27 from SK-Rookies-AIMS/fix/dashboard-schema-sync
chani2104 Jul 7, 2026
f267942
feat: Analysis Topic 구독 변경 / 운반 도착 정보 API 전송 / AGV Simulation 로직 수정
chani2104 Jul 7, 2026
2c31c4d
Merge branch 'dev' into feat/373/agv-arrive-api
chani2104 Jul 7, 2026
0d061d4
Merge pull request #28 from SK-Rookies-AIMS/feat/373/agv-arrive-api
sknm1106 Jul 7, 2026
09512fe
이벤트 페이지에서 조치 시 샘플DB 장비 상태 변경하도록 수정
qwer9679 Jul 9, 2026
21916b5
주석 및 테스트용 로그 출력문 제거
qwer9679 Jul 9, 2026
6f8bb3a
Merge pull request #29 from SK-Rookies-AIMS/fix/event_equipment_link
hyein0514 Jul 9, 2026
5a935ae
refactor:웹소켓 설정 추가
hyein0514 Jul 9, 2026
2685288
Merge pull request #30 from SK-Rookies-AIMS/feat/307/event-score
sknm1106 Jul 9, 2026
0cf4852
feat: Redis Queue로 이벤트 우선순위 구현
chani2104 Jul 10, 2026
5f0e316
feat: Redis Queue로 이벤트 우선순위 구현
chani2104 Jul 10, 2026
a44cea4
Merge pull request #31 from SK-Rookies-AIMS/feat/383/agv-status-recovery
mmije0ng Jul 10, 2026
46666ed
이벤트 조치 타임라인 조회 기능 구현
qwer9679 Jul 10, 2026
0f4a5ab
Merge pull request #32 from SK-Rookies-AIMS/feat/event-action
sknm1106 Jul 10, 2026
8ccb14f
fix: redis test
sknm1106 Jul 10, 2026
a9b98eb
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
sknm1106 Jul 10, 2026
1a79d87
Merge pull request #33 from SK-Rookies-AIMS/infra/docker
kimgeon0802 Jul 10, 2026
84b4c16
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
sknm1106 Jul 13, 2026
3c76c57
refactor: add redis secret key
sknm1106 Jul 13, 2026
6bbb9f1
Merge pull request #34 from SK-Rookies-AIMS/infra/docker
mmije0ng Jul 13, 2026
c917673
이벤트 타임라인 추가 기능 구현
qwer9679 Jul 13, 2026
288a4a4
Merge pull request #35 from SK-Rookies-AIMS/feat/add-event-action
kimgeon0802 Jul 13, 2026
7cac72b
feat:이벤트 우선순위 지수 표시
hyein0514 Jul 13, 2026
dcce8ec
fix:충돌 오류 해결
hyein0514 Jul 13, 2026
3f487bd
Merge pull request #36 from SK-Rookies-AIMS/feat/307/event-score
mmije0ng Jul 13, 2026
eb5d53c
feat : S3 Img URL ADD
kimgeon0802 Jul 13, 2026
379280e
Merge pull request #37 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
hyein0514 Jul 13, 2026
922cf1b
feat: Redis 구조 수정
chani2104 Jul 13, 2026
05d3d7f
Merge pull request #38 from SK-Rookies-AIMS/fix/event-priority
sknm1106 Jul 13, 2026
51936dc
fix : save service mapper add
kimgeon0802 Jul 13, 2026
7063392
Merge pull request #39 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 13, 2026
f11af09
fix : alerteventsaveservice update
kimgeon0802 Jul 13, 2026
385b596
fix: 프레스&차체 이상탐지 reasons 반환 수정
mmije0ng Jul 14, 2026
e654fc9
Merge pull request #40 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
hyein0514 Jul 14, 2026
8f18f83
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
mmije0ng Jul 14, 2026
add88e9
사용자 일일업무 날짜값 제거
qwer9679 Jul 14, 2026
697bd5e
refactor: 이벤트 우선순위 점수 산정 변경
hyein0514 Jul 14, 2026
20d58e5
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
hyein0514 Jul 14, 2026
b9a9995
Merge pull request #41 from SK-Rookies-AIMS/fix/task-user
hyein0514 Jul 14, 2026
f8b8ef9
Merge pull request #42 from SK-Rookies-AIMS/feat/307/event-score
qwer9679 Jul 14, 2026
d3b2670
fix : alertevent test data update
kimgeon0802 Jul 14, 2026
1a205a1
Merge pull request #43 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 14, 2026
6f69107
fix: kafka bootstrap update
sknm1106 Jul 14, 2026
0802164
fix: kafka bootstrap update
chani2104 Jul 14, 2026
0dfdf1f
feat : kafka msg image Url log.info add
kimgeon0802 Jul 14, 2026
ef520a2
Merge pull request #45 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 14, 2026
c42f863
Merge branch 'main' of https://github.com/SK-Rookies-AIMS/backend int…
mmije0ng Jul 14, 2026
87d8944
fix: yaml fix
chani2104 Jul 14, 2026
878906f
fix: yaml kafka bootstrap fix
chani2104 Jul 14, 2026
1d044fa
Merge pull request #46 from SK-Rookies-AIMS/fix/bootstrap-yaml
sknm1106 Jul 14, 2026
c5a1a02
fix:websocket config 수정
hyein0514 Jul 14, 2026
3e587f4
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
hyein0514 Jul 14, 2026
ab4e261
Merge pull request #47 from SK-Rookies-AIMS/feat/307/event-score
sknm1106 Jul 14, 2026
ec44df2
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
mmije0ng Jul 14, 2026
af3c6ea
fix : application yaml update
kimgeon0802 Jul 14, 2026
eaac1c9
Merge pull request #48 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 14, 2026
90707bd
fix kafka_bootstrap_servers update
kimgeon0802 Jul 14, 2026
aa42489
fix kafka_bootstrap_servers update 2
kimgeon0802 Jul 14, 2026
698bda0
Merge pull request #49 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
sknm1106 Jul 14, 2026
aa255e0
fix kafka_bootstrap_servers update 3
kimgeon0802 Jul 14, 2026
3089b98
fix: update kafka bootstrap
sknm1106 Jul 14, 2026
d1e5ed1
Merge pull request #50 from SK-Rookies-AIMS/infra/docker
kimgeon0802 Jul 14, 2026
ce2e5e0
fix: kafka bootstrap update
sknm1106 Jul 14, 2026
652c262
fix kafka_bootstrap_servers update 4
kimgeon0802 Jul 14, 2026
49d8248
fix: check
sknm1106 Jul 14, 2026
52da1ad
Merge branch 'dev' into feat/264/AI-manual-watchy
chani2104 Jul 14, 2026
df81b83
Feat/264/ai manual watchy
chani2104 Jul 14, 2026
d0d0e97
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
mmije0ng Jul 14, 2026
83187b5
fix : kafkaConfig update
kimgeon0802 Jul 14, 2026
59623ec
Merge branch 'dev' into feat/264/AI-manual-watchy
kimgeon0802 Jul 14, 2026
58c7dc3
fix: dev yaml 수정
sknm1106 Jul 14, 2026
3886732
Merge pull request #52 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
sknm1106 Jul 14, 2026
40676fa
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
mmije0ng Jul 14, 2026
09c671a
Merge pull request #53 from SK-Rookies-AIMS/infra/docker
kimgeon0802 Jul 14, 2026
f9888c8
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
mmije0ng Jul 15, 2026
fdf2e6e
feat : alert event Imageurl update
kimgeon0802 Jul 15, 2026
2c2651e
Merge pull request #54 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 15, 2026
315708a
fix : alertimageproperties update
kimgeon0802 Jul 15, 2026
22e5cbb
Merge pull request #55 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 15, 2026
4e3f77b
fix: Agv Dispatch Scheduler
chani2104 Jul 15, 2026
d8762fb
fix: Agv Dispatch Scheduler
chani2104 Jul 15, 2026
77aff4a
Merge pull request #56 from SK-Rookies-AIMS/fix/dispatch-scheduler
sknm1106 Jul 15, 2026
e05548f
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
mmije0ng Jul 15, 2026
29a821b
시니어 추천조치 기능 구현
qwer9679 Jul 15, 2026
d74f862
Merge pull request #57 from SK-Rookies-AIMS/feat/senior_recommendation
hyein0514 Jul 15, 2026
dd7adc8
fix: Agv 시간 계산 로직
chani2104 Jul 17, 2026
9a5009d
Merge pull request #58 from SK-Rookies-AIMS/fix/agv-time-calculation
mmije0ng Jul 17, 2026
91431bf
fix: Agv ì‹ AGV Logic Refix
chani2104 Jul 17, 2026
70c01c9
Merge pull request #59 from SK-Rookies-AIMS/fix/agv-time-calculation
qwer9679 Jul 17, 2026
04f312c
fix: Dashboard Service type fix
chani2104 Jul 17, 2026
2bddd5d
Merge pull request #60 from SK-Rookies-AIMS/fix/agv-time-calculation
qwer9679 Jul 17, 2026
0cc03bf
feat : Security config update
kimgeon0802 Jul 21, 2026
2a912ec
Merge pull request #61 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 21, 2026
dbdc566
fix : security config update cancle
kimgeon0802 Jul 21, 2026
edcbc26
Merge pull request #62 from SK-Rookies-AIMS/feat/264/AI-manual-watchy
qwer9679 Jul 21, 2026
444689b
Merge branch 'dev' of https://github.com/SK-Rookies-AIMS/backend into…
mmije0ng Jul 21, 2026
34784d4
docs: README 업데이트 및 필요없는 파일 삭제
mmije0ng Jul 23, 2026
d942da4
remove: io 폴더 삭제
mmije0ng Jul 23, 2026
2d5b847
remove: META-INF 폴더 삭제
mmije0ng Jul 23, 2026
49822cc
remove: 불필요한 파일 삭제
mmije0ng Jul 23, 2026
59808b8
docs: README 사진 추가
mmije0ng Jul 23, 2026
2c81916
test: strengthen not-needed alert action assertions
mmije0ng Jul 23, 2026
bd5f3bc
docs: Kafka 및 Assembly Service 처리 구조 문서화
mmije0ng Jul 23, 2026
fc76500
Merge pull request #63 from SK-Rookies-AIMS/docs/readme
mmije0ng Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
249 changes: 215 additions & 34 deletions .github/workflows/deploy-backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,18 @@ on:
workflow_dispatch:

concurrency:
group: backend-${{ github.ref_name }}
cancel-in-progress: true
group: backend-gitops-dev
cancel-in-progress: false

env:
AWS_REGION: ap-northeast-2
EKS_CLUSTER_NAME: aims-dev-eks
ECR_REPOSITORY: aims/backend
NAMESPACE: aims-project
BACKEND_CONTEXT: .

INFRA_REPOSITORY: SK-Rookies-AIMS/infra
INFRA_BRANCH: dev
INFRA_MANIFEST_PATH: k8s/backend/kustomization.yaml

jobs:
Expand All @@ -53,47 +55,142 @@ jobs:

- name: Ensure ECR repository exists
run: |
aws ecr describe-repositories --repository-names "$ECR_REPOSITORY" --region "$AWS_REGION" >/dev/null 2>&1 || aws ecr create-repository --repository-name "$ECR_REPOSITORY" --region "$AWS_REGION" --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
set -euo pipefail

if ! aws ecr describe-repositories \
--repository-names "$ECR_REPOSITORY" \
--region "$AWS_REGION" \
> /dev/null 2>&1; then

aws ecr create-repository \
--repository-name "$ECR_REPOSITORY" \
--region "$AWS_REGION" \
--image-scanning-configuration scanOnPush=true \
--image-tag-mutability MUTABLE
fi

- name: Build and push Docker image
id: build-image
run: |
set -euo pipefail

IMAGE_TAG="${GITHUB_REF_NAME}-${GITHUB_SHA::12}"
IMAGE_URI="${{ steps.login-ecr.outputs.registry }}/${ECR_REPOSITORY}:${IMAGE_TAG}"
BRANCH_IMAGE_URI="${{ steps.login-ecr.outputs.registry }}/${ECR_REPOSITORY}:${GITHUB_REF_NAME}"

docker build -t "$IMAGE_URI" -t "$BRANCH_IMAGE_URI" "$BACKEND_CONTEXT"
echo "Building image: $IMAGE_URI"

docker build \
-t "$IMAGE_URI" \
-t "$BRANCH_IMAGE_URI" \
"$BACKEND_CONTEXT"

docker push "$IMAGE_URI"
docker push "$BRANCH_IMAGE_URI"

echo "image_uri=$IMAGE_URI" >> "$GITHUB_OUTPUT"
echo "image_tag=$IMAGE_TAG" >> "$GITHUB_OUTPUT"

- name: Checkout infra repository
uses: actions/checkout@v4
with:
repository: ${{ env.INFRA_REPOSITORY }}
ref: ${{ github.ref_name }}
ref: ${{ env.INFRA_BRANCH }}
token: ${{ secrets.INFRA_REPO_TOKEN }}
path: infra
fetch-depth: 0

- name: Update kubeconfig and ensure namespace
if: github.ref_name == 'dev'
run: |
aws eks update-kubeconfig --region "$AWS_REGION" --name "$EKS_CLUSTER_NAME"
kubectl create namespace "$NAMESPACE" --dry-run=client -o yaml | kubectl apply -f -
set -euo pipefail

aws eks update-kubeconfig \
--region "$AWS_REGION" \
--name "$EKS_CLUSTER_NAME"

kubectl create namespace "$NAMESPACE" \
--dry-run=client \
-o yaml |
kubectl apply -f -

- name: Load backend runtime parameters from SSM
if: github.ref_name == 'dev'
run: |
RDS_SECRET_ARN=$(aws ssm get-parameter --name "/aims/dev/rds/secret-arn" --region "$AWS_REGION" --query "Parameter.Value" --output text)
RDS_HOST=$(aws ssm get-parameter --name "/aims/dev/backend/rds-host" --region "$AWS_REGION" --query "Parameter.Value" --output text)
RDS_PORT=$(aws ssm get-parameter --name "/aims/dev/backend/rds-port" --region "$AWS_REGION" --query "Parameter.Value" --output text)
MAIN_DB_NAME=$(aws ssm get-parameter --name "/aims/dev/backend/main-db-name" --region "$AWS_REGION" --query "Parameter.Value" --output text)
SAMPLE_DB_NAME=$(aws ssm get-parameter --name "/aims/dev/backend/sample-db-name" --region "$AWS_REGION" --query "Parameter.Value" --output text)
JWT_SECRET_KEY=$(aws ssm get-parameter --name "/aims/dev/backend/jwt-secret-key" --region "$AWS_REGION" --with-decryption --query "Parameter.Value" --output text)

for VALUE in "$RDS_SECRET_ARN" "$RDS_HOST" "$RDS_PORT" "$MAIN_DB_NAME" "$SAMPLE_DB_NAME" "$JWT_SECRET_KEY"; do
set -euo pipefail

RDS_SECRET_ARN=$(aws ssm get-parameter \
--name "/aims/dev/rds/secret-arn" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

RDS_HOST=$(aws ssm get-parameter \
--name "/aims/dev/backend/rds-host" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

RDS_PORT=$(aws ssm get-parameter \
--name "/aims/dev/backend/rds-port" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

MAIN_DB_NAME=$(aws ssm get-parameter \
--name "/aims/dev/backend/main-db-name" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

SAMPLE_DB_NAME=$(aws ssm get-parameter \
--name "/aims/dev/backend/sample-db-name" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

JWT_SECRET_KEY=$(aws ssm get-parameter \
--name "/aims/dev/backend/jwt-secret-key" \
--region "$AWS_REGION" \
--with-decryption \
--query "Parameter.Value" \
--output text)

REDIS_HOST=$(aws ssm get-parameter \
--name "/aims/dev/redis/host" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

REDIS_PORT=$(aws ssm get-parameter \
--name "/aims/dev/redis/port" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

KAFKA_BOOTSTRAP_SERVER_1=$(aws ssm get-parameter \
--name "/aims/dev/msk/bootstrap-server-1" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)


KAFKA_BOOTSTRAP_SERVER_2=$(aws ssm get-parameter \
--name "/aims/dev/msk/bootstrap-server-2" \
--region "$AWS_REGION" \
--query "Parameter.Value" \
--output text)

for VALUE in \
"$RDS_SECRET_ARN" \
"$RDS_HOST" \
"$RDS_PORT" \
"$MAIN_DB_NAME" \
"$SAMPLE_DB_NAME" \
"$JWT_SECRET_KEY" \
"$REDIS_HOST" \
"$REDIS_PORT" \
"$KAFKA_BOOTSTRAP_SERVER_1" \
"$KAFKA_BOOTSTRAP_SERVER_2"; do

if [ -z "$VALUE" ] || [ "$VALUE" = "None" ]; then
echo "Required backend SSM parameter is empty"
exit 1
Expand All @@ -109,44 +206,122 @@ jobs:
echo "MAIN_DB_NAME=$MAIN_DB_NAME" >> "$GITHUB_ENV"
echo "SAMPLE_DB_NAME=$SAMPLE_DB_NAME" >> "$GITHUB_ENV"
echo "JWT_SECRET_KEY=$JWT_SECRET_KEY" >> "$GITHUB_ENV"
echo "REDIS_HOST=$REDIS_HOST" >> "$GITHUB_ENV"
echo "REDIS_PORT=$REDIS_PORT" >> "$GITHUB_ENV"
echo "KAFKA_BOOTSTRAP_SERVER_1=$KAFKA_BOOTSTRAP_SERVER_1" >> "$GITHUB_ENV"
echo "KAFKA_BOOTSTRAP_SERVER_2=$KAFKA_BOOTSTRAP_SERVER_2" >> "$GITHUB_ENV"

- name: Create or update backend Kubernetes Secret
if: github.ref_name == 'dev'
run: |
SECRET_JSON=$(aws secretsmanager get-secret-value --secret-id "$RDS_SECRET_ARN" --region "$AWS_REGION" --query "SecretString" --output text)
set -euo pipefail

DB_USERNAME=$(echo "$SECRET_JSON" | jq -r '.username')
DB_PASSWORD=$(echo "$SECRET_JSON" | jq -r '.password')
SECRET_JSON=$(aws secretsmanager get-secret-value \
--secret-id "$RDS_SECRET_ARN" \
--region "$AWS_REGION" \
--query "SecretString" \
--output text)

if [ -z "$DB_USERNAME" ] || [ "$DB_USERNAME" = "null" ] || [ -z "$DB_PASSWORD" ] || [ "$DB_PASSWORD" = "null" ]; then
echo "RDS username or password is missing"
DB_USERNAME=$(echo "$SECRET_JSON" | jq -r ".username")
DB_PASSWORD=$(echo "$SECRET_JSON" | jq -r ".password")

if [ -z "$DB_USERNAME" ] || [ "$DB_USERNAME" = "null" ]; then
echo "RDS username is missing"
exit 1
fi

if [ -z "$DB_PASSWORD" ] || [ "$DB_PASSWORD" = "null" ]; then
echo "RDS password is missing"
exit 1
fi

MAIN_DB_JDBC_URL="jdbc:mysql://$RDS_HOST:$RDS_PORT/$MAIN_DB_NAME?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&characterEncoding=UTF-8"

SAMPLE_DB_JDBC_URL="jdbc:mysql://$RDS_HOST:$RDS_PORT/$SAMPLE_DB_NAME?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&characterEncoding=UTF-8"

echo "::add-mask::$DB_USERNAME"
echo "::add-mask::$DB_PASSWORD"
echo "::add-mask::$MAIN_DB_JDBC_URL"
echo "::add-mask::$SAMPLE_DB_JDBC_URL"

kubectl create secret generic backend-rds-secret -n "$NAMESPACE" --from-literal=MAIN_DB_JDBC_URL="$MAIN_DB_JDBC_URL" --from-literal=MAIN_DB_USERNAME="$DB_USERNAME" --from-literal=MAIN_DB_PASSWORD="$DB_PASSWORD" --from-literal=SAMPLE_DB_JDBC_URL="$SAMPLE_DB_JDBC_URL" --from-literal=SAMPLE_DB_USERNAME="$DB_USERNAME" --from-literal=SAMPLE_DB_PASSWORD="$DB_PASSWORD" --from-literal=JWT_SECRET_KEY="$JWT_SECRET_KEY" --dry-run=client -o yaml | kubectl apply -f -
kubectl create secret generic backend-rds-secret \
--namespace "$NAMESPACE" \
--from-literal=MAIN_DB_JDBC_URL="$MAIN_DB_JDBC_URL" \
--from-literal=MAIN_DB_USERNAME="$DB_USERNAME" \
--from-literal=MAIN_DB_PASSWORD="$DB_PASSWORD" \
--from-literal=SAMPLE_DB_JDBC_URL="$SAMPLE_DB_JDBC_URL" \
--from-literal=SAMPLE_DB_USERNAME="$DB_USERNAME" \
--from-literal=SAMPLE_DB_PASSWORD="$DB_PASSWORD" \
--from-literal=JWT_SECRET_KEY="$JWT_SECRET_KEY" \
--from-literal=REDIS_HOST="$REDIS_HOST" \
--from-literal=REDIS_PORT="$REDIS_PORT" \
--from-literal=KAFKA_BOOTSTRAP_SERVER_1="$KAFKA_BOOTSTRAP_SERVER_1" \
--from-literal=KAFKA_BOOTSTRAP_SERVER_2="$KAFKA_BOOTSTRAP_SERVER_2" \
--dry-run=client \
-o yaml |
kubectl apply -f -

- name: Update backend image in GitOps repository
env:
IMAGE_URI: ${{ steps.build-image.outputs.image_uri }}
run: |
set -euo pipefail

MANIFEST="infra/${INFRA_MANIFEST_PATH}"

test -f "$MANIFEST"
if [ ! -f "$MANIFEST" ]; then
echo "Manifest file not found: $MANIFEST"
exit 1
fi

IMAGE_TAG="${IMAGE_URI##*:}"

sed -i -E \
"s|^([[:space:]]*)newTag:.*$|\1newTag: ${IMAGE_TAG}|" \
"$MANIFEST"

grep -n "newTag:" "$MANIFEST"
IMAGE_NAME="${IMAGE_URI%:*}"
TEMP_FILE="${MANIFEST}.tmp"

echo "Manifest: $MANIFEST"
echo "Image name: $IMAGE_NAME"
echo "Image tag: $IMAGE_TAG"

awk \
-v image_name="$IMAGE_NAME" \
-v image_tag="$IMAGE_TAG" \
'
BEGIN {
in_target = 0
updated = 0
}

{
if ($1 == "-" && $2 == "name:") {
in_target = ($3 == image_name)
}

if (in_target && $1 == "newTag:") {
match($0, /^[[:space:]]*/)
indent = substr($0, 1, RLENGTH)

print indent "newTag: " image_tag

updated = 1
in_target = 0
next
}

print
}

END {
if (!updated) {
print "Backend image block or newTag was not found" > "/dev/stderr"
exit 42
}
}
' \
"$MANIFEST" > "$TEMP_FILE"

mv "$TEMP_FILE" "$MANIFEST"

echo "Updated backend image:"
grep -n -A 2 -B 1 "$IMAGE_NAME" "$MANIFEST"

cd infra

Expand All @@ -160,12 +335,18 @@ jobs:
exit 0
fi

git commit -m "chore(backend): deploy ${GITHUB_REF_NAME}-${GITHUB_SHA::12}"
git diff --cached

git commit \
-m "chore(backend): deploy ${GITHUB_REF_NAME}-${GITHUB_SHA::12}"

for ATTEMPT in 1 2 3; do
git pull --rebase origin "$GITHUB_REF_NAME"
echo "GitOps push attempt: $ATTEMPT"

git pull --rebase origin "$INFRA_BRANCH"

if git push origin "HEAD:$GITHUB_REF_NAME"; then
if git push origin "HEAD:$INFRA_BRANCH"; then
echo "GitOps image update pushed successfully"
exit 0
fi

Expand Down
Loading
Loading