CD 데모 영상을 위한 TEST #40
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |