Skip to content

Commit

Permalink
Merge pull request #10 from kakao-tech-campus-2nd-step3/Master
Browse files Browse the repository at this point in the history
  • Loading branch information
leaf-upper authored Sep 21, 2024
2 parents cfc7ad9 + 46c347a commit 10acf67
Show file tree
Hide file tree
Showing 29 changed files with 1,029 additions and 0 deletions.
19 changes: 19 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
name: Feature request
about: 기능 추가 이슈 템플릿
title: ''
labels: ''
assignees: ''

---

## **Issue**

### ✨ 기능 리스트
- [ ] 구현한 기능
- [ ] 구현한 기능
---

### ✏ 사용 이유

---
15 changes: 15 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## **PR**

### ✨ 작업 내용
-
---

### ✨ 참고 사항
- 팀원들에게 알려야하는 사항들을 적어주세요
---

### ⏰ 현재 버그
- 해결해야할 버그를 기재해주세요
---

### ✏ Git Close
73 changes: 73 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: Java CI

on:
workflow_dispatch:
push:
branches:
- 'Master'

jobs:
ci-pipeline:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '21'

- name: Create application.yaml
run: |
mkdir -p src/main/resources
echo "${{ secrets.APPLICATION_YAML }}" > src/main/resources/application.yaml
cat src/main/resources/application.yaml
shell: bash

- name: Grant execute permission for Gradle Wrapper
run: chmod +x ./gradlew

- name: Build with Gradle
run: ./gradlew build

- name: Test with Gradle
run: ./gradlew test

