Skip to content

배포 성공 or 실패 알림 추가 #53

배포 성공 or 실패 알림 추가

배포 성공 or 실패 알림 추가 #53

Workflow file for this run

name: Deploy to EC2
on:
push:
branches: [ "main", "test/deploy" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Docker Build
run: docker build -t eightyage .
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
aws-region: ap-northeast-2
- name: ECR Login
run: |
aws ecr get-login-password | \
docker login --username AWS --password-stdin ${{ secrets.ECR_URI }}
- name: Docker Images Check
run: docker images
- name: ECR Push
run: |
docker tag eightyage:latest ${{ secrets.ECR_URI }}
docker push ${{ secrets.ECR_URI }}
- name: Deploy on EC2
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
envs: ECR_URI,DB_URL,DB_USER,DB_PASSWORD,JWT_SECRET_KEY,AWS_ACCESS_KEY,AWS_SECRET_KEY,SPRING_DATA_REDIS_HOST
script: |
export ECR_URI=${{ secrets.ECR_URI }}
export DB_URL=${{ secrets.DB_URL }}
export DB_USER=${{ secrets.DB_USER }}
export DB_PASSWORD=${{ secrets.DB_PASSWORD }}
export JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}
export AWS_ACCESS_KEY=${{ secrets.AWS_ACCESS_KEY }}
export AWS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }}
export SPRING_DATA_REDIS_HOST=${{ secrets.REDIS_HOST }}
docker ps -q --filter ancestor=$ECR_URI | xargs -r docker stop
docker ps -aq --filter ancestor=$ECR_URI | xargs -r docker rm
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin $ECR_URI
docker pull $ECR_URI
docker run -d -p 8080:8080 \
-e DB_URL=$DB_URL \
-e DB_USER=$DB_USER \
-e DB_PASSWORD=$DB_PASSWORD \
-e JWT_SECRET_KEY=$JWT_SECRET_KEY \
-e AWS_ACCESS_KEY=$AWS_ACCESS_KEY \
-e AWS_SECRET_KEY=$AWS_SECRET_KEY \
-e SPRING_DATA_REDIS_HOST=$SPRING_DATA_REDIS_HOST \
$ECR_URI
- name: Health Check
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.EC2_HOST }}
username: ubuntu
key: ${{ secrets.EC2_SSH_KEY }}
script: |
for i in {1..10}; do
echo "⏳ Health check attempt $i..."
if curl -f http://localhost:8080/actuator/health; then
echo "✅ Health check succeeded!"
exit 0
fi
sleep 5
done
echo "❌ Health check failed after multiple attempts"
exit 1
- name: Notify Slack - 배포 성공
if: success()
run: |
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"✅ *배포 성공!* 🎉\n브랜치: `${{ github.ref_name }}`"}' \
${{ secrets.SLACK_WEBHOOK_URL }}
- name: Notify Slack - 배포 실패
if: failure()
run: |
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"❌ *배포 실패!* 🔥 확인이 필요합니다.\n브랜치: `${{ github.ref_name }}`"}' \
${{ secrets.SLACK_WEBHOOK_URL }}