Skip to content

Update README.md

Update README.md #63

Workflow file for this run

name: Deploy to EC2
on:
push:
branches: [ main ]
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": "โœ… *๋ฐฐํฌ ์„ฑ๊ณต!* ๐ŸŽ‰",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*โœ… ๋ฐฐํฌ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค!*\n\n*๋ธŒ๋žœ์น˜:* `${{ github.ref_name }}`\n<http://3.39.158.229:8080/actuator/health|๐Ÿ”— ๋ฐฐํฌ๋œ ์„œ๋น„์Šค ์ƒํƒœ ๋ณด๊ธฐ>"
}
}
]
}' \
${{ secrets.SLACK_WEBHOOK_URL }}
- name: Notify Slack - ๋ฐฐํฌ ์‹คํŒจ
if: failure()
run: |
curl -X POST -H 'Content-type: application/json' \
--data '{
"text": "โŒ *๋ฐฐํฌ ์‹คํŒจ!* ๐Ÿ”ฅ",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*โŒ ๋ฐฐํฌ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค!*\n\n*๋ธŒ๋žœ์น˜:* `${{ github.ref_name }}`\n<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}|๐Ÿ”— ์‹คํŒจ ๋กœ๊ทธ ํ™•์ธํ•˜๊ธฐ>"
}
}
]
}' \
${{ secrets.SLACK_WEBHOOK_URL }}