Skip to content

CD 데모 영상을 위한 TEST #40

CD 데모 영상을 위한 TEST

CD 데모 영상을 위한 TEST #40

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_ACCESS_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_ACCESS_KEY
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_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}
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_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
$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