Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
2eab551
feat: #1 API 응답 통일 코드 작성
Jinho622 Mar 27, 2025
a283cb0
Merge pull request #2 from Capstone2-team4/feature/#1-api-response-un…
Jinho622 Mar 27, 2025
d37f5ca
feat: #3 에러 핸들러 코드 작성
Jinho622 Mar 27, 2025
14e4ed8
Merge pull request #4 from Capstone2-team4/feature/#3-error-handler
Jinho622 Mar 27, 2025
189b6c0
feat: #5 회원, 코드, 코드 카테고리 domain 작성
Jinho622 Mar 27, 2025
dd44318
Merge pull request #6 from Capstone2-team4/feature/#5-domain-users-co…
Jinho622 Mar 27, 2025
de76acb
feat: #7 swagger설정
Jinho622 Mar 27, 2025
47336b0
Merge pull request #8 from Capstone2-team4/feature/#7-swagger
Jinho622 Mar 27, 2025
c29eaf5
feat: #10 category 등록, 조회
MINO1020 Mar 30, 2025
ff0677c
Merge pull request #11 from Capstone2-team4/feat/#10-category-api
MINO1020 Mar 30, 2025
b8cabc6
응답형식 수정<responseEntity>
MINO1020 Mar 31, 2025
5b8f88e
feat: #9 회원가입 기능 구현
Jinho622 Mar 31, 2025
a1493ae
Merge branch 'develop' into feature/#9-signup
Jinho622 Mar 31, 2025
bedd224
Merge pull request #13 from Capstone2-team4/feature/#9-signup
Jinho622 Mar 31, 2025
55c1785
refactor: #14 controller 및 DTO폴더 구조 변경
Jinho622 Mar 31, 2025
81fdb3e
feat: #14 Spring security와 Jwt를 활용한 로그인(인증) 및 인가 기능 구현
Jinho622 Mar 31, 2025
fb9d91b
Merge pull request #15 from Capstone2-team4/feature/#14-signin-spring…
Jinho622 Mar 31, 2025
c209e7e
feat: #16 access token에서 userId추출하는 기능 구현
Jinho622 Mar 31, 2025
47f1fbe
Merge pull request #17 from Capstone2-team4/feature/#16-access-token-…
Jinho622 Mar 31, 2025
91e9416
Merge branch 'develop' of https://github.com/Capstone2-team4/LogIT_BE…
MINO1020 Apr 2, 2025
e26ffd0
코드 저장
MINO1020 Apr 7, 2025
694c9f3
Merge pull request #19 from Capstone2-team4/feat/#12-코드-관련-기능-구현
MINO1020 Apr 7, 2025
4334a2b
github관련 entity 설정
MINO1020 Apr 7, 2025
9c89da1
Merge pull request #21 from Capstone2-team4/Chore/#20-github관련-entity설정
MINO1020 Apr 7, 2025
c06d7a4
git commit-list db 저장 기능
MINO1020 Apr 8, 2025
71a6e45
커밋 부모-자식 관계 삽입 구현
MINO1020 Apr 9, 2025
0cf7b04
commit detail 조회 기능
MINO1020 Apr 12, 2025
06784b5
feat: #18 깃허브 로그인 구현
Jinho622 Apr 12, 2025
7171a05
Merge pull request #23 from Capstone2-team4/feature/#18-github-oauth2…
Jinho622 Apr 12, 2025
9db824d
Merge branch 'develop' of https://github.com/Capstone2-team4/LogIT_BE…
MINO1020 Apr 13, 2025
24b983f
org, orgRepo, PrivateRepo entity 추가, 연관관계 수정
MINO1020 Apr 13, 2025
4395e97
commit list, detail api에 유저 인증 로직 추가
MINO1020 Apr 13, 2025
a308c03
commit list 로직 수정(날짜 기준 최신만 수정되게)
MINO1020 Apr 13, 2025
4ccf46c
Merge pull request #24 from Capstone2-team4/feat/#22-github-commit-li…
MINO1020 Apr 13, 2025
91ef1ec
entity 수정, 응답 구조 변경
MINO1020 Apr 13, 2025
1c2eb62
Merge pull request #26 from Capstone2-team4/refactor/#25-commit-list-…
MINO1020 Apr 13, 2025
cdddb31
stash를 위한 커밋
MINO1020 Apr 14, 2025
c9bf4f2
Merge branch 'refactor/#25-commit-list-api-응답-수정' into feat/#-27-user…
MINO1020 Apr 14, 2025
8ad50f7
Merge pull request #28 from Capstone2-team4/feat/#-27-user-org-repo-a…
MINO1020 Apr 14, 2025
fde0d0e
CORS 해결
MINO1020 Apr 14, 2025
ab8f018
Merge pull request #32 from Capstone2-team4/refactor/#31-CORS-관련-conf…
MINO1020 Apr 14, 2025
116a542
feat: #29 깃허브 소셜 로그인 기능 삭제, 대신 일반 로그인 후 깃허브에 등록(깃허브 OAuth2로 PAT가져오기)하…
Jinho622 Apr 14, 2025
19c3c24
Merge branch 'develop' into feature/#29-register-github-get-pat
Jinho622 Apr 14, 2025
eb01615
Merge pull request #33 from Capstone2-team4/feature/#29-register-gith…
Jinho622 Apr 14, 2025
87a6372
feat: #34 글 관련 CRUD API 구현 완료
Jinho622 Apr 15, 2025
b66c408
Merge pull request #35 from Capstone2-team4/feature/#34-record-crud-api
Jinho622 Apr 15, 2025
149250b
feat: #36 글 리스트 조회 api와 글 작성 api의 response에 author추가
Jinho622 Apr 16, 2025
85154d9
Merge pull request #37 from Capstone2-team4/feature/#36-get-record-li…
Jinho622 Apr 16, 2025
613a8df
feat: #38 글 작성 api의 response의 content가 70자 이상이라면 자르고 ...붙이기
Jinho622 Apr 16, 2025
979c0e2
Merge pull request #39 from Capstone2-team4/feature/#38-create-record…
Jinho622 Apr 16, 2025
e8021df
refactor/-커밋 응답 제한 100개로 수정
MINO1020 Apr 17, 2025
b0ce641
Merge pull request #41 from Capstone2-team4/refactor/#40-커밋-응답-개수-수정
MINO1020 Apr 17, 2025
a70215c
branch entity , 로직수정
MINO1020 May 15, 2025
89e8fbc
Merge pull request #43 from Capstone2-team4/refactor/#42-github-branc…
MINO1020 May 15, 2025
76bf640
feat: #44 Dockerfile, workflow파일(main.yml) 생성
Jinho622 May 21, 2025
13771b9
Merge pull request #45 from Capstone2-team4/feature/#44-ci-cd-deploy-…
Jinho622 May 21, 2025
679c70f
refactor: #46 workflow파일(main.yml)의 ubuntu버전을 ec2의 ubuntu버전인 22.04로 변경
Jinho622 May 21, 2025
0cc5a0c
Merge pull request #47 from Capstone2-team4/refactor/#46-edit-workflo…
Jinho622 May 21, 2025
0bd4c4d
refactor: #49 Workflow파일(main.yml)에서 application.yml파일 생성하는 위치 지정하는 상…
Jinho622 May 21, 2025
a09406c
Merge pull request #50 from Capstone2-team4/refactor/#49-edit-workflo…
Jinho622 May 21, 2025
126380d
refactor: #51 Workflow파일(main.yml)에서 application.yml파일 생성 위치 상대경로 './…
Jinho622 May 21, 2025
b79646d
Merge pull request #52 from Capstone2-team4/refactor/#51-workflow-yml…
Jinho622 May 21, 2025
77ffe0a
refactor: #53 Workflow파일(main.yml)에서 application.yml파일생성할때 './src/mai…
Jinho622 May 21, 2025
89d11be
Merge pull request #54 from Capstone2-team4/refactor/#53-workflow-fil…
Jinho622 May 21, 2025
d3169c1
fix: #55 Workflow파일(main.yml)에서 github action에서 ec2접속 후 docker hub에서 …
Jinho622 May 21, 2025
a317910
Merge pull request #56 from Capstone2-team4/fix/#55-workflow-file-git…
Jinho622 May 21, 2025
06c0b6b
feat: #57 Workflow파일(main.yml)에서 ec2에 docker 명령어 실행하기 전 'cd logit-ser…
Jinho622 May 21, 2025
26fbca7
Merge pull request #58 from Capstone2-team4/feature/#57-workflow-file…
Jinho622 May 21, 2025
11cc9e0
refactor: github action의 docker명령어 수정
Jinho622 May 22, 2025
2fe8d6a
pull remote develop branch to local develop branch
Jinho622 May 22, 2025
3e948ea
workflow file(main.yml)에서 ec2에서 실행하는 docker 명령어 수정
Jinho622 May 22, 2025
2626c56
jar파일을 도커 이미지로 빌드하는 Dockerfile수정
Jinho622 May 22, 2025
f4d329f
A
Jinho622 May 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# cicd.yml
# github repository Actions 페이지에 나타낼 이름
name: LogIT A CI/CD with Gradle

