Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
choisihun committed Aug 26, 2024
2 parents a9051f2 + a51c0f2 commit e6945df
Show file tree
Hide file tree
Showing 10 changed files with 150 additions and 36 deletions.
22 changes: 14 additions & 8 deletions .github/workflows/server-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ jobs:
build:
runs-on: ubuntu-latest

env:
TEAM_NAME: woowasiblings
APP_NAME: canbus-server
APP_ENV: canbus-server-env
RG_NAME: rg-2024-Woowa-Siblings

steps:

- name: Check out code
Expand All @@ -29,15 +35,15 @@ jobs:
- name: Build and deploy Container App
uses: azure/container-apps-deploy-action@v0
with:
appSourcePath: ${{ github.workspace }}/canbus-server
acrName: woowasiblings
appSourcePath: ${{ github.workspace }}/${{ env.APP_NAME }}
acrName: ${{ env.TEAM_NAME }}
acrUsername: ${{ secrets.ACR_USERNAME }}
acrPassword: ${{ secrets.ACR_PASSWORD }}
containerAppName: canbus-server
containerAppEnvironment: canbus-server-env
resourceGroup: rg-2024-Woowa-Siblings
imageToBuild: woowasiblings.azurecr.io/canbus-server:${{ github.sha }}
containerAppName: ${{ env.APP_NAME }}
containerAppEnvironment: ${{ env.APP_ENV }}
resourceGroup: ${{ env.RG_NAME }}
imageToBuild: ${{ env.TEAM_NAME }}.azurecr.io/${{ env.APP_NAME }}:${{ github.sha }}
dockerfilePath: Dockerfile

# - name: Azure Container Apps Ingress Setting
# run: az containerapp ingress update --name canbus-server --resource-group rg-2024-Woowa-Siblings --target-port 8080 --allow-insecure
- name: Azure Container Apps Ingress Setting
run: az containerapp ingress update --name ${{ env.APP_NAME }} --resource-group ${{ env.RG_NAME }} --target-port 8080 --allow-insecure
44 changes: 44 additions & 0 deletions .github/workflows/web-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: If push to the main, deploy it

on:
push:
branches:
- main
paths:
- "canbus-web/**"

jobs:
build:
runs-on: ubuntu-latest

env:
TEAM_NAME: woowasiblings
APP_NAME: canbus-web
APP_ENV: canbus-web-env
RG_NAME: rg-2024-Woowa-Siblings

steps:

- name: Check out code
uses: actions/checkout@v2

- name: Log in to Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}

- name: Build and deploy Container App
uses: azure/container-apps-deploy-action@v0
with:
appSourcePath: ${{ github.workspace }}/${{ env.APP_NAME }}
acrName: ${{ env.TEAM_NAME }}
acrUsername: ${{ secrets.ACR_USERNAME }}
acrPassword: ${{ secrets.ACR_PASSWORD }}
containerAppName: ${{ env.APP_NAME }}
containerAppEnvironment: ${{ env.APP_ENV }}
resourceGroup: ${{ env.RG_NAME }}
imageToBuild: ${{ env.TEAM_NAME }}.azurecr.io/${{ env.APP_NAME }}:${{ github.sha }}
dockerfilePath: Dockerfile

- name: Azure Container Apps Ingress Setting
run: az containerapp ingress update --name ${{ env.APP_NAME }} --resource-group ${{ env.RG_NAME }} --target-port 3000 --allow-insecure
61 changes: 61 additions & 0 deletions INFRA_DEPLOY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# INFRA_DEPLOY

**아래의 “리소스”라는 용어는 진행하고 있는 그 챕터의 리소스를 말합니다 (제목)**

### Azure Database for MySQL

---