# 경로 확인
- name: Verify JAR file
run: ls build/libs/*.jar

# Docker 로그인
- name: Docker Login
uses: docker/[email protected]
with: # 도커 로그인에 필요한 입력값
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
# 위 과정을 통해 후속 단계에서 이미지를 푸시할 수 있는 권한 얻음

# Docker 이미지 빌드 및 푸시
- name: image build and push docker images
uses: docker/[email protected]
with:
context: . # 빌드할 도커 파일이 있는 디렉토리
push: true # 이미지 빌드 후 Docker Hub 에 이미지 푸시 여부
tags: ${{ secrets.DOCKER_USERNAME }}/katecam-backend:latest # Docker Hub 사용자 이름, 리포지토리 이름, 빌드된 이미지에 붙일 태그
no-cache: true # 이미지 빌드 시 캐시 사용 여부

# EC2 인스턴스에 Docker 이미지 배포
- name: Deploy to AWS EC2
uses: appleboy/[email protected]
with:
host: ${{ secrets.AWS_HOST_IP }} # 인스턴스 IP
username: ${{ secrets.REMOTE_USER }} # 우분투 ID
key: ${{ secrets.AWS_EC2_PRIVATE_KEY }} # EC2 인스턴스 pem key
port: ${{ secrets.REMOTE_SSH_PORT }} # 접속 포트(생략 시 22번 기본 사용)
script: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker pull ${{ secrets.DOCKER_USERNAME }}/katecam-backend:latest
docker stop katecam-backend
docker rm $(docker ps --filter 'status=exited' -a -q)
docker run -d --name katecam-backend --network katecam-backend --log-driver=syslog -p 8080:8080 ${{ secrets.DOCKER_USERNAME }}/katecam-backend:latest
37 changes: 37 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
13 changes: 13 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# 도커 이미지를 빌드할 때 필요한 커맨드를 가짐

# jdk21 image start
FROM openjdk:21

# 인자 설정 - JAR_File
ARG JAR_FILE=build/libs/*.jar

# jar 파일 복제
COPY ${JAR_FILE} app.jar

# 실행 명령어
ENTRYPOINT ["java", "-jar", "app.jar"]
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,20 @@
# Team9_BE
9조 백엔드

## 백엔드 역할 분담

1. 검색 - 심규민
2. 로그인 및 회원 가입 + 작가 + 팔로우 - 윤재용
3. 채팅 + 파일 - 박한솔
4. 상품(피드), 좋아요, 감상평 - 주보경
5. 인프라(ci/cd, https, 모니터링) - 김동현

## 진행상황
1. ERD 설계에 따라 Entity 구현. 세부 구현사항이 남아있음
2. RULE.md에 각종 프로젝트 규칙 정의
3. 매주 월요일 정기회의
4. 다음주까지 각자 1차 구현 후, 회의를 통해 step 3 조별 멘토링을 통해 추가 피드백을 통해 수정.


## 리뷰사항
연휴 이후 다음주 부터 본격적인 개발에 들어가려 합니다. 열심히하겠습니다! 감사합니다.
72 changes: 72 additions & 0 deletions RULE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
## Pull Reqeust 규칙

## 브랜치 규칙
0. **조장/테크리더가 Weekly 브랜치 생성**
- 4주차부터는 이전 주차 Master 브랜치를 클론

1. **각자 배정받은 기능 목표한 날짜까지 구현**
- 구현한 기능은 Weekly 브랜치에 commit
1. **기능별 브랜치 생성**
- 포크 없이 프로젝트에 브랜치 생성시 브랜치 이름은 `feature/#이슈넘버-기능으로 생성
- ex) docs/#1-README.md
2. **프로젝트 리뷰 미팅을 통해 오류 해결 및 보고서 작성**
- 조장/테크리더는 이후 Weekly에서 Develop으로 conflict 해결 및 merge

## 커밋 규칙

- 커밋 메시지는 크게 **제목**, **본문**의 두 파트로 구분한다.
- 각 파트는 **빈 줄**로 구별한다.
```
type(옵션): [#issueNumber] subject  // -> 제목
body(옵션) // -> 본문
예시: docs:[#1]-ADD
RULE.md 작성
```


### type 종류
| `feat` | 새로운 기능 추가 | **기능** |
| --- | --- | --- |
| `fix` | 버그 수정 | **기능** |
| `design` | CSS/UI 변경 | **기능** |
| `style` | 코드 포맷팅 (코드에 논리적 변경사항이 없는 경우) | **개선** |
| `refactor` | 코드 리팩토링. 새로운 기능이나 버그 수정 없이 현재 구현을 개선 | **개선** |
| `comment` | 필요한 주석 추가 및 변경 | **개선** |
| `establish` | 초기 환경설정 / 설정 파일 추가 | 기타 |
| `docs` | 문서 수정 | 기타 |
| `test` | 테스트 코드 추가 | 기타 |
| `chore` | 빌드 업무, 패키지 매니저 수정 | 기타 |
| `remove` / `rename` | 파일 삭제 / 파일명 변경 | 기타 |
| `!HOTFIX` | 긴급한 버그 수정 (핫픽스) | 기타 |

### 제목 작성법

---
제목은 코드 변경 사항에 대한 짧은 요약으로, 다음과 같은 규칙을 가짐
동사 원형으로 시작한다.
```
커밋 메시지 템플릿 추가 (X)
추가 - 커밋 메시지 템플릿 (O)
```
**커밋 제목에 사용되는 영단어 예시**

| **Fix** | 올바르지 않은 동작을 수정 |
| --- | --- |
| **Add** | 코드, 예제, 문서 추가 |
| **Remove** | 코드 삭제 |
| **Update** | 원래도 정상적으로 동작하던 것을 수정, 추가, 보완 |
| **Simplify** | 복잡한 코드를 단순화 (약한 Refactor) |
| **Refactor** | 코드의 전면 수정 |
| **Improve** | 호환성, 테스트 커버리지, 성능의 향상 |
| **Implement** | 구현체 완성 |
| **Correct** | 문법 오류나 타입의 수정 |

### 본문 작성법
가독성을 위해 한 줄당 75자 이내로 제한하지만, 전체 내용은 **양에 상관없이 최대한 상세하게 작성.**

## 코드 컨벤션
구글 자바 스타일 가이드에 따라 작성.
https://google.github.io/styleguide/javaguide.html
42 changes: 42 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.3'
id 'io.spring.dependency-management' version '1.1.6'
}

group = 'com.helpmeCookies'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// Spring docs
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0'
}

tasks.named('test') {
useJUnitPlatform()
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading

0 comments on commit 10acf67

Please sign in to comment.