# event trigger
# main, develop 브랜치에 push, pr 생성시 실행되는 트리거
on:
pull_request:
branches: [ "main" ]


jobs:
build:
runs-on: ubuntu-22.04
steps:
## jdk setting
- uses: actions/checkout@v3
- name: 🐧Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'

## gradle caching
- name: 🐧Gradle Caching
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-

- name: 🐧application.yml 파일을 생성 합니다.
run: |
mkdir -p ./src/main/resources # 디렉토리가 없으면 생성
touch ./src/main/resources/application.yml # application.yml 파일 생성
echo "${{ secrets.PROPERTIES }}" > ./src/main/resources/application.yml
shell: bash

- name: 🐧gradle build를 위한 권한을 부여합니다.
run: chmod +x gradlew

- name: 🐧gradle build 중입니다.
run: ./gradlew build
shell: bash # ci는 여기까지

- name: 🐧docker image build 후 docker hub에 push합니다.
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
docker build -f Dockerfile -t ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_IMAGE }} .
docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_IMAGE }}

## deploy to production
- name: docker hub에서 pull 후 deploy합니다.
uses: appleboy/ssh-action@master
# id: deploy-prod
with:
username: ${{ secrets.EC2_USERNAME }}
host: ${{ secrets.EC2_HOST }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
envs: GITHUB_SHA
script: |
cd logit-server
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.DOCKER_IMAGE }}
sudo docker rm -f $(sudo docker ps -aq) || true
sudo docker-compose up -d
sudo docker image prune -f
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,5 @@ out/

