Skip to content

Feat/chat group chat advancement : STOMP Chat DB 저장 도입 (#110) #80

Feat/chat group chat advancement : STOMP Chat DB 저장 도입 (#110)

Feat/chat group chat advancement : STOMP Chat DB 저장 도입 (#110) #80

Workflow file for this run

name: Deploy 'prod' to Amazon EC2
on:
push:
branches:
- prod
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
environment: prod
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION_CODE }}
- name: Upload to AWS ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Build, tag, and push image to ECR
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPOSITORY }}
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG -t $ECR_REGISTRY/$ECR_REPOSITORY:latest .
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
- name: Deploy to EC2 Instance
uses: appleboy/[email protected]
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPOSITORY }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION_CODE: ${{ secrets.AWS_REGION_CODE }}
AWS_S3_BUCKET_NAME: ${{ secrets.AWS_S3_BUCKET_NAME }}
DB_HOST: ${{ secrets.DB_HOST }}
DB_PORT: ${{ secrets.DB_PORT }}
DB_NAME: ${{ secrets.DB_NAME }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
JWT_SECRET: ${{ secrets.JWT_SECRET }}
GOOGLE_EMAIL: ${{ secrets.GOOGLE_EMAIL }}
GOOGLE_APP_PASSWORD: ${{ secrets.GOOGLE_APP_PASSWORD }}
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
port: ${{ secrets.EC2_SSH_PORT }}
envs: ECR_REGISTRY, ECR_REPOSITORY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION_CODE, AWS_S3_BUCKET_NAME, DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD, JWT_SECRET, GOOGLE_EMAIL, GOOGLE_APP_PASSWORD
script: |
sudo rm -rf .aws
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
aws configure set default.region $AWS_REGION_CODE
aws configure set default.ouput json
rm env.prod
touch env.prod
echo "ECR_REGISTRY=$ECR_REGISTRY" >> env.prod
echo "ECR_REPOSITORY=$ECR_REPOSITORY" >> env.prod
echo "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" >> env.prod
echo "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" >> env.prod
echo "AWS_REGION_CODE=$AWS_REGION_CODE" >> env.prod
echo "AWS_S3_BUCKET_NAME=$AWS_S3_BUCKET_NAME" >> env.prod
echo "DB_HOST=$DB_HOST" >> env.prod
echo "DB_PORT=$DB_PORT" >> env.prod
echo "DB_NAME=$DB_NAME" >> env.prod
echo "DB_USER=$DB_USER" >> env.prod
echo "DB_PASSWORD=$DB_PASSWORD" >> env.prod
echo "JWT_SECRET=$JWT_SECRET" >> env.prod
echo "GOOGLE_EMAIL=$GOOGLE_EMAIL" >> env.prod
echo "GOOGLE_APP_PASSWORD=$GOOGLE_APP_PASSWORD" >> env.prod
docker stop myapp || true
docker rm myapp || true
docker rmi -f $(docker images -aq)
aws ecr get-login-password --region $AWS_REGION_CODE | docker login --username AWS --password-stdin $ECR_REGISTRY
docker pull $ECR_REGISTRY/$ECR_REPOSITORY:latest
docker run -d --env-file ./env.prod -p 80:8080 --name myapp $ECR_REGISTRY/$ECR_REPOSITORY:latest
- name: Check Container Status
uses: appleboy/[email protected]
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
port: ${{ secrets.EC2_SSH_PORT }}
script: |
if docker ps | grep -w "myapp"; then
echo "Container 'myapp' is running."
else
echo "Server check: Container 'myapp' is not running."
docker logs myapp
exit 1
fi