Skip to content

Commit

Permalink
[BE] refactor: ec2 배포 명령어 추가 (#24)
Browse files Browse the repository at this point in the history
Signed-off-by: EunJiJung <[email protected]>
  • Loading branch information
bianbbc87 committed Feb 9, 2025
1 parent d42b3e8 commit 4361565
Show file tree
Hide file tree
Showing 6 changed files with 163 additions and 5 deletions.
93 changes: 92 additions & 1 deletion .github/actions/ecr-push/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,28 @@ inputs:
aws_secret_access_key:
description: "AWS Secret Access Key"
required: true
aws_region:
description: "AWS ECR region"
required: true
ecr_uri:
description: "AWS ECR uri"
required: true
ec2_ip:
description: "AWS EC2 public ip"
required: true
ec2_username:
description: "AWS EC2 usename"
required: true
ec2_ssh_key:
description: "AWS EC2 ssh key"
required: true
container_name:
description: "AWS EC2 container name"
required: true
container_port:
description: "AWS EC2 container port"
required: true


runs:
using: "composite"
Expand Down Expand Up @@ -59,4 +81,73 @@ runs:
echo "Pushing image to Amazon ECR..."
docker push $FULL_ECR_PATH:$IMAGE_TAG
echo "Build & Push completed!"
echo "Build & Push completed!"
- name: EC2에서 ECR에 로그인하기
uses: appleboy/ssh-action@master
with:
host: ${{ inputs.EC2_IP }}
username: ${{ inputs.EC2_USERNAME }}
key: ${{ inputs.EC2_SSH_KEY }}
script: |
aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | sudo docker login --username AWS --password-stdin ${{ inputs.ECR_URI }}
- name: 기존 EC2에서 실행중인 컨테이너 종료
uses: appleboy/ssh-action@master
with:
host: ${{ inputs.EC2_IP }}
username: ${{ inputs.EC2_USERNAME }}
key: ${{ inputs.EC2_SSH_KEY }}
script: |
sudo docker ps -q | xargs -r docker stop
- name: 기존 EC2에 존재하는 모든 컨테이너 삭제
uses: appleboy/ssh-action@master
with:
host: ${{ inputs.EC2_IP }}
username: ${{ inputs.EC2_USERNAME }}
key: ${{ inputs.EC2_SSH_KEY }}
script: |
sudo docker ps -asq | xargs -r docker rm
- name: 기존 EC2에 저장되어있는 이미지 삭제
uses: appleboy/ssh-action@master
with:
host: ${{ inputs.EC2_IP }}
username: ${{ inputs.EC2_USERNAME }}
key: ${{ inputs.EC2_SSH_KEY }}
script: |
sudo docker images -q | xargs -r docker rmi
- name: EC2에서 도커에서 사용하지 않는 자원 삭제처리
uses: appleboy/ssh-action@master
with:
host: ${{ inputs.EC2_IP }}
username: ${{ inputs.EC2_USERNAME }}
key: ${{ inputs.EC2_SSH_KEY }}
script: |
sudo docker system prune -af
- name: EC2에서 도커 이미지를 가져오기
uses: appleboy/ssh-action@master
with:
host: ${{ inputs.EC2_IP }}
username: ${{ inputs.EC2_USERNAME }}
key: ${{ inputs.EC2_SSH_KEY }}
script: |
sudo docker pull ${{ inputs.ECR_URI }}/${{ inputs.namespace }}/${{ inputs.ecr_repo }}:${{ github.sha }}
- name: ECR에서 불러온 이미지를 도커에서 실행
uses: appleboy/ssh-action@master
with:
host: ${{ inputs.EC2_IP }}
username: ${{ inputs.EC2_USERNAME }}
key: ${{ inputs.EC2_SSH_KEY }}
script: |
sudo docker stop ${{ inputs.container_name }} || true
sudo docker rm ${{ inputs.container_name }} || true
if [ "${{ inputs.container_port }}" -eq "0" ]; then
sudo docker run -d --name ${{ inputs.container_name }} ${{ inputs.ECR_URI }}:${{ github.sha }}
else
sudo docker run -d --name ${{ inputs.container_name }} -p ${{ inputs.container_port }}:${{ inputs.container_port }} ${{ inputs.ECR_URI }}:${{ github.sha }}
fi
70 changes: 67 additions & 3 deletions .github/workflows/be-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,14 @@ jobs:
ecr_repo: "discovery"
aws_access_key_id: ${{ secrets.AWS_MSA_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_MSA_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_MSA_ECR_URI }}
ec2_ip: ${{ secrets.AWS_DISCOVERY_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_MSA_SSH_KEY }}
container_name: "discovery-container"
container_port: ${{ secrets.DISCOVERY_PORT}}


build-msa-config:
needs: check-folder-change
Expand All @@ -205,7 +213,14 @@ jobs:
folder: "src/backend/config-server"
ecr_repo: "config"
aws_access_key_id: ${{ secrets.AWS_MSA_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_MSA_SECRET_ACCESS_KEY }}
aws_secret_access_key: ${{ secrets.AWS_MSA_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_MSA_ECR_URI }}
ec2_ip: ${{ secrets.AWS_CONFIG_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_MSA_SSH_KEY }}
container_name: "config-container"
container_port: ${{ secrets.CONFIG_PORT}}

build-msa-apigateway:
needs: check-folder-change
Expand All @@ -224,6 +239,13 @@ jobs:
ecr_repo: "apigateway"
aws_access_key_id: ${{ secrets.AWS_MSA_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_MSA_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }}
ec2_ip: ${{ secrets.AWS_APIGATEWAY_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_MSA_SSH_KEY }}
container_name: "apigateway-container"
container_port: ${{ secrets.APIGATEWAY_PORT}}

# Service 빌드 및 푸시
build-service-user:
Expand All @@ -243,6 +265,13 @@ jobs:
ecr_repo: "user"
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }}
ec2_ip: ${{ secrets.AWS_USER_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }}
container_name: "user-container"
container_port: "0"