1. 리소스 만들기 버튼을 클릭하고, 유연한 서버 탭의 만들기를 클릭한다.
2. 본인 팀의 리소스 그룹을 선택한다.
3. 서버 이름을 기입한다
4. 관리자 사용자 이름, 암호, 암호 확인을 기입한다.
5. 네트워킹 탭에서 가서 `+ 0.0.0.0 - 255.255.255.255 추가`를 선택한다.
6. 검토 + 만들기를 선택한다.
7. 만들기를 누르고 리소스가 생성될 때까지 대기한다.
8. https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem 링크에서 pem 파일을 다운받는다.
9. 리소스의 설정 - 연결 탭에 들어가 적혀있는 연결 방법을 따라 DB에 연결한다. (이 밑은 MySQL Workbench를 기준으로 설명한다)
1. **MySQL 연결** 탭에서 **+** 기호를 클릭하여 새 연결을 추가합니다.
2. **연결 이름** 필드에 연결 이름을 입력합니다.
3. 연결 형식으로 **표준(TCP/IP)**을(를) 선택합니다.
4. 호스트 이름 필드에 **woowasiblings-db.mysql.database.azure.com**을(를) 입력하세요.
5. 사용자 이름으로 **woowasiblings**을(를) 입력한 후 **암호**을(를) 입력합니다.
6. **SSL 탭**(으)로 이동하여 SSL 사용 필드를 필수로 업데이트합니다.
7. **SL CA 파일** 필드에 아까 다운로드 받은 **DigiCertGlobalRootCA.crt.pem** 파일의 파일 위치를 입력합니다.
8. **연결 테스트**을(를) 클릭하여 연결을 테스트합니다.
9. 연결에 성공하면 **확인**을(를) 클릭하여 연결을 저장합니다.
10. 만든 연결을 통해 DB에 연결합니다.
11. Schema 탭을 우클릭하고, Create Schema 버튼을 클릭합니다.
12. Schema Name 칸에 canbus_db를 기입하고 Add 버튼을 클릭합니다.

### Container Registry

---

1. 리소스 만들기 버튼을 클릭한다.
2. 본인 팀의 리소스 그룹을 선택한다.
3. 레지스트리 이름을 기입한다.
4. 검토 + 만들기를 선택한다.
5. 만들기를 누르고 리소스가 생성될 때까지 대기한다.
6. 설정 - 액세스 키에 가서 관리 사용자 박스에 체크를 한다.
7. 사용자 이름과 password를 각각 복사 해놓는다
8. Github 팀 Repository - Setting - Secrets and Variables - Actions 탭에서 New repository secret 버튼을 누른다.
9. Name 란에 AZURE_USERNAME을 기입하고, Secret 란에 복사 해둔 사용자 이름을 넣고 Add secret 버튼을 누른다.
10. Name 란에 AZURE_PASSWORD을 기입하고, Secret 란에 복사 해둔 password를 넣고 Add secret 버튼을 누른다.

### Azure Credentials

---

(bash, powershell, ternimal 등 CLI 환경에서 진행한다)

1. Azure CLI 기준으로 다음의 명령어를 입력하면 로그인 화면으로 이동하게 되는데, Azure 구독이 있는 계정으로 로그인을 하면 json이 반환된다.

```bash
az login
az ad sp create-for-rbac --name <my-credentials-name> --role contributor --scopes /subscriptions/<AZURE_SUBSCRIPTION_ID>/resourceGroups/<my-resource-group> --json-auth --output json
```

2. Github 팀 Repository - Setting - Secrets and Variables - Actions 탭에서 New repository secret 버튼을 누른다.
3. Name 란에 AZURE_CREDENTIALS를 기입하고, Secret 란에 위에 명령어를 치고 나온 json을 붙여넣고
Add secret 버튼을 누른다.
22 changes: 20 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,26 @@
### 사전 준비 사항

