Skip to content

Commit e8ace4d

Browse files
committed
fix: 마이그레이션 클러스터 사용하게 수정, 후처리 스크립트 호출 수정
1 parent 221aaf9 commit e8ace4d

File tree

1 file changed

+63
-9
lines changed

1 file changed

+63
-9
lines changed

.github/workflows/deploy-migration-test.yml

Lines changed: 63 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,24 @@ jobs:
166166
- name: Create New Task Definition with Updated Image
167167
id: update-task-def
168168
run: |
169-
TASK_DEF=$(aws ecs describe-task-definition --task-definition "${{ steps.get-prod-info.outputs.task_definition_arn }}" --query "taskDefinition")
170-
169+
TASK_DEF=$(aws ecs describe-task-definition \
170+
--task-definition "${{ steps.get-prod-info.outputs.task_definition_arn }}" \
171+
--query "taskDefinition")
172+
171173
NEW_TASK_DEF=$(echo "$TASK_DEF" | jq --arg IMAGE "${{ steps.build-image.outputs.image_uri }}" '
174+
.family = "api-migration" |
172175
.containerDefinitions[0].image = $IMAGE |
173-
del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .placementConstraints, .compatibilities, .registeredAt, .registeredBy)
176+
(.containerDefinitions[0].command) |= map(
177+
if test("prod$") then sub("prod$"; "migration") else . end
178+
) |
179+
del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .placementConstraints,
180+
.compatibilities, .registeredAt, .registeredBy)
174181
')
175-
176-
NEW_TASK_DEF_ARN=$(aws ecs register-task-definition --cli-input-json "$NEW_TASK_DEF" --query "taskDefinition.taskDefinitionArn" --output text)
182+
183+
NEW_TASK_DEF_ARN=$(aws ecs register-task-definition \
184+
--cli-input-json "$NEW_TASK_DEF" \
185+
--query "taskDefinition.taskDefinitionArn" \
186+
--output text)
177187
echo "new_task_definition_arn=$NEW_TASK_DEF_ARN" >> $GITHUB_OUTPUT
178188
179189
- name: Invoke Pre-processing Lambda
@@ -191,10 +201,21 @@ jobs:
191201
run: |
192202
MIGRATION_RDS_URL="jdbc:mysql://${{ env.CLONED_RDS_ADDRESS }}/eatda?useUnicode=true&characterEncoding=UTF-8"
193203
TASK_ARN=$(aws ecs run-task \
194-
--cluster ${{ env.PROD_ECS_CLUSTER_NAME }} \
204+
--cluster migration-cluster \
195205
--task-definition ${{ steps.update-task-def.outputs.new_task_definition_arn }} \
196206
--launch-type EC2 \
197-
--overrides '{ "containerOverrides": [ { "name": "${{ steps.get-prod-info.outputs.container_name }}", "environment": [ { "name": "SPRING_PROFILES_ACTIVE", "value": "migration" }, { "name": "MIGRATION_RDS_URL", "value": "'"${MIGRATION_RDS_URL}"'" }, { "name": "MIGRATION_S3_BUCKET", "value": "${{ env.CLONED_S3_BUCKET_NAME }}" } ] } ] }' \
207+
--overrides '{
208+
"containerOverrides": [
209+
{
210+
"name": "${{ steps.get-prod-info.outputs.container_name }}",
211+
"environment": [
212+
{ "name": "SPRING_PROFILES_ACTIVE", "value": "migration" },
213+
{ "name": "MIGRATION_RDS_URL", "value": "'"${MIGRATION_RDS_URL}"'" },
214+
{ "name": "MIGRATION_S3_BUCKET", "value": "${{ env.CLONED_S3_BUCKET_NAME }}" }
215+
]
216+
}
217+
]
218+
}' \
198219
--query "tasks[0].taskArn" --output text)
199220
echo "task_arn=$TASK_ARN" >> $GITHUB_OUTPUT
200221
if [ -z "$TASK_ARN" ] || [ "$TASK_ARN" = "None" ]; then
@@ -203,11 +224,44 @@ jobs:
203224
204225
- name: Wait for ECS Task to Complete
205226
run: |
206-
aws ecs wait tasks-stopped --cluster ${{ env.PROD_ECS_CLUSTER_NAME }} --tasks ${{ steps.ecs-run-task.outputs.task_arn }}
227+
aws ecs wait tasks-stopped --cluster migration-cluster --tasks ${{ steps.ecs-run-task.outputs.task_arn }}
228+
229+
- name: Get DB Credentials from SSM
230+
id: get-db-creds
231+
run: |
232+
DB_USER=$(aws ssm get-parameter --name "/prod/MYSQL_USER_NAME" --with-decryption --query "Parameter.Value" --output text)
233+
DB_PASS=$(aws ssm get-parameter --name "/prod/MYSQL_PASSWORD" --with-decryption --query "Parameter.Value" --output text)
234+
235+
echo "::add-mask::$DB_USER"
236+
echo "::add-mask::$DB_PASS"
237+
238+
echo "DB_USER=$DB_USER" >> $GITHUB_ENV
239+
echo "DB_PASS=$DB_PASS" >> $GITHUB_ENV
207240
208241
- name: Invoke Post-processing Lambda
209242
run: |
210-
aws lambda invoke --function-name ${{ env.LAMBDA_FUNCTION_NAME }} --payload '{"task": "postprocess"}' response.json
243+
PAYLOAD=$(jq -n \
244+
--arg task "postprocess" \
245+
--arg bucket "${{ env.CLONED_S3_BUCKET_NAME }}" \
246+
--arg db_endpoint "${{ env.CLONED_RDS_ADDRESS }}" \
247+
--arg db_username "${{ env.DB_USER }}" \
248+
--arg db_password "${{ env.DB_PASS }}" \
249+
'{
250+
task: $task,
251+
target_bucket_for_realignment: $bucket,
252+
db_endpoint: $db_endpoint,
253+
db_username: $db_username,
254+
db_password: $db_password
255+
}')
256+
257+
echo "Invoking Lambda with payload: $PAYLOAD"
258+
259+
aws lambda invoke \
260+
--function-name "${{ env.LAMBDA_FUNCTION_NAME }}" \
261+
--payload "$PAYLOAD" \
262+
--cli-binary-format raw-in-base64-out \
263+
response.json
264+
211265
212266
# notify:
213267
# name: Send Discord Notification (Migration)

0 commit comments

Comments
 (0)