Skip to content

Conversation

@hyeminleeee
Copy link
Contributor

📌 PR 개요

  • ECR 이미지 푸시 시 ECS + EC2 모두 자동 배포되도록 CI/CD 파이프라인 개선

🔍 변경 사항

  • ecr.yml
    • 기존 deploy-ecs 이벤트 전송 로직에 deploy-ec2 이벤트 전송 추가
    • Summary 단계에 EC2 트리거 전송 결과 표시
  • ec2.yml
    • repository_dispatch: deploy-ec2 이벤트 발생 시 실행되는 워크플로우 신규 작성
    • AWS SSM을 통해 EC2 인스턴스에 원격 접속하여 롤링 배포 수행
    • 새 컨테이너 기동 후 헬스체크(예: /actuator/health) 성공 시 기존 컨테이너 종료 → 새 컨테이너 승격
    • ECS 배포와 충돌하지 않도록 concurrency group을 ec2-deploy로 분리

🧪 테스트 방법

1.develop 브랜치에 커밋을 push하여 ecr.yml 실행
2.GitHub Actions에서 ecs.yml, ec2.yml 각각 실행되는지 확인
3.EC2 배포 성공 시, 새 컨테이너가 정상 기동되고 헬스체크 OK 후 기존 컨테이너가 종료되는지 확인

✅ 체크리스트

  • 코드가 정상적으로 동작함
  • 기존 기능에 문제가 없음
  • 코드 컨벤션(Prettier/ESLint, Checkstyle 등)을 통과함
  • 필요 시 문서 업데이트 완료
  • 관련 이슈에 연결함

📎 참고 이슈

Ref: #68

@hyeminleeee hyeminleeee requested a review from a team August 17, 2025 01:59
@Mminzy22 Mminzy22 merged commit 52d639a into develop Aug 17, 2025
1 check passed
@Mminzy22 Mminzy22 deleted the feature/ec2-deploy-add branch August 17, 2025 02:01
github-actions bot pushed a commit that referenced this pull request Aug 17, 2025
## 1.0.0 (2025-08-17)

