diff --git a/.github/actions/ecr-push/action.yml b/.github/actions/ecr-push/action.yml index d5a8f760..bbcd014c 100644 --- a/.github/actions/ecr-push/action.yml +++ b/.github/actions/ecr-push/action.yml @@ -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" @@ -59,4 +81,73 @@ runs: echo "Pushing image to Amazon ECR..." docker push $FULL_ECR_PATH:$IMAGE_TAG - echo "Build & Push completed!" \ No newline at end of file + 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 diff --git a/.github/workflows/be-main.yml b/.github/workflows/be-main.yml index e042020f..d048cd96 100644 --- a/.github/workflows/be-main.yml +++ b/.github/workflows/be-main.yml @@ -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 @@ -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 @@ -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: @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 }} \ No newline at end of file + 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" \ No newline at end of file diff --git a/src/backend/apigateway-server/build.gradle b/src/backend/apigateway-server/build.gradle index ca11338a..130d56f8 100644 --- a/src/backend/apigateway-server/build.gradle +++ b/src/backend/apigateway-server/build.gradle @@ -59,3 +59,4 @@ dependencyManagement { tasks.named('test') { useJUnitPlatform() } +// test \ No newline at end of file diff --git a/src/backend/config-server/build.gradle b/src/backend/config-server/build.gradle index ef60d531..4e3220d5 100644 --- a/src/backend/config-server/build.gradle +++ b/src/backend/config-server/build.gradle @@ -41,3 +41,4 @@ dependencyManagement { tasks.named('test') { useJUnitPlatform() } +// test \ No newline at end of file diff --git a/src/backend/discovery-server/build.gradle b/src/backend/discovery-server/build.gradle index 6755afca..a0115ab5 100644 --- a/src/backend/discovery-server/build.gradle +++ b/src/backend/discovery-server/build.gradle @@ -37,3 +37,4 @@ dependencyManagement { tasks.named('test') { useJUnitPlatform() } +// test diff --git a/src/backend/user-server/src/main/java/com/asyncgate/user_server/controller/MemberCommandController.java b/src/backend/user-server/src/main/java/com/asyncgate/user_server/controller/MemberCommandController.java index 7405f03f..b6a0d2c6 100644 --- a/src/backend/user-server/src/main/java/com/asyncgate/user_server/controller/MemberCommandController.java +++ b/src/backend/user-server/src/main/java/com/asyncgate/user_server/controller/MemberCommandController.java @@ -22,7 +22,7 @@ public class MemberCommandController { private final DeleteUserUseCase DeleteUserUseCase; private final UpdateDeviceTokenUseCase UpdateDeviceTokenUseCase; - // 사소한 주석 추가 테스트테스트용 + // 사소한 주석 추가 테스트테스트용 용용용가리 /** * 1.0 임시 회원가입 */