> **여러분의 제품/서비스를 Microsoft 애저 클라우드에 배포하기 위해 사전에 필요한 준비 사항들을 적어주세요.**
> 여러분의 제품/서비스를 Microsoft 애저 클라우드에 배포하기 위해 사전에 필요한 준비 사항들을 적어주세요.
>
- Github 계정 - [Github 회원가입](https://github.com/signup)
- Azure 구독
- MySQL Workbench, TablePlus, CLI 환경 등 **DB 연결 도구**
- [MySQL Workbench 설치 링크](https://dev.mysql.com/downloads/workbench/)
- 이 문서에서는 MySQL Workbench를 기준으로 설명합니다
- 본인의 운영체제에 맞는 버전을 선택해주세요
- Download 버튼을 눌러 설치 패키지를 다운로드 받고 패키지를 실행해 설치 프로세스를 따라 설치해주세요

## 시작하기

> **여러분의 제품/서비스를 Microsoft 애저 클라우드에 배포하기 위한 절차를 구체적으로 나열해 주세요.**
> 여러분의 제품/서비스를 Microsoft 애저 클라우드에 배포하기 위한 절차를 구체적으로 나열해 주세요.
>
**INFRA -> SERVER -> WEB 순으로 진행하셔야 합니다**

[인프라 배포하기](INFRA_DEPLOY.md)

[서버 배포하기](SERVER_DEPLOY.md)

[웹 배포하기](WEB_DEPLOY.md)
5 changes: 5 additions & 0 deletions SERVER_DEPLOY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# SERVER_DEPLOY

### 서버 배포

canbus-server 모듈의 change가 포함된 commit을 main에 push 하게 되면 workflow가 작동해서 서버 배포가 자동으로 완료된다
5 changes: 5 additions & 0 deletions WEB_DEPLOY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# WEB_DEPLOY

### 웹 배포

canbus-web 모듈의 change가 포함된 commit을 main에 push 하게 되면 workflow가 작동해서 웹 배포가 자동으로 완료된다
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package kr.hs.dgsw.canbusserver.domain.auth.presentation.dto.request

import jakarta.validation.constraints.Email
import jakarta.validation.constraints.Pattern

class SignupRequest(
Expand All @@ -17,13 +16,4 @@ class SignupRequest(
)
val password: String,

@field:Pattern(
regexp = "^[^ ]{1,15}$",
message = "닉네임이 올바르지 않아요 (1자 ~ 15자)"
)
val nickname: String,

@field:Email(message = "올바른 형식의 이메일이여야 해요")
val email: String,

)
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
package kr.hs.dgsw.canbusserver.domain.auth.service

import kr.hs.dgsw.canbusserver.domain.auth.exception.EmailExistsException
import kr.hs.dgsw.canbusserver.domain.auth.exception.PasswordNotMatchedException
import kr.hs.dgsw.canbusserver.domain.auth.exception.UserIdExistsException
import kr.hs.dgsw.canbusserver.domain.auth.exception.UserNotFoundException
import kr.hs.dgsw.canbusserver.domain.auth.presentation.dto.request.LoginRequest
import kr.hs.dgsw.canbusserver.domain.auth.presentation.dto.request.SignupRequest
import kr.hs.dgsw.canbusserver.domain.auth.presentation.dto.response.TokenResponse
import kr.hs.dgsw.canbusserver.domain.user.User
import kr.hs.dgsw.canbusserver.domain.user.UserRepository
import kr.hs.dgsw.canbusserver.global.encrypt.EncryptUtil
import kr.hs.dgsw.canbusserver.global.security.jwt.JwtUtil
import kr.hs.dgsw.canbusserver.domain.auth.presentation.dto.request.SignupRequest
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional

Expand Down Expand Up @@ -43,17 +42,11 @@ class AuthService(
throw UserIdExistsException()
}

if (userRepository.existsByEmail(request.email)) {
throw EmailExistsException()
}

val encryptedPassword: String = encryptUtil.encode(request.password)

val user = User(
identifier = request.identifier,
password = encryptedPassword,
nickname = request.nickname,
email = request.email,
)

userRepository.save(user)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,4 @@ class User(

val password: String,

val email: String,

val nickname: String,

val profileImage: String? = null,

)
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ interface UserRepository : CrudRepository<User, Long> {

fun existsByIdentifier(userId: String): Boolean

fun existsByEmail(email: String): Boolean

fun findByIdentifier(userId: String): User?

}

0 comments on commit e6945df

Please sign in to comment.