* "🔧 config: SecurityConfig, WebConfig @configuration 추가 ([0f7611c](0f7611c))
* ♻️ 코드 포맷팅 적용 (spotless) ([20f9ebe](20f9ebe))
* ✨feat(config):SwaggerConfig 추가 ([961c8b1](961c8b1))
* 🏗️ setup: ecr 레포지토리 도커 이미지 빌드 후 배포 ([86db817](86db817))
* 🏗️ setup: ecr, ecs repository_dispatch 방식으로 변경 (트리거) ([2eb32ac](2eb32ac))
* 🏗️ setup: main 브랜치 작업전 develop 브랜치 테스트 ([f4ef871](f4ef871))
* 🏗️ setup: package.json 및 package-lock.json에 semantic-release 관련 패키지 추가 및 버전 업데이트 ([97a8b7a](97a8b7a))
* 🏗️ setup: 개발 환경 초기 설정 스크립트 추가 ([37cb617](37cb617))
* 🏗️ setup: 이미지 빌드를 위한 docker file 추가 ([618745f](618745f))
* 🏗️ setup: 태스크 정의 생성 후 서비스에 태스크 적용 ecs 배포 ([87997a7](87997a7))
* 🏗️ setup: 프로젝트 초기 설정(close #1) ([46de305](46de305)), closes [#1](#1)
* 🔧 config: .gitignore `!` 예외 처리 하단으로 위치 변경 ([bb1dfdc](bb1dfdc))
* 🔧 config: .gitignore 파일 생성 및 규칙 추가 ([088cfe9](088cfe9))
* 🔧 config: dev, prod 환경별 Spring 설정 파일 분리 적용 ([12419d0](12419d0))
* 🔧 config: gradle wrapper 복구 및 .gitignore 예외 처리 ([5442a1c](5442a1c))
* 🔧 config: pre-commit 및 commit-msg 훅 설정 ([dcf9cf3](dcf9cf3)), closes [#4](#4)
* 🔧 config: Swagger 사용 및 Security 설정을 위한 의존성 추가 ([136c5f3](136c5f3))
* 🔧 config: 환경별 CORS 허용 Origin 설정을 yml에서 관리하도록 변경 ([e803a55](e803a55))
* 🔧 config(actions): 시맨틱 릴리즈 안정화를 위해 checkout에 ref=${{ github.sha }} 및 fetch-tags:true 추가 ([b57cdcc](b57cdcc))
* 🔧 config(ci): GitHu¤정 추가 (build, lint 포함) ([5577fbd](5577fbd))
* 🔧 config(cins CI 설정 ([5d465bf](5d465bf))
* 🔧 config(gha): 시맨틱 릴리즈 워크플로 추가 ([97525ed](97525ed))
* 🔧 config(husky): pre-commit 파일 인코딩 문제 수정 ([b4b7d74](b4b7d74))
* 🔧 config(script): pip install 후 환경 즉시 반영하도록 쉘 스크립트 수정 ([00dcc8a](00dcc8a))
* Initial commit ([4e8cd35](4e8cd35))
* Merge branch 'develop' of https://github.com/next-engineer/next-kickytime-server into develop ([c94c363](c94c363))
* Merge branch 'develop' of https://github.com/next-engineer/next-kickytime-server into feature/18-ci ([ef53ee2](ef53ee2))
* Merge pull request #10 from next-engineer/feature/3-create-users-table ([24b4030](24b4030)), closes [#10](#10)
* Merge pull request #15 from next-engineer/feature/14-config-base ([4291753](4291753)), closes [#15](#15)
* Merge pull request #19 from next-engineer/feature/12-match-entity-repo ([9e95a14](9e95a14)), closes [#19](#19)
* Merge pull request #20 from next-engineer/feature/16-user-entity-modify ([b188355](b188355)), closes [#20](#20)
* Merge pull request #22 from next-engineer/feature/18-ci ([4443765](4443765)), closes [#22](#22)
* Merge pull request #23 from next-engineer/feature/spotless-format-fix ([d3f7853](d3f7853)), closes [#23](#23)
* Merge pull request #24 from next-engineer/feature/update-script-env-reload ([1b37865](1b37865)), closes [#24](#24)
* Merge pull request #25 from next-engineer/feature/setup-husky-only ([a0cab85](a0cab85)), closes [#25](#25)
* Merge pull request #28 from next-engineer/feature/19-back-cognito-connect ([b57b419](b57b419)), closes [#28](#28)
* Merge pull request #29 from next-engineer/feature/11-match-participants-entity-repo ([caf6744](caf6744)), closes [#29](#29)
* Merge pull request #3 from next-engineer/feature/1-init-project ([106aa6d](106aa6d)), closes [#3](#3)
* Merge pull request #32 from next-engineer/feature/31-match-delete-api ([b86b125](b86b125)), closes [#32](#32)
* Merge pull request #33 from next-engineer/feature/27-user-sign-in-up ([dce3ef0](dce3ef0)), closes [#33](#33)
* Merge pull request #35 from next-engineer/feature/30-my-profile ([ce97a4c](ce97a4c)), closes [#35](#35)
* Merge pull request #42 from next-engineer/feature/36-match ([de8df1f](de8df1f)), closes [#42](#42)
* Merge pull request #44 from next-engineer/feature/37-match ([c1852a7](c1852a7)), closes [#44](#44)
* Merge pull request #45 from next-engineer/feature/38-match ([3fcc9d5](3fcc9d5)), closes [#45](#45)
* Merge pull request #46 from next-engineer/feature/39-match ([14d40c2](14d40c2)), closes [#46](#46)
* Merge pull request #47 from next-engineer/feature/43-my-profile-unit-test ([7f620e3](7f620e3)), closes [#47](#47)
* Merge pull request #49 from next-engineer/feature/48-createdat-dto-add ([865a023](865a023)), closes [#49](#49)
* Merge pull request #5 from next-engineer/feature/4-setup-precommit-commitmsg ([7260bb6](7260bb6)), closes [#5](#5)
* Merge pull request #52 from next-engineer/feature/40-match-me-api ([d74fcfc](d74fcfc)), closes [#52](#52)
* Merge pull request #54 from next-engineer/feature/41-match-delete-api-junit-test ([c8b3dc1](c8b3dc1)), closes [#54](#54)
* Merge pull request #55 from next-engineer/feature/update-application-yml ([ecf3cda](ecf3cda)), closes [#55](#55)
* Merge pull request #57 from next-engineer/feature/51-email-verified-add ([b20031f](b20031f)), closes [#57](#57)
* Merge pull request #59 from next-engineer/feature/57-cognito-backfill ([a166000](a166000)), closes [#59](#59)
* Merge pull request #60 from next-engineer/feature/add-docker-file ([c80d477](c80d477)), closes [#60](#60)
* Merge pull request #63 from next-engineer/feature/62-api-fix ([43e1fc5](43e1fc5)), closes [#63](#63)
* Merge pull request #64 from next-engineer/feature/61-ecr-ecs-deploy ([f1eea6c](f1eea6c)), closes [#64](#64)
* Merge pull request #66 from next-engineer/feature/semantic-release-setup ([d4dcb39](d4dcb39)), closes [#66](#66)
* Merge pull request #67 from next-engineer/feature/61-ecr-ecs-deploy ([00af0ff](00af0ff)), closes [#67](#67)
* Merge pull request #69 from next-engineer/feature/ec2-deploy-add ([52d639a](52d639a)), closes [#69](#69)
* Merge pull request #70 from next-engineer/feature/add-actuator-health-endpoint ([83afbb5](83afbb5)), closes [#70](#70)
* Merge pull request #71 from next-engineer/feature/swagger-api-docs-endpoint ([207198b](207198b)), closes [#71](#71)
* Merge pull request #73 from next-engineer/feature/72-docs-readme-update ([53f4652](53f4652)), closes [#73](#73)
* Merge pull request #74 from next-engineer/feature/semantic-release-workflow ([b8b259f](b8b259f)), closes [#74](#74)
* Merge pull request #75 from next-engineer/feature/68-ec2-deploy-add ([464974b](464974b)), closes [#75](#75)
* Merge pull request #76 from next-engineer/feature/release-checkout-sha ([522bdf8](522bdf8)), closes [#76](#76)
* Merge pull request #77 from next-engineer/develop ([25c808c](25c808c)), closes [#77](#77)
* Merge pull request #8 from next-engineer/feature/2-add-env-config ([75da0a2](75da0a2)), closes [#8](#8)
* ✨  feat(user): userController 추가 ([91d3750](91d3750))
* ✨  feat(user): userRepository findByCognitoSub으로 변경 ([0c7d1d7](0c7d1d7))
* ✨ feat: build.gradle group 수정 ([11d99c3](11d99c3))
* ✨ feat: ec2.yml 추가 deploy test ([dfd2980](dfd2980))
* ✨ feat: ec2.yml, ecr.yml 수정 ([698a28e](698a28e))
* ✨ feat: 애플리케이션 모니터링을 위한 Spring Boot Actuator 추가 ([4a0811a](4a0811a))
* ✨ feat(auth): 나의 매치 목록 확인 controller 추가 ([6f55b9a](6f55b9a))
* ✨ feat(common): created_at, updated_at base entity에 생성 ([3b0bf59](3b0bf59))
* ✨ feat(match): jpql을 사용해서 나의 매칭 목록 조회 쿼리 작성 ([ea0681a](ea0681a))
* ✨ feat(match): match entity 어노테이션 추가 ([65333fc](65333fc))
* ✨ feat(match): match entity, repository 추가 ([a927345](a927345))
* ✨ feat(match): match entity, repository 추가 ([6abf3fe](6abf3fe))
* ✨ feat(match): match 경기 조회 구현 ([b7dc6ac](b7dc6ac))
* ✨ feat(match): MatchParticipant 레포지토리 생성 ([69ef7f4](69ef7f4))
* ✨ feat(match): MatchParticipant 엔티티 생성 ([7c80927](7c80927))
* ✨ feat(match): 경기 참여 api 추가 ([36dcaa0](36dcaa0))
* ✨ feat(match): 경기 참여 취소 api 추가 ([8f86acd](8f86acd))
* ✨ feat(match): 관리자 경기 개설 api 추가 ([4c5a531](4c5a531))
* ✨ feat(match): 관리자 매치 삭제 API 구현 ([deeccb9](deeccb9))
* ✨ feat(match): 관리자 매치 삭제 API 구현 ([9c391ce](9c391ce))
* ✨ feat(match): 관리자 매치 삭제 API 구현 ([1a5d068](1a5d068))
* ✨ feat(match): 관리자 매치✨ feat(m 로직 추가 ([9e02e15](9e02e15))
* ✨ feat(match): 관리자 매칭 삭제 API 구현 ([e3a011f](e3a011f))
* ✨ feat(match): 나의 매칭 목록 서비스 로직 추가 ([f1e2f6a](f1e2f6a))
* ✨ feat(match): 중복된 UNIQUE 제약 조건 해결을 위해 name 명시 ([1ed342c](1ed342c))
* ✨ feat(user): accessToken 디코더 추가 ([a66873a](a66873a))
* ✨ feat(user): application.yml cognito 사용자 풀 정보 입력(보안이슈x) ([a6bfbe3](a6bfbe3))
* ✨ feat(user): cognito 사용자 풀 → RDS 사용자 백필 기능 추가 ([cc1a2cd](cc1a2cd))
* ✨ feat(user): email_verified 추가 ([f346b5f](f346b5f))
* ✨ feat(user): jwt 자동 검증 설정 추가 ([2f34eb0](2f34eb0))
* ✨ feat(user): user Entity 어노테이션 수정 ([6f49ffb](6f49ffb))
* ✨ feat(user): user 엔터티 및 repository 추가 ([456bd2d](456bd2d))
* ✨ feat(user): userDto createdAt 추가 ([a329a59](a329a59))
* ✨ feat(user): userDto createdAt 추가 ([66b1676](66b1676))
* ✨ feat(user): userService 생성 ([0da5231](0da5231))
* ✨ feat(user): 내 프로필 조회 api 구현(Controller, Service, DTO) ([070f972](070f972))
* ✨ feat(user): 사용자 정보 json으로 추출 ([2af5871](2af5871))
* ✨ feat(user): 의존성 추가 ([0c8c85b](0c8c85b))
* ✨ feat(user): 토큰 유효성 추가 검사 ([cd5c273](cd5c273))
* ✨ feat(user): 프로필 기본 사진 추가 ([dcc7494](dcc7494))
* ✨ feat(user): 회원가입 post로 변경 ([296a0a2](296a0a2))
* ✨feat(config):  WebConfig CORS 추가 ([b7aac1c](b7aac1c))
* ✨feat(config): SecurityConfig (cors bridge, /api/**, swagger) 추가 ([5dd18b8](5dd18b8))
* 📄 docs: readme.md 개정 – 위키 링크/아키텍처 추가 ([9146f47](9146f47))
* 📄 docs: readme.md 네트워크 아키텍처 이미지 추가 ([57c5ad8](57c5ad8))
* 📄 docs: readme.md 수정 – 위키 링크 업데이트 및 문서 경로 변경 ([9a09b04](9a09b04))
* 📄 docs: 기능 요청 및 Task 이슈 템플릿 수정 ([644bdca](644bdca))
* 📄 docs: 이슈/PR/기여 가이드 템플릿 추가 ([8a29d3d](8a29d3d))
* 📝 docs: task 이슈템플릿 textarea render 옵션 제거 ([3669abb](3669abb))
* ✏️  fix: rankenum 오타 수정 ([b88cedc](b88cedc))
* ✏️  fix: 오타수정 ([4422eb3](4422eb3))
* ✏️ fix: dev gitignore 처리 추가 설정 ([88a7c69](88a7c69))
* ✏️ fix: 검증 스탭에서 실패 허용 ([8c1bfa7](8c1bfa7))
* ✏️ fix: 리소스 서버 자동 설정 비활성화 → jwk 원격 호출 방지 ([11d8632](11d8632))
* ✏️ fix: 환경 변수 추가 ([072e624](072e624))
* 🐛 fix: import 순서 맞춤 ([351e4b6](351e4b6))
* 🐛 fix: springdoc OpenAPI 엔드포인트 404 오류 해결 ([726b9ec](726b9ec))
* 🐛 fix(match): front와 api연결하며 데이터 전송방식, 변수명 등 통일되지 않은 부분 수정 ([9dc7772](9dc7772))
* 🐛 fix(match): 소스코드 수정 후 테스트 코드 리팩토링이 덜 되서 마저 수정 및 테스트 후 예외처리 패턴 다른 코드 수정 ([181bac5](181bac5))
* 🐛 fix(match): 이전 커밋할 때 precommit이 안돼서 precommit 후 재 커밋 ([840d3af](840d3af))
* 🚨 fix(match): 테스트 실패 원인 수정 ([bf2fc13](bf2fc13))
* 🚨 fix(match): 테스트 실패 원인 수정 ([1af1c18](1af1c18))
* 🚨 fix(test): 테스트 실패 원인 수정 ([ea6a34e](ea6a34e))
* 📦  chore: jwt 검증 설정(application.yml) ([e38bf31](e38bf31))
* 📦  chore: oauth2 리소스 서버 라이브러리 추가 ([300ffee](300ffee))
* 📦 chore: build.gradle 편의 의존성 추가 ([e2c690d](e2c690d))
* 📦 chore: husky 전용 setup 스크립트로 변경 ([eccb851](eccb851))
* 📦 chore: semantic-release 설정 파일 추가 ([092ce09](092ce09))
* ♻️  refactor: user entitiy refactoring(no logic change) ([cc7d748](cc7d748))
* ♻️  refactor(structure): 디렉토리 변경 ([50c0e05](50c0e05))
* ♻️ refactor:  매칭 삭제 기능 관련 컨트롤러 서비스 파일로 경로 변경 ([434106b](434106b))
* ♻️ refactor: application.yml cognito 추가 ([728a38d](728a38d))
* ♻️ refactor: application.yml 역할 분할 ([4268dd9](4268dd9))
* ♻️ refactor: headerPattern에서 '!'를 추가하여 커밋 메시지 형식 개선 ([7bbe802](7bbe802))
* ♻️ refactor: 관리자 삭제 병합 시 충돌 방지 ([845306b](845306b))
* ♻️ refactor: 나의 매치 목록 서비스 로직 수정 ([b0cee06](b0cee06))
* ♻️ refactor: 매치 관련 파일 위치 수정 ([707e192](707e192))
* ♻️ refactor: 매치 관련 파일 위치 수정 ([b356008](b356008))
* ♻️ refactor(user): 사용자 기본 프로필 사진 URL 설정 및 엔티티 정리 ([6e149c7](6e149c7))
* 🎨  style: apply formatter (no logic change) ([11488bd](11488bd))
* 🎨  style: securityConfig 파일 줄 정리 ([3724301](3724301))
* 🎨  style: userService 공백 정리 ([8a1dcb6](8a1dcb6))
* 🎨  style: 공백 및 줄 정리 ([3d8e788](3d8e788))
* 🎨 style: import 순서 및 공백 정리 ([78fad83](78fad83))
* 🎨 style: Spotless/Checkstyle 규칙 적용 및 import 순서·와일드카드 수정 ([01101cf](01101cf))
* 🎨 style: 기존 로직에는 영향 없이 코드 포맷만 수정 ([9737e13](9737e13))
* 🎨 style: 코드 스타일 변경 ([02b729d](02b729d))
* 🎨style: 사용되지 않는 import 제거 ([a6dfd65](a6dfd65))
* ✨ test(match): 누락된 MatchResponseDto 추가 ([c621a3a](c621a3a))
* 🧪 test(match): match 경기 조회 서비스 테스트 구현 ([361016a](361016a))
* 🧪 test(match): 경기 참여 api 테스트 추가 ([0289e71](0289e71))
* 🧪 test(match): 경기개설 테스트 추가 ([516d929](516d929))
* 🧪 test(match): 경기참여 테스트 코드 추가 ([e465892](e465892))
* 🧪 test(match): 나의 매치 목록 조회 test 코드 작성 ([44a3b18](44a3b18))
* 🧪 test(user): email_verified 추가로 인한 테스트 변경 ([9985067](9985067))
* 🧪 test(user): 경기 삭제 api test 추가 ([e0d02ba](e0d02ba))
* 🧪 test(user): 내 프로필 조회, 로그인, 회원가입 API 테스트 추가 ([7cd6ce1](7cd6ce1))
@github-actions
Copy link

🎉 This PR is included in version 1.0.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants