Skip to content

api-server ci/cd ๊ตฌ์ถ•-56 #14

api-server ci/cd ๊ตฌ์ถ•-56

api-server ci/cd ๊ตฌ์ถ•-56 #14

name: api server ๋งŒ Amazon ECS ๋ฐฐํฌ
on:
push:
branches: [ "main" ]
paths:
- 'api-server/**'
- '.github/workflows/deploy-api-server.yml'
permissions:
contents: read
env:
AWS_REGION: ap-northeast-2
CONTAINER_NAME: api-container
ECR_REPOSITORY: dulakreposiotry
ECS_CLUSTER: victorious-elephant-mrbysh
ECS_SERVICE: api-server-service-yxo3psrc
ECS_TASK_DEFINITION: api-server/deullak-api-task-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 ./api-server/src/main/resources
echo "${{ secrets.APPLICATION_YML_API }}" > ./api-server/src/main/resources/application.yml
- name: Gradle ์‹คํ–‰ ๊ถŒํ•œ ๋ถ€์—ฌ
run: chmod +x ./gradlew
- name: Gradle ๋นŒ๋“œ (api-server๋งŒ)
run: ./gradlew :api-server:clean :api-server:build -x test
- name: JAR ํŒŒ์ผ ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ
run: |
echo "JAR ํŒŒ์ผ ํ™•์ธ:"
ls -al ./api-server/build/libs
if [ ! -f ./api-server/build/libs/api-server.jar ]; then
echo "JAR ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค!"
exit 1
fi
- 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 api-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