### VS Code ###
.vscode/

application.yml
14 changes: 14 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# 도커 이미지 지정
FROM openjdk:21

WORKDIR /app/logit

# 빌드된 파일의 위치를 argument로 지정
ARG JAR_PATH=../build/libs
ARG RESOURCE_PATH=../build/resources/main/

# 위의 경로의 파일을 이미지 내부의 app.jar로 복사
COPY ${JAR_PATH}/*.jar /app/logit/LogIT.jar

# 컨테이너 시작시 명령어. 즉 해당 jar파일을 실행하겠다는 것
ENTRYPOINT [ "java", "-jar", "LogIT.jar" ]
34 changes: 33 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,44 @@ repositories {
}

dependencies {
// web
implementation 'org.springframework.boot:spring-boot-starter-web'

// lombok
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'

// mysql
runtimeOnly 'com.mysql:mysql-connector-j'

// test
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

// validation
implementation 'org.springframework.boot:spring-boot-starter-validation'

// jpa
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

// swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.4'

// spring security
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'

//Jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'

// GSON
implementation 'com.google.code.gson:gson:2.11.0'

// redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
}

tasks.named('test') {
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/BranchResponseDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package LogITBackend.LogIT.DTO;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class BranchResponseDTO {
private String branchName;
}
18 changes: 18 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/CategoryRequestDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package LogITBackend.LogIT.DTO;

import LogITBackend.LogIT.domain.CodeCategories;
import LogITBackend.LogIT.domain.Users;
import lombok.Getter;

@Getter
public class CategoryRequestDTO {
private String category;

public CodeCategories ToEntity(Users user) {
return CodeCategories.builder()
.name(category)
.users(user)
.build();

}
}
17 changes: 17 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/CategoryResponseDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package LogITBackend.LogIT.DTO;

import LogITBackend.LogIT.domain.CodeCategories;
import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class CategoryResponseDTO {
private String category;

public static CategoryResponseDTO ToDTO(CodeCategories category) {
return CategoryResponseDTO.builder()
.category(category.getName())
.build();
}
}
30 changes: 30 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/CodeRequestDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package LogITBackend.LogIT.DTO;

import LogITBackend.LogIT.domain.CodeCategories;
import LogITBackend.LogIT.domain.Codes;
import LogITBackend.LogIT.domain.Users;
import lombok.Getter;

@Getter
public class CodeRequestDTO {
public String title;
public String filePath;
public int line;
public String content;
public String code;
public String category;

public Codes toEntity(Users user, CodeCategories category) {
return Codes.builder()
.users(user)
.fileLocation(filePath)
.title(title)
.code(code)
.content(content)
.line(line)
.codeCategories(category)
.build();


}
}
25 changes: 25 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/CodeResponseDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package LogITBackend.LogIT.DTO;

import LogITBackend.LogIT.domain.Codes;
import lombok.Builder;

@Builder
public class CodeResponseDTO {
public String title;
public String filePath;
public int line;
public String content;
public String code;
public String category;

public static CodeResponseDTO toDTO(Codes codes) {
return CodeResponseDTO.builder()
.title(codes.getTitle())
.content(codes.getContent())
.line(codes.getLine())
.filePath(codes.getFileLocation())
.category(codes.getCodeCategories().getName())
.code(codes.getCode())
.build();
}
}
15 changes: 15 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/CommitDetailResponseDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package LogITBackend.LogIT.DTO;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommitDetailResponseDTO {
private CommitResponseDTO commitResponseDTO;
private List<FileResponseDTO> files;
}
30 changes: 30 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/CommitResponseDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package LogITBackend.LogIT.DTO;


import LogITBackend.LogIT.domain.Commit;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommitResponseDTO {
private String id; //Commit id
private Long repo_id;
private String message;
private String stats;
private LocalDateTime date;

public static CommitResponseDTO fromEntity(Commit commit) {
return new CommitResponseDTO(
commit.getId(),
commit.getBranch().getId(),
commit.getMessage(),
commit.getStats(),
commit.getDate()
);
}
}
40 changes: 40 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/FileResponseDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package LogITBackend.LogIT.DTO;

import LogITBackend.LogIT.domain.File;
import jakarta.persistence.Column;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.LastModifiedDate;

import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class FileResponseDTO {
private Long id;

private String filename;

private Long additions;

private Long deletions;

private String patch;

private LocalDateTime createdAt;
private LocalDateTime updatedAt;

public static FileResponseDTO fromEntity(File file) {
return new FileResponseDTO(
file.getId(),
file.getFilename(),
file.getAdditions(),
file.getDeletions(),
file.getPatch(),
file.getCreatedAt(),
file.getUpdatedAt()
);
}
}
15 changes: 15 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/GithubRepoResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package LogITBackend.LogIT.DTO;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class GithubRepoResponse {
private String ownerName;
private List<RepositoryResponseDTO> repoList;
}
12 changes: 12 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/OrgResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package LogITBackend.LogIT.DTO;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class OrgResponse {
private String OrgName;
}
28 changes: 28 additions & 0 deletions src/main/java/LogITBackend/LogIT/DTO/RecordRequestDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package LogITBackend.LogIT.DTO;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.Optional;

public class RecordRequestDTO {
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class CreateRecordRequestDTO {
private String title;
private String content;
}

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class EditRecordRequestDTO {
private Optional<String> title;
private Optional<String> content;
}
}
Loading