From 8adb7bf259883c03bd36baf350cdf21daf9b7c94 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 15:50:22 +0900 Subject: [PATCH 01/25] Update .gitignore (#4) --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e5e4a64..2469c8c 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -22,7 +22,7 @@ jobs: uses: actions/setup-java@v2 with: java-version: '17' - distribution: 'amazon-corretto'# 필요한 Java 버전 설정 + distribution: 'corretto'# 필요한 Java 버전 설정 - name: Install dependencies run: ./gradlew clean build # Gradle 의존성 설치 및 빌드 From 7680ed4cb01d09a4bd9c7687d265f7a5172f60d3 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 15:57:28 +0900 Subject: [PATCH 02/25] Update .gitignore (#4) --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2469c8c..b4e9912 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v2 - name: Set up JDK - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: java-version: '17' distribution: 'corretto'# 필요한 Java 버전 설정 From df3186d1645e342fb1b16814641fa6c388bfe86c Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 16:12:22 +0900 Subject: [PATCH 03/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemoWithTagsApplication.kt | 2 +- .../memo/controller/MemoController.kt | 7 ++----- .../toyproject/memoWithTags/memo/persistence/MemoEntity.kt | 5 +++++ .../memo/service/MemoService.kt | 2 +- .../tag/controller/TagController.kt | 2 +- .../toyproject/memoWithTags/tag/persistence/TagEntity.kt | 4 ++++ .../toyproject/memoWithTags/tag/service/TagService.kt | 4 ++++ .../user/contoller/UserController.kt | 2 +- .../toyproject/memoWithTags/user/persistence/UserEntity.kt | 4 ++++ .../toyproject/memoWithTags/user/service/UserService.kt | 4 ++++ .../memo_with_tags/memo/persistence/MemoEntity.kt | 7 ------- .../toyproject/memo_with_tags/tag/persistence/TagEntity.kt | 4 ---- .../toyproject/memo_with_tags/tag/service/TagService.kt | 4 ---- .../memo_with_tags/user/persistence/UserEntity.kt | 4 ---- .../toyproject/memo_with_tags/user/service/UserService.kt | 4 ---- .../MemoWithTagsApplicationTests.kt | 2 +- 16 files changed, 28 insertions(+), 33 deletions(-) rename src/main/kotlin/com/wafflestudio/toyproject/{memo_with_tags => memoWithTags}/MemoWithTagsApplication.kt (83%) rename src/main/kotlin/com/wafflestudio/toyproject/{memo_with_tags => memoWithTags}/memo/controller/MemoController.kt (74%) create mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/persistence/MemoEntity.kt rename src/main/kotlin/com/wafflestudio/toyproject/{memo_with_tags => memoWithTags}/memo/service/MemoService.kt (54%) rename src/main/kotlin/com/wafflestudio/toyproject/{memo_with_tags => memoWithTags}/tag/controller/TagController.kt (91%) create mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/persistence/TagEntity.kt create mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt rename src/main/kotlin/com/wafflestudio/toyproject/{memo_with_tags => memoWithTags}/user/contoller/UserController.kt (96%) create mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/persistence/UserEntity.kt create mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/service/UserService.kt delete mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/persistence/MemoEntity.kt delete mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/persistence/TagEntity.kt delete mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/service/TagService.kt delete mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/persistence/UserEntity.kt delete mode 100644 src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/service/UserService.kt rename src/test/kotlin/com/wafflestudio/toyproject/{memo_with_tags => memoWithTags}/MemoWithTagsApplicationTests.kt (78%) diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/MemoWithTagsApplication.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplication.kt similarity index 83% rename from src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/MemoWithTagsApplication.kt rename to src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplication.kt index 862b2df..6125353 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/MemoWithTagsApplication.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplication.kt @@ -1,4 +1,4 @@ -package com.wafflestudio.toyproject.memo_with_tags +package com.wafflestudio.toyproject.memoWithTags import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/controller/MemoController.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt similarity index 74% rename from src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/controller/MemoController.kt rename to src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt index 229218a..707ce2c 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/controller/MemoController.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt @@ -1,9 +1,6 @@ -package com.wafflestudio.toyproject.memo_with_tags.memo.controller +package com.wafflestudio.toyproject.memoWithTags.memo.controller -import com.wafflestudio.toyproject.memo_with_tags.memo.service.MemoService -import org.springframework.http.ResponseEntity -import org.springframework.web.bind.annotation.GetMapping -import org.springframework.web.bind.annotation.RequestParam +import com.wafflestudio.toyproject.memoWithTags.memo.service.MemoService import org.springframework.web.bind.annotation.RestController @RestController diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/persistence/MemoEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/persistence/MemoEntity.kt new file mode 100644 index 0000000..ac77b8a --- /dev/null +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/persistence/MemoEntity.kt @@ -0,0 +1,5 @@ +package com.wafflestudio.toyproject.memoWithTags.memo.persistence + +class MemoEntity { + +} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/service/MemoService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/service/MemoService.kt similarity index 54% rename from src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/service/MemoService.kt rename to src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/service/MemoService.kt index 47647d0..c6e4479 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/service/MemoService.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/service/MemoService.kt @@ -1,4 +1,4 @@ -package com.wafflestudio.toyproject.memo_with_tags.memo.service +package com.wafflestudio.toyproject.memoWithTags.memo.service import org.springframework.stereotype.Service diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/controller/TagController.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt similarity index 91% rename from src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/controller/TagController.kt rename to src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt index 4301a8a..858b9de 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/controller/TagController.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt @@ -1,4 +1,4 @@ -package com.wafflestudio.toyproject.memo_with_tags.tag.controller +package com.wafflestudio.toyproject.memoWithTags.tag.controller @RestController class TagController( diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/persistence/TagEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/persistence/TagEntity.kt new file mode 100644 index 0000000..3b1b080 --- /dev/null +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/persistence/TagEntity.kt @@ -0,0 +1,4 @@ +package com.wafflestudio.toyproject.memoWithTags.tag.persistence + +class TagEntity { +} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt new file mode 100644 index 0000000..fb3d026 --- /dev/null +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt @@ -0,0 +1,4 @@ +package com.wafflestudio.toyproject.memoWithTags.tag.service + +class TagService { +} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/contoller/UserController.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/contoller/UserController.kt similarity index 96% rename from src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/contoller/UserController.kt rename to src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/contoller/UserController.kt index 1b6098c..57c17c4 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/contoller/UserController.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/contoller/UserController.kt @@ -1,4 +1,4 @@ -package com.wafflestudio.toyproject.memo_with_tags.user.contoller +package com.wafflestudio.toyproject.memoWithTags.user.contoller @RestController class UserController( diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/persistence/UserEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/persistence/UserEntity.kt new file mode 100644 index 0000000..d731ccd --- /dev/null +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/persistence/UserEntity.kt @@ -0,0 +1,4 @@ +package com.wafflestudio.toyproject.memoWithTags.user.persistence + +class UserEntity { +} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/service/UserService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/service/UserService.kt new file mode 100644 index 0000000..16e0ecd --- /dev/null +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/service/UserService.kt @@ -0,0 +1,4 @@ +package com.wafflestudio.toyproject.memoWithTags.user.service + +class UserService { +} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/persistence/MemoEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/persistence/MemoEntity.kt deleted file mode 100644 index 0eff9a3..0000000 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/memo/persistence/MemoEntity.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.wafflestudio.toyproject.memo_with_tags.memo.persistence - -import jakarta.persistence.Entity - -class MemoEntity { - -} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/persistence/TagEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/persistence/TagEntity.kt deleted file mode 100644 index ece3f67..0000000 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/persistence/TagEntity.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.wafflestudio.toyproject.memo_with_tags.tag.persistence - -class TagEntity { -} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/service/TagService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/service/TagService.kt deleted file mode 100644 index f7e0d35..0000000 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/tag/service/TagService.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.wafflestudio.toyproject.memo_with_tags.tag.service - -class TagService { -} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/persistence/UserEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/persistence/UserEntity.kt deleted file mode 100644 index 226bceb..0000000 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/persistence/UserEntity.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.wafflestudio.toyproject.memo_with_tags.user.persistence - -class UserEntity { -} \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/service/UserService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/service/UserService.kt deleted file mode 100644 index 96ac689..0000000 --- a/src/main/kotlin/com/wafflestudio/toyproject/memo_with_tags/user/service/UserService.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.wafflestudio.toyproject.memo_with_tags.user.service - -class UserService { -} \ No newline at end of file diff --git a/src/test/kotlin/com/wafflestudio/toyproject/memo_with_tags/MemoWithTagsApplicationTests.kt b/src/test/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplicationTests.kt similarity index 78% rename from src/test/kotlin/com/wafflestudio/toyproject/memo_with_tags/MemoWithTagsApplicationTests.kt rename to src/test/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplicationTests.kt index 6aa6912..3c06c9f 100644 --- a/src/test/kotlin/com/wafflestudio/toyproject/memo_with_tags/MemoWithTagsApplicationTests.kt +++ b/src/test/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplicationTests.kt @@ -1,4 +1,4 @@ -package com.wafflestudio.toyproject.memo_with_tags +package com.wafflestudio.toyproject.memoWithTags import org.junit.jupiter.api.Test import org.springframework.boot.test.context.SpringBootTest From f3746bce42a1085af6af4550a491b376a550be45 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 16:28:48 +0900 Subject: [PATCH 04/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/lint.yml | 2 ++ .../memo/controller/MemoController.kt | 11 +++++--- .../tag/controller/TagController.kt | 7 ++++++ .../memoWithTags/tag/service/TagService.kt | 3 +++ .../user/contoller/UserController.kt | 25 +++++++++++-------- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index b4e9912..d4d98f7 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -3,10 +3,12 @@ name: Kotlin Lint Check on: push: branches: + - actions - main - develop pull_request: branches: + - actions - main - develop diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt index 707ce2c..6ded995 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt @@ -1,18 +1,23 @@ package com.wafflestudio.toyproject.memoWithTags.memo.controller import com.wafflestudio.toyproject.memoWithTags.memo.service.MemoService -import org.springframework.web.bind.annotation.RestController +import org.springframework.web.bind.annotation.* +import java.time.Instant @RestController class MemoController( private val memoService: MemoService ) { @PostMapping("/api/v1/memo") - fun createMemo(@RequestBody request: CreateMemoRequest): MemoDto { + fun createMemo(@RequestBody request: CreateMemoResponse): MemoDto { + return MemoDto("", emptyList()) + } @PutMapping("/api/v1/memo/{memoId}") - fun updateMemo(@PathVariable memoId: Long, @RequestBody request: UpdateMemoRequest): MemoDto { + fun updateMemo(@PathVariable memoId: Long, @RequestBody request: UpdateMemoResponse): MemoDto { + return MemoDto("", emptyList()) + } @DeleteMapping("/api/v1/memo/{memoId}") diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt index 858b9de..ddff15a 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt @@ -1,23 +1,30 @@ package com.wafflestudio.toyproject.memoWithTags.tag.controller +import com.wafflestudio.toyproject.memoWithTags.tag.service.TagService +import org.springframework.web.bind.annotation.* + @RestController class TagController( private val tagService: TagService ) { @GetMapping("/api/v1/tag") fun getTags(): List { + return emptyList() // 빈 리스트 반환 } @PostMapping("/api/v1/tag") fun createTag(@RequestBody request: CreateTagRequest): TagDto { + return TagDto(0L, "", "") // 기본값으로 TagDto 반환 } @PutMapping("/api/v1/tag/{tagId}") fun updateTag(@PathVariable id: Long, @RequestBody request: UpdateTagRequest): TagDto { + return TagDto(0L, "", "") // 기본값으로 TagDto 반환 } @DeleteMapping("/api/v1/tag/{tagId}") fun deleteTag(@PathVariable id: Long) { + // 반환 타입이 Unit이므로 아무 작업 없이 비워 둬도 OK } } diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt index fb3d026..2178850 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt @@ -1,4 +1,7 @@ package com.wafflestudio.toyproject.memoWithTags.tag.service +import org.springframework.stereotype.Service + +@Service class TagService { } \ No newline at end of file diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/contoller/UserController.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/contoller/UserController.kt index 57c17c4..82858f9 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/contoller/UserController.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/contoller/UserController.kt @@ -1,44 +1,47 @@ -package com.wafflestudio.toyproject.memoWithTags.user.contoller +package com.wafflestudio.toyproject.memoWithTags.user.controller + +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RestController @RestController -class UserController( +class UserController { -) { @GetMapping("/api/v1/auth/register") fun register(@RequestBody request: RegisterRequest): RegisterResponse { - + return RegisterResponse("", "", 0L) // 기본값으로 RegisterResponse 반환 } @PostMapping("/api/v1/auth/login") fun login(@RequestBody request: LoginRequest): LoginResponse { - + return LoginResponse("", "", 0L) // 기본값으로 LoginResponse 반환 } @PostMapping("/api/v1/auth/logout") fun logout(@RequestBody request: LogoutRequest) { - + // 반환 타입이 Unit이므로 아무 작업 없이 비워 둬도 OK } @PostMapping("/api/v1/auth/verify-email") fun verifyEmail(@RequestBody request: VerifyEmailRequest) { - + // 반환 타입이 Unit이므로 아무 작업 없이 비워 둬도 OK } @PostMapping("/api/v1/auth/forgot-password") fun forgotPassword(@RequestBody request: ForgotPasswordRequest) { - + // 반환 타입이 Unit이므로 아무 작업 없이 비워 둬도 OK } @PostMapping("/api/v1/auth/reset-password") fun resetPassword(@RequestBody request: ResetPasswordRequest) { - + // 반환 타입이 Unit이므로 아무 작업 없이 비워 둬도 OK } @PostMapping("/api/v1/auth/refresh-token") fun refreshToken(): RefreshTokenResponse { - + return RefreshTokenResponse("", "", 0L) // 기본값으로 RefreshTokenResponse 반환 } - } data class RegisterRequest( From da987c43a1581da4c78f3e1b12b0e395473feceb Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 16:58:39 +0900 Subject: [PATCH 05/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/lint.yml | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d4d98f7..f190e17 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,14 +20,37 @@ jobs: - name: Checkout code uses: actions/checkout@v2 + # 1. Docker Compose로 DB 시작 + - name: Start Database with Docker Compose + run: | + docker-compose up -d db + working-directory: ./your-docker-compose-directory + + # 2. DB 준비 시간 대기 + - name: Wait for Database + run: | + until nc -z localhost 3306; do + echo "Waiting for the database to be ready..." + sleep 5 + done + + # 3. Java 환경 설정 - name: Set up JDK uses: actions/setup-java@v4 with: java-version: '17' - distribution: 'corretto'# 필요한 Java 버전 설정 + distribution: 'corretto' + # 4. Gradle 의존성 설치 및 빌드 - name: Install dependencies - run: ./gradlew clean build # Gradle 의존성 설치 및 빌드 + run: ./gradlew clean build + # 5. Ktlint 검사 실행 - name: Run Ktlint - run: ./gradlew ktlintCheck # Ktlint 검사 실행 + run: ./gradlew ktlintCheck + + # 6. Docker Compose 정리 + - name: Stop Database + run: | + docker-compose down + working-directory: ./your-docker-compose-directory From b7d856c0fd05f1422772c38058f7b64daa7293f3 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 17:00:05 +0900 Subject: [PATCH 06/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/lint.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f190e17..2276c7e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -24,7 +24,7 @@ jobs: - name: Start Database with Docker Compose run: | docker-compose up -d db - working-directory: ./your-docker-compose-directory + working-directory: . # 2. DB 준비 시간 대기 - name: Wait for Database @@ -53,4 +53,4 @@ jobs: - name: Stop Database run: | docker-compose down - working-directory: ./your-docker-compose-directory + working-directory: . From 08a80030c856945f6cf2d81c6c3c491078675b8d Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 17:03:43 +0900 Subject: [PATCH 07/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/lint.yml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2276c7e..e71471e 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,13 +20,19 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - # 1. Docker Compose로 DB 시작 + # 1. Docker 및 Docker Compose 설치 + - name: Install Docker Compose + run: | + sudo apt-get update + sudo apt-get install -y docker-compose + + # 2. Docker Compose로 DB 시작 - name: Start Database with Docker Compose run: | - docker-compose up -d db + docker-compose up -d mysql working-directory: . - # 2. DB 준비 시간 대기 + # 3. DB 준비 시간 대기 - name: Wait for Database run: | until nc -z localhost 3306; do @@ -34,18 +40,14 @@ jobs: sleep 5 done - # 3. Java 환경 설정 + # 4. Java 환경 설정 - name: Set up JDK uses: actions/setup-java@v4 with: java-version: '17' distribution: 'corretto' - # 4. Gradle 의존성 설치 및 빌드 - - name: Install dependencies - run: ./gradlew clean build - - # 5. Ktlint 검사 실행 + # 5. Gradle 의존성 설치 및 Ktlint 검사 실행 - name: Run Ktlint run: ./gradlew ktlintCheck From 9705690834f7ebf1229055d23223c71c1ebcd067 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 17:08:07 +0900 Subject: [PATCH 08/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle.kts b/build.gradle.kts index 9effa7f..eebdedf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,6 +3,7 @@ plugins { kotlin("plugin.spring") version "1.9.25" id("org.springframework.boot") version "3.4.1" id("io.spring.dependency-management") version "1.1.7" + id ("org.jlleitschuh.gradle.ktlint") version "11.5.1" kotlin("plugin.jpa") version "1.9.25" } From 04fc047dfcd54d8d3972a9043b387312756a84a9 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 17:17:28 +0900 Subject: [PATCH 09/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 58 +++++++++---------- .../memoWithTags/MemoWithTagsApplication.kt | 2 +- .../memo/controller/MemoController.kt | 11 ++-- .../memo/persistence/MemoEntity.kt | 4 +- .../memoWithTags/memo/service/MemoService.kt | 3 +- .../tag/controller/TagController.kt | 10 +++- .../memoWithTags/tag/persistence/TagEntity.kt | 3 +- .../memoWithTags/tag/service/TagService.kt | 3 +- .../user/persistence/UserEntity.kt | 3 +- .../memoWithTags/user/service/UserService.kt | 3 +- .../MemoWithTagsApplicationTests.kt | 7 +-- 11 files changed, 54 insertions(+), 53 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index eebdedf..e21f718 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,52 +1,52 @@ plugins { - kotlin("jvm") version "1.9.25" - kotlin("plugin.spring") version "1.9.25" - id("org.springframework.boot") version "3.4.1" - id("io.spring.dependency-management") version "1.1.7" - id ("org.jlleitschuh.gradle.ktlint") version "11.5.1" - kotlin("plugin.jpa") version "1.9.25" + kotlin("jvm") version "1.9.25" + kotlin("plugin.spring") version "1.9.25" + id("org.springframework.boot") version "3.4.1" + id("io.spring.dependency-management") version "1.1.7" + id("org.jlleitschuh.gradle.ktlint") version "11.5.1" + kotlin("plugin.jpa") version "1.9.25" } group = "com.wafflestudio.toyproject" version = "0.0.1-SNAPSHOT" java { - toolchain { - languageVersion = JavaLanguageVersion.of(17) - } + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } repositories { - mavenCentral() + mavenCentral() } dependencies { - implementation("org.springframework.boot:spring-boot-starter") - implementation("org.springframework.boot:spring-boot-starter-data-jpa") - implementation("org.springframework.boot:spring-boot-starter-web") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") - implementation("org.jetbrains.kotlin:kotlin-reflect") - implementation("org.mindrot:jbcrypt:0.4") - implementation("com.mysql:mysql-connector-j:8.2.0") - implementation("io.jsonwebtoken:jjwt-api:0.11.5") - implementation("io.jsonwebtoken:jjwt-impl:0.11.5") - implementation("io.jsonwebtoken:jjwt-jackson:0.11.5") - implementation("org.springframework.boot:spring-boot-starter-oauth2-client") - testImplementation("org.springframework.boot:spring-boot-starter-test") + implementation("org.springframework.boot:spring-boot-starter") + implementation("org.springframework.boot:spring-boot-starter-data-jpa") + implementation("org.springframework.boot:spring-boot-starter-web") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin") + implementation("org.jetbrains.kotlin:kotlin-reflect") + implementation("org.mindrot:jbcrypt:0.4") + implementation("com.mysql:mysql-connector-j:8.2.0") + implementation("io.jsonwebtoken:jjwt-api:0.11.5") + implementation("io.jsonwebtoken:jjwt-impl:0.11.5") + implementation("io.jsonwebtoken:jjwt-jackson:0.11.5") + implementation("org.springframework.boot:spring-boot-starter-oauth2-client") + testImplementation("org.springframework.boot:spring-boot-starter-test") } kotlin { - compilerOptions { - freeCompilerArgs.addAll("-Xjsr305=strict") - } + compilerOptions { + freeCompilerArgs.addAll("-Xjsr305=strict") + } } allOpen { - annotation("jakarta.persistence.Entity") - annotation("jakarta.persistence.MappedSuperclass") - annotation("jakarta.persistence.Embeddable") + annotation("jakarta.persistence.Entity") + annotation("jakarta.persistence.MappedSuperclass") + annotation("jakarta.persistence.Embeddable") } tasks.withType { - useJUnitPlatform() + useJUnitPlatform() } diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplication.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplication.kt index 6125353..d88d8fb 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplication.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplication.kt @@ -7,5 +7,5 @@ import org.springframework.boot.runApplication class MemoWithTagsApplication fun main(args: Array) { - runApplication(*args) + runApplication(*args) } diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt index 6ded995..f564c9f 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/controller/MemoController.kt @@ -1,7 +1,12 @@ package com.wafflestudio.toyproject.memoWithTags.memo.controller import com.wafflestudio.toyproject.memoWithTags.memo.service.MemoService -import org.springframework.web.bind.annotation.* +import org.springframework.web.bind.annotation.DeleteMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RestController import java.time.Instant @RestController @@ -11,13 +16,11 @@ class MemoController( @PostMapping("/api/v1/memo") fun createMemo(@RequestBody request: CreateMemoResponse): MemoDto { return MemoDto("", emptyList()) - } @PutMapping("/api/v1/memo/{memoId}") fun updateMemo(@PathVariable memoId: Long, @RequestBody request: UpdateMemoResponse): MemoDto { return MemoDto("", emptyList()) - } @DeleteMapping("/api/v1/memo/{memoId}") @@ -44,4 +47,4 @@ data class UpdateMemoResponse( val tags: List, val createdAt: Instant, val updatedAt: Instant -) \ No newline at end of file +) diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/persistence/MemoEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/persistence/MemoEntity.kt index ac77b8a..1c418ab 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/persistence/MemoEntity.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/persistence/MemoEntity.kt @@ -1,5 +1,3 @@ package com.wafflestudio.toyproject.memoWithTags.memo.persistence -class MemoEntity { - -} \ No newline at end of file +class MemoEntity diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/service/MemoService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/service/MemoService.kt index c6e4479..1daad94 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/service/MemoService.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/memo/service/MemoService.kt @@ -3,5 +3,4 @@ package com.wafflestudio.toyproject.memoWithTags.memo.service import org.springframework.stereotype.Service @Service -class MemoService { -} \ No newline at end of file +class MemoService diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt index ddff15a..fd1de3b 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/controller/TagController.kt @@ -1,7 +1,13 @@ package com.wafflestudio.toyproject.memoWithTags.tag.controller import com.wafflestudio.toyproject.memoWithTags.tag.service.TagService -import org.springframework.web.bind.annotation.* +import org.springframework.web.bind.annotation.DeleteMapping +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RestController @RestController class TagController( @@ -31,7 +37,7 @@ class TagController( data class TagDto( val id: Long, val name: String, - val color: String, + val color: String ) data class CreateTagRequest( diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/persistence/TagEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/persistence/TagEntity.kt index 3b1b080..95169a6 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/persistence/TagEntity.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/persistence/TagEntity.kt @@ -1,4 +1,3 @@ package com.wafflestudio.toyproject.memoWithTags.tag.persistence -class TagEntity { -} \ No newline at end of file +class TagEntity diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt index 2178850..3339676 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/tag/service/TagService.kt @@ -3,5 +3,4 @@ package com.wafflestudio.toyproject.memoWithTags.tag.service import org.springframework.stereotype.Service @Service -class TagService { -} \ No newline at end of file +class TagService diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/persistence/UserEntity.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/persistence/UserEntity.kt index d731ccd..a6d5720 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/persistence/UserEntity.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/persistence/UserEntity.kt @@ -1,4 +1,3 @@ package com.wafflestudio.toyproject.memoWithTags.user.persistence -class UserEntity { -} \ No newline at end of file +class UserEntity diff --git a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/service/UserService.kt b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/service/UserService.kt index 16e0ecd..fe93156 100644 --- a/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/service/UserService.kt +++ b/src/main/kotlin/com/wafflestudio/toyproject/memoWithTags/user/service/UserService.kt @@ -1,4 +1,3 @@ package com.wafflestudio.toyproject.memoWithTags.user.service -class UserService { -} \ No newline at end of file +class UserService diff --git a/src/test/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplicationTests.kt b/src/test/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplicationTests.kt index 3c06c9f..3d3889e 100644 --- a/src/test/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplicationTests.kt +++ b/src/test/kotlin/com/wafflestudio/toyproject/memoWithTags/MemoWithTagsApplicationTests.kt @@ -6,8 +6,7 @@ import org.springframework.boot.test.context.SpringBootTest @SpringBootTest class MemoWithTagsApplicationTests { - @Test - fun contextLoads() { - } - + @Test + fun contextLoads() { + } } From c0a165bce3558d0017cd41eab9bae2f8a72a7e42 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 19:11:55 +0900 Subject: [PATCH 10/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index f3dbc0b..b00272c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -5,6 +5,7 @@ on: workflows: ["Kotlin Lint Check"] # lint.yml이 끝난 후 실행 types: - completed + jobs: build: runs-on: ubuntu-latest @@ -14,45 +15,44 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - # 2. AWS 인증 - - name: Log in to Amazon ECR - uses: aws-actions/amazon-ecr-login@v1 + # 2. AWS 자격 증명 설정 + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v3 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ap-northeast-2 - # 3. 도커 이미지 빌드 + # 3. AWS ECR 로그인 + - name: Log in to Amazon ECR + uses: aws-actions/amazon-ecr-login@v1 + + # 4. 도커 이미지 빌드 - name: Build Docker image run: | docker build -t memo-with-tags-backend:latest . - # 4. 도커 이미지를 ECR로 푸시 + # 5. 도커 이미지를 ECR로 푸시 - name: Push Docker image to ECR run: | - # ECR 리포지토리 URI REPOSITORY_URI=739275468912.dkr.ecr.ap-northeast-2.amazonaws.com/memo-with-tags TAG=$(echo $GITHUB_SHA | cut -c1-7) # 커밋 해시 앞 7자리로 태그 생성 - # ECR에 태그 추가 docker tag memo-with-tags-backend:latest $REPOSITORY_URI:$TAG - - # ECR에 푸시 docker push $REPOSITORY_URI:$TAG - # 5. EC2 서버에서 Docker 이미지 실행 + # 6. EC2 서버에서 Docker 이미지 실행 - name: Deploy to EC2 run: | - # EC2 서버 접속 ssh -o StrictHostKeyChecking=no ubuntu@${{ secrets.EC2_PUBLIC_IP }} << 'EOF' - # ECR 로그인 + REPOSITORY_URI=739275468912.dkr.ecr.ap-northeast-2.amazonaws.com/memo-with-tags + TAG=$(echo $GITHUB_SHA | cut -c1-7) + aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin $REPOSITORY_URI - # 기존 컨테이너 중지 및 삭제 docker stop memo-with-tags-backend || true docker rm memo-with-tags-backend || true - # 새 컨테이너 실행 docker pull $REPOSITORY_URI:$TAG docker run -d --name memo-with-tags-backend -p 80:80 $REPOSITORY_URI:$TAG EOF From 5943e3f3b5b4543ab2f243ac9d146b017bb831cc Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 19:23:23 +0900 Subject: [PATCH 11/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index b00272c..3e2300b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: Build, Push, and Deploy Docker Image to EC2 on: workflow_run: - workflows: ["Kotlin Lint Check"] # lint.yml이 끝난 후 실행 + workflows: ["Kotlin Lint Check"] # lint.yml이 끝난 후 실행dfd types: - completed From 30f4a317b463362e43afb0324b1ec97bac1c8c7d Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 20:43:52 +0900 Subject: [PATCH 12/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5b5bc4d..189a404 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ WORKDIR /app # 로컬의 빌드된 JAR 파일을 컨테이너 안으로 복사 # (빌드 과정에서 JAR 파일을 생성한다고 가정) -COPY build/libs/your-app.jar /app/your-app.jar +COPY build/libs/memo-with-tags-0.0.1-SNAPSHOT.jar /app/memo-with-tags-0.0.1-SNAPSHOT.jar # 컨테이너가 시작될 때 실행될 명령어 설정 CMD ["java", "-jar", "your-app.jar"] From c02aed3b4467c47d8a4e607562db4eb28e621356 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 20:56:24 +0900 Subject: [PATCH 13/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 44 +++++++++++++++++++++++++++++------- Dockerfile | 1 + 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 3e2300b..2b586ee 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: Build, Push, and Deploy Docker Image to EC2 on: workflow_run: - workflows: ["Kotlin Lint Check"] # lint.yml이 끝난 후 실행dfd + workflows: ["Kotlin Lint Check"] # lint.yml이 끝난 후 실행 types: - completed @@ -15,7 +15,30 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - # 2. AWS 자격 증명 설정 + - name: Install Docker Compose + run: | + sudo apt-get update + sudo apt-get install -y docker-compose + + # 2. Docker Compose로 DB 시작 + - name: Start Database with Docker Compose + run: | + docker-compose up -d mysql + working-directory: . + + # 2. Gradle 빌드 + - name: Build project + run: ./gradlew build + + # 3. 빌드 결과 확인 + - name: Verify build artifacts + run: ls -R build/libs + + # 4. Docker 빌드 컨텍스트 준비 + - name: Prepare Docker context + run: cp build/libs/*.jar . + + # 5. AWS 자격 증명 설정 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v3 with: @@ -23,16 +46,15 @@ jobs: aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ap-northeast-2 - # 3. AWS ECR 로그인 + # 6. AWS ECR 로그인 - name: Log in to Amazon ECR uses: aws-actions/amazon-ecr-login@v1 - # 4. 도커 이미지 빌드 + # 7. 도커 이미지 빌드 - name: Build Docker image - run: | - docker build -t memo-with-tags-backend:latest . + run: docker build -t memo-with-tags-backend:latest . - # 5. 도커 이미지를 ECR로 푸시 + # 8. 도커 이미지를 ECR로 푸시 - name: Push Docker image to ECR run: | REPOSITORY_URI=739275468912.dkr.ecr.ap-northeast-2.amazonaws.com/memo-with-tags @@ -41,7 +63,7 @@ jobs: docker tag memo-with-tags-backend:latest $REPOSITORY_URI:$TAG docker push $REPOSITORY_URI:$TAG - # 6. EC2 서버에서 Docker 이미지 실행 + # 9. EC2 서버에서 Docker 이미지 실행 - name: Deploy to EC2 run: | ssh -o StrictHostKeyChecking=no ubuntu@${{ secrets.EC2_PUBLIC_IP }} << 'EOF' @@ -56,3 +78,9 @@ jobs: docker pull $REPOSITORY_URI:$TAG docker run -d --name memo-with-tags-backend -p 80:80 $REPOSITORY_URI:$TAG EOF + + + - name: Stop Database + run: | + docker-compose down + working-directory: . diff --git a/Dockerfile b/Dockerfile index 189a404..87ce86b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,3 +10,4 @@ COPY build/libs/memo-with-tags-0.0.1-SNAPSHOT.jar /app/memo-with-tags-0.0.1-SNAP # 컨테이너가 시작될 때 실행될 명령어 설정 CMD ["java", "-jar", "your-app.jar"] + From e58e2e429df8bede9feedd3dcd30276183ee6b32 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 21:26:35 +0900 Subject: [PATCH 14/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2b586ee..bd3f61d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -66,19 +66,28 @@ jobs: # 9. EC2 서버에서 Docker 이미지 실행 - name: Deploy to EC2 run: | - ssh -o StrictHostKeyChecking=no ubuntu@${{ secrets.EC2_PUBLIC_IP }} << 'EOF' + # 개인 키를 파일로 저장하고 권한 설정 + echo "${{ secrets.EC2_SSH_PRIVATE_KEY }}" > private_key.pem + chmod 600 private_key.pem + + # EC2 인스턴스에 SSH 접속하여 배포 작업 수행 + ssh -i private_key.pem -o StrictHostKeyChecking=no ubuntu@${{ secrets.EC2_PUBLIC_IP }} << 'EOF' REPOSITORY_URI=739275468912.dkr.ecr.ap-northeast-2.amazonaws.com/memo-with-tags TAG=$(echo $GITHUB_SHA | cut -c1-7) + # AWS ECR 로그인 aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin $REPOSITORY_URI + # 이전 컨테이너 중지 및 제거 docker stop memo-with-tags-backend || true docker rm memo-with-tags-backend || true + # 새 이미지 가져오기 및 컨테이너 실행 docker pull $REPOSITORY_URI:$TAG docker run -d --name memo-with-tags-backend -p 80:80 $REPOSITORY_URI:$TAG EOF - + + - name: Stop Database run: | From b48826bc8e3b32607e436ea9801fdd092b571318 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 22:00:51 +0900 Subject: [PATCH 15/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 87ce86b..958ef43 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,5 +9,4 @@ WORKDIR /app COPY build/libs/memo-with-tags-0.0.1-SNAPSHOT.jar /app/memo-with-tags-0.0.1-SNAPSHOT.jar # 컨테이너가 시작될 때 실행될 명령어 설정 -CMD ["java", "-jar", "your-app.jar"] - +CMD ["java", "-jar", "/app/memo-with-tags-0.0.1-SNAPSHOT.jar"] From ec9764df0c1f999800be5634aec9f9831443e7c6 Mon Sep 17 00:00:00 2001 From: Yongbeom Kim Date: Thu, 2 Jan 2025 22:19:58 +0900 Subject: [PATCH 16/25] =?UTF-8?q?actions=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 8 +++++--- src/main/resources/application.yml | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index bd3f61d..a546b95 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -84,10 +84,12 @@ jobs: # 새 이미지 가져오기 및 컨테이너 실행 docker pull $REPOSITORY_URI:$TAG - docker run -d --name memo-with-tags-backend -p 80:80 $REPOSITORY_URI:$TAG + docker run -d \ + --name memo-with-tags-backend \ + -p 80:80 \ + -e SPRING_PROFILES_ACTIVE=prod \ # 환경 변수 추가 + $REPOSITORY_URI:$TAG EOF - - - name: Stop Database run: | diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7107ed0..6ced7bb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: dev # 기본 활성화 프로파일 (개발 환경) + active: ${SPRING_PROFILES_ACTIVE:dev} # 기본값 dev From b94d370892a0ff8c3ddfcba8ca0ae05cd388cbb0 Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 00:46:35 +0900 Subject: [PATCH 17/25] see problems with actions --- .github/workflows/docker.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a546b95..20da972 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -60,6 +60,8 @@ jobs: REPOSITORY_URI=739275468912.dkr.ecr.ap-northeast-2.amazonaws.com/memo-with-tags TAG=$(echo $GITHUB_SHA | cut -c1-7) # 커밋 해시 앞 7자리로 태그 생성 + echo "Pushing Docker image with TAG: $TAG" + docker tag memo-with-tags-backend:latest $REPOSITORY_URI:$TAG docker push $REPOSITORY_URI:$TAG @@ -74,6 +76,8 @@ jobs: ssh -i private_key.pem -o StrictHostKeyChecking=no ubuntu@${{ secrets.EC2_PUBLIC_IP }} << 'EOF' REPOSITORY_URI=739275468912.dkr.ecr.ap-northeast-2.amazonaws.com/memo-with-tags TAG=$(echo $GITHUB_SHA | cut -c1-7) + + echo "Deploying Docker image with TAG: $TAG" # TAG 값 출력 # AWS ECR 로그인 aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin $REPOSITORY_URI From e8b2291d1f5a4f8be5813c3ae3eb928d015bb2b6 Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 01:02:04 +0900 Subject: [PATCH 18/25] =?UTF-8?q?actions=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 42 +++++++++++++++++------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 20da972..856a832 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -71,29 +71,27 @@ jobs: # 개인 키를 파일로 저장하고 권한 설정 echo "${{ secrets.EC2_SSH_PRIVATE_KEY }}" > private_key.pem chmod 600 private_key.pem - - # EC2 인스턴스에 SSH 접속하여 배포 작업 수행 - ssh -i private_key.pem -o StrictHostKeyChecking=no ubuntu@${{ secrets.EC2_PUBLIC_IP }} << 'EOF' - REPOSITORY_URI=739275468912.dkr.ecr.ap-northeast-2.amazonaws.com/memo-with-tags - TAG=$(echo $GITHUB_SHA | cut -c1-7) - echo "Deploying Docker image with TAG: $TAG" # TAG 값 출력 - - # AWS ECR 로그인 - aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin $REPOSITORY_URI - - # 이전 컨테이너 중지 및 제거 - docker stop memo-with-tags-backend || true - docker rm memo-with-tags-backend || true - - # 새 이미지 가져오기 및 컨테이너 실행 - docker pull $REPOSITORY_URI:$TAG - docker run -d \ - --name memo-with-tags-backend \ - -p 80:80 \ - -e SPRING_PROFILES_ACTIVE=prod \ # 환경 변수 추가 - $REPOSITORY_URI:$TAG - EOF + # 배포 스크립트 작성 + echo "#!/bin/bash + REPOSITORY_URI=739275468912.dkr.ecr.ap-northeast-2.amazonaws.com/memo-with-tags + TAG=$(echo $GITHUB_SHA | cut -c1-7) + + echo \"Deploying Docker image with TAG: \$TAG\" + + aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin \$REPOSITORY_URI + + docker stop memo-with-tags-backend || true + docker rm memo-with-tags-backend || true + + docker pull \$REPOSITORY_URI:\$TAG + docker run -d --name memo-with-tags-backend -p 80:80 -e SPRING_PROFILES_ACTIVE=prod \$REPOSITORY_URI:\$TAG" > deploy.sh + + # 배포 스크립트 EC2로 전송 + scp -i private_key.pem -o StrictHostKeyChecking=no deploy.sh ubuntu@${{ secrets.EC2_PUBLIC_IP }}:/home/ubuntu/ + + # EC2에서 스크립트 실행 + ssh -i private_key.pem -o StrictHostKeyChecking=no ubuntu@${{ secrets.EC2_PUBLIC_IP }} "bash /home/ubuntu/deploy.sh" - name: Stop Database run: | From effa0592a66402c599a801614bf1bd149b432427 Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 18:34:20 +0900 Subject: [PATCH 19/25] =?UTF-8?q?actions=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 18 +++++++++--------- src/main/resources/application-prod.yml | 7 ++++--- src/main/resources/application.yml | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 856a832..a38c853 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -20,11 +20,11 @@ jobs: sudo apt-get update sudo apt-get install -y docker-compose - # 2. Docker Compose로 DB 시작 - - name: Start Database with Docker Compose - run: | - docker-compose up -d mysql - working-directory: . +# # 2. Docker Compose로 DB 시작 +# - name: Start Database with Docker Compose +# run: | +# docker-compose up -d mysql +# working-directory: . # 2. Gradle 빌드 - name: Build project @@ -93,7 +93,7 @@ jobs: # EC2에서 스크립트 실행 ssh -i private_key.pem -o StrictHostKeyChecking=no ubuntu@${{ secrets.EC2_PUBLIC_IP }} "bash /home/ubuntu/deploy.sh" - - name: Stop Database - run: | - docker-compose down - working-directory: . +# - name: Stop Database +# run: | +# docker-compose down +# working-directory: . diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index bea9a56..2d8203c 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -3,9 +3,9 @@ server: spring: datasource: - url: jdbc:mysql://${DB_HOST:memo-db.cn860meg8hj0.ap-northeast-2.rds.amazonaws.com}:3306/${DB_NAME:your-database-name} - username: ${DB_USERNAME:your-database-username} - password: ${DB_PASSWORD:your-database-password} + url: jdbc:mysql://${{ secrets.DB_ENDPOINT }}:3306/memo-db + username: ${{ secrets.DB_USERNAME }} + password: ${{ secrets.DB_PASSWORD }} driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: @@ -13,6 +13,7 @@ spring: properties: hibernate: format_sql: true + dialect: org.hibernate.dialect.MySQL8Dialect show-sql: false logging: level: diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 6ced7bb..9bf1d59 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: ${SPRING_PROFILES_ACTIVE:dev} # 기본값 dev + active: ${SPRING_PROFILES_ACTIVE:prod} # 기본값 dev From 12f772af3fa81a871b56febb5a63285ceae422ed Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 19:13:49 +0900 Subject: [PATCH 20/25] =?UTF-8?q?actions=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-prod.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 2d8203c..8dee010 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -3,9 +3,9 @@ server: spring: datasource: - url: jdbc:mysql://${{ secrets.DB_ENDPOINT }}:3306/memo-db - username: ${{ secrets.DB_USERNAME }} - password: ${{ secrets.DB_PASSWORD }} + url: jdbc:mysql://${ secrets.DB_ENDPOINT }:3306/memo-db + username: ${ secrets.DB_USERNAME } + password: ${ secrets.DB_PASSWORD } driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: From 40be1a47071cb400c5847678a5e8f3bd7cccda01 Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 19:37:32 +0900 Subject: [PATCH 21/25] =?UTF-8?q?actions=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 9 ++++++++- src/main/resources/application-prod.yml | 6 +++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a38c853..305cff7 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -85,7 +85,14 @@ jobs: docker rm memo-with-tags-backend || true docker pull \$REPOSITORY_URI:\$TAG - docker run -d --name memo-with-tags-backend -p 80:80 -e SPRING_PROFILES_ACTIVE=prod \$REPOSITORY_URI:\$TAG" > deploy.sh + docker run -d \ + -p 8080:8080 \ + -e SPRING_PROFILES_ACTIVE=prod \ + -e DB_NAME=memowithtags_db \ + -e DB_USERNAME=${{ secrets.DB_USERNAME }} \ + -e DB_PASSWORD="${{ secrets.DB_PASSWORD }}" \ + --name memowithtags-app \ + $REPOSITORY_URI:$TAG" > deploy.sh # 배포 스크립트 EC2로 전송 scp -i private_key.pem -o StrictHostKeyChecking=no deploy.sh ubuntu@${{ secrets.EC2_PUBLIC_IP }}:/home/ubuntu/ diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 8dee010..2d8203c 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -3,9 +3,9 @@ server: spring: datasource: - url: jdbc:mysql://${ secrets.DB_ENDPOINT }:3306/memo-db - username: ${ secrets.DB_USERNAME } - password: ${ secrets.DB_PASSWORD } + url: jdbc:mysql://${{ secrets.DB_ENDPOINT }}:3306/memo-db + username: ${{ secrets.DB_USERNAME }} + password: ${{ secrets.DB_PASSWORD }} driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: From 1af1bed316ec4ea4f153886fd28ecb3572e56970 Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 20:10:22 +0900 Subject: [PATCH 22/25] =?UTF-8?q?actions=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 305cff7..2f77a60 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -90,7 +90,7 @@ jobs: -e SPRING_PROFILES_ACTIVE=prod \ -e DB_NAME=memowithtags_db \ -e DB_USERNAME=${{ secrets.DB_USERNAME }} \ - -e DB_PASSWORD="${{ secrets.DB_PASSWORD }}" \ + -e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \ --name memowithtags-app \ $REPOSITORY_URI:$TAG" > deploy.sh From 2cb0ea2976f2f457037335367f2160cd606138b1 Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 20:23:14 +0900 Subject: [PATCH 23/25] =?UTF-8?q?actions=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 2 +- src/main/resources/application.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2f77a60..c45f792 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -91,7 +91,7 @@ jobs: -e DB_NAME=memowithtags_db \ -e DB_USERNAME=${{ secrets.DB_USERNAME }} \ -e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \ - --name memowithtags-app \ + --name memowithtags-backend \ $REPOSITORY_URI:$TAG" > deploy.sh # 배포 스크립트 EC2로 전송 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 9bf1d59..6ced7bb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: ${SPRING_PROFILES_ACTIVE:prod} # 기본값 dev + active: ${SPRING_PROFILES_ACTIVE:dev} # 기본값 dev From f26d3a4abb3df8551761281f5338a3db37ae85de Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 20:29:24 +0900 Subject: [PATCH 24/25] =?UTF-8?q?actions=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c45f792..87f71cc 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -28,7 +28,8 @@ jobs: # 2. Gradle 빌드 - name: Build project - run: ./gradlew build + run: | + SPRING_PROFILES_ACTIVE=prod ./gradlew build # 3. 빌드 결과 확인 - name: Verify build artifacts From 766f31eccb6ed2367163f76721d4c51e9bf2efe6 Mon Sep 17 00:00:00 2001 From: kih02 Date: Fri, 3 Jan 2025 20:35:54 +0900 Subject: [PATCH 25/25] =?UTF-8?q?actions=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/docker.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 87f71cc..cc5a254 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -79,6 +79,7 @@ jobs: TAG=$(echo $GITHUB_SHA | cut -c1-7) echo \"Deploying Docker image with TAG: \$TAG\" + echo \"Deploying Docker image with REPOSITORY_URI: \$REPOSITORY_URI\" aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin \$REPOSITORY_URI @@ -93,7 +94,7 @@ jobs: -e DB_USERNAME=${{ secrets.DB_USERNAME }} \ -e DB_PASSWORD=${{ secrets.DB_PASSWORD }} \ --name memowithtags-backend \ - $REPOSITORY_URI:$TAG" > deploy.sh + \$REPOSITORY_URI:\$TAG" > deploy.sh # 배포 스크립트 EC2로 전송 scp -i private_key.pem -o StrictHostKeyChecking=no deploy.sh ubuntu@${{ secrets.EC2_PUBLIC_IP }}:/home/ubuntu/