build-service-chat:
needs: check-folder-change
Expand All @@ -260,7 +289,14 @@ jobs:
folder: "src/backend/chat-server"
ecr_repo: "chat"
aws_access_key_id: ${{ secrets.AWS_CHAT_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_CHAT_SECRET_ACCESS_KEY }}
aws_secret_access_key: ${{ secrets.AWS_CHAT_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_CHAT_ECR_URI }}
ec2_ip: ${{ secrets.AWS_CHAT_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_CHAT_SSH_KEY }}
container_name: "chat-container"
container_port: "0"

build-service-state:
needs: check-folder-change
Expand All @@ -279,6 +315,13 @@ jobs:
ecr_repo: "state"
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }}
ec2_ip: ${{ secrets.AWS_STATE_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }}
container_name: "state-container"
container_port: "0"

build-service-guild:
needs: check-folder-change
Expand All @@ -297,6 +340,13 @@ jobs:
ecr_repo: "guild"
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }}
ec2_ip: ${{ secrets.AWS_GUILD_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }}
container_name: "guild-container"
container_port: "0"

build-service-notification:
needs: check-folder-change
Expand All @@ -315,6 +365,13 @@ jobs:
ecr_repo: "notification"
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }}
ec2_ip: ${{ secrets.AWS_NOTIFICATION_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }}
container_name: "notification-container"
container_port: "0"

build-service-signaling:
needs: check-folder-change
Expand All @@ -332,4 +389,11 @@ jobs:
folder: "src/backend/signaling-server"
ecr_repo: "media"
aws_access_key_id: ${{ secrets.AWS_SERVICE_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }}
aws_secret_access_key: ${{ secrets.AWS_SERVICE_SECRET_ACCESS_KEY }}
aws_region: ${{ secrets.AWS_ECR_REGION }}
ecr_uri: ${{ secrets.AWS_SERVICE_ECR_URI }}
ec2_ip: ${{ secrets.AWS_SIGNALING_EC2_IP }}
ec2_username: ${{ secrets.AWS_EC2_USERNAME }}
ec2_ssh_key: ${{ secrets.AWS_SERVICE_SSH_KEY }}
container_name: "signaling-container"
container_port: "0"
1 change: 1 addition & 0 deletions src/backend/apigateway-server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,4 @@ dependencyManagement {
tasks.named('test') {
useJUnitPlatform()
}
// test
1 change: 1 addition & 0 deletions src/backend/config-server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,4 @@ dependencyManagement {
tasks.named('test') {
useJUnitPlatform()
}
// test
1 change: 1 addition & 0 deletions src/backend/discovery-server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,4 @@ dependencyManagement {
tasks.named('test') {
useJUnitPlatform()
}
// test
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class MemberCommandController {
private final DeleteUserUseCase DeleteUserUseCase;
private final UpdateDeviceTokenUseCase UpdateDeviceTokenUseCase;

// 사소한 주석 추가 테스트테스트용
// 사소한 주석 추가 테스트테스트용 용용용가리
/**
* 1.0 임시 회원가입
*/
Expand Down

0 comments on commit 4361565

Please sign in to comment.