Skip to content

Merge pull request #179 from dnd-side-project/dev #117

Merge pull request #179 from dnd-side-project/dev

Merge pull request #179 from dnd-side-project/dev #117

name: main-server๋งŒ Amazon ECS ๋ฐฐํฌ
on:
push:
branches: [ "main" ]
paths:
- 'main-server/**'
- '.github/workflows/deploy-main-server.yml'
permissions:
contents: read
env:
AWS_REGION: ap-northeast-2
CONTAINER_NAME: main-container
ECR_REPOSITORY: dulakreposiotry
ECS_CLUSTER: joyful-eagle-kco6mk
ECS_SERVICE: main-server-service-z4k60m2s
ECS_TASK_DEFINITION: main-server/main-server-revision1.json
IMAGE_TAG: latest
jobs:
deploy:
name: Amazon ECS์— ๋ฐฐํฌ
runs-on: ubuntu-latest
steps:
- name: ์†Œ์Šค ์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ
uses: actions/checkout@v3
- name: JDK 21 ์„ค์ •
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
- name: application.yml ์ƒ์„ฑ
run: |
mkdir -p ./main-server/src/main/resources
echo "${{ secrets.APPLICATION_YML_MAIN }}" > ./main-server/src/main/resources/application.yml
- name: Gradle ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
run: chmod +x ./gradlew
- name: Gradle ๋นŒ๋“œ (main-server๋งŒ)
run: ./gradlew :main-server:clean :main-server:build -x test
- name: AWS ์ž๊ฒฉ ์ฆ๋ช… ๊ตฌ์„ฑ
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Amazon ECR ๋กœ๊ทธ์ธ
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ํ‘ธ์‹œ
run: |
cd main-server
docker build -t ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} .
docker push ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
- name: ECS ํƒœ์Šคํฌ ์ •์˜ ๋ Œ๋”๋ง
id: render-task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: ${{ env.ECS_TASK_DEFINITION }}
container-name: ${{ env.CONTAINER_NAME }}
image: ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
- name: ECS ์„œ๋น„์Šค์— ๋ฐฐํฌ
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.render-task-def.outputs.task-definition }}
service: ${{ env.ECS_SERVICE }}
cluster: ${{ env.ECS_CLUSTER }}
wait-for-service-stability: true