Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
56 changes: 56 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Workflow의 이름을 지정
name: BackEnd - CI/CD - build

on:
pull_request:
# main branch, develop branch에 pr 할경우 동작합니다.
branches: [ "main", "develop" ]
push:
# develop branch에 push 하면 동작합니다.
branches: [ "develop" ]

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
environment: build

steps:
- uses: actions/checkout@v3
# JDK를 21 버전으로 셋팅
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'

# Gradle을 캐싱 -> 빌드 속도가 증가하는 효과
- name: Gradle 캐싱
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: Make application.properties
run: |
cd ./src/main
mkdir resources
cd ./resources
touch ./application.properties
echo "$APPLICATION" > ./application.properties
env:
APPLICATION: ${{ secrets.APPLICATION }}
shell: bash

- name: Gradle 권한 부여
run: chmod +x gradlew

- name: Gradle로 빌드 실행
run: ./gradlew bootjar
7 changes: 4 additions & 3 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Workflow의 이름을 지정
name: BackEnd - CI/CD
name: BackEnd - CI/CD - deploy

on:
push:
Expand All @@ -10,8 +10,9 @@ permissions:
contents: read

jobs:
build:
deploy:
runs-on: ubuntu-latest
environment: production

steps:
- uses: actions/checkout@v3
Expand All @@ -20,7 +21,7 @@ jobs:
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'oracle'
distribution: 'temurin'

# Gradle을 캐싱 -> 빌드 속도가 증가하는 효과
- name: Gradle 캐싱
Expand Down
15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@
### Commit Convention


| Commit Type | Description |
|-------------|------------------------------|
| feat | 기능 개발 |
| fix | 버그 수정 |
| docs | 문서 수정 |
| refactor | 코드 리팩토링 |
| test | 테스트 관련 코드 |
| Commit Type | Description |
|-------------|----------------------|
| feat | 기능 개발 |
| fix | 버그 수정 |
| docs | 문서 수정 |
| refactor | 코드 리팩토링 |
| test | 테스트 관련 코드 |
| chore | 빌드 업무 수정, 패키지 매니저 수정 |
| cicd | 배포 관련 작업 |
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
Expand All @@ -38,6 +40,9 @@ public class TeamService {
@Value("${cloud.aws.s3.bucket}")
private String bucket;

@Value("${cloud.aws.s3.url}")
private String bucketURL;

@Value("${cloud.aws.s3.folder.folderName2}")
private String projectImageBucketFolder; // aws에 추가하기

Expand Down Expand Up @@ -116,44 +121,50 @@ public void saveParticipation(final ParticipationEntity participation, final Pro
}

public Map<String, Object> getOnGoingProjects(int page, String search) {
final List<ProjectEntity> onGoingProjects = projectRepo.findAllByIsOnGoing(true, Sort.by(Sort.Direction.DESC, "createdAt"));
final List<ProjectEntity> endedProjects = projectRepo.findAllByIsOnGoing(false, Sort.by(Sort.Direction.DESC, "createdAt"));

// 두 리스트 합치기
List<ProjectEntity> projects = new ArrayList<>();
projects.addAll(onGoingProjects);
projects.addAll(endedProjects);

// search 값이 비어 있지 않으면 이름으로 필터링
if (search != null && !search.trim().isEmpty()) {
String lowerCaseSearch = search.toLowerCase(); // 대소문자 구분 없이 검색
projects = projects.stream()
.filter(project -> project.getName().toLowerCase().contains(lowerCaseSearch))
.collect(Collectors.toList());
}

// 전체 페이지 수 계산
int totalProjects = projects.size();
int totalPages = (int) Math.ceil((double) totalProjects / 8);

// 수동으로 페이지네이션
int start = Math.min(page * 8, projects.size());
int end = Math.min((page + 1) * 8, projects.size());

List<ProjectListResponseDTO> projectDTO = projects.subList(start, end).stream()
.map(project -> ProjectListResponseDTO.builder()
.id(project.getId())
.name(project.getName())
.start(project.isStart())
.deadlineAt(LocalDate.from(project.getDeadlineAt()))
.image(project.getImage())
.isOnGoing(project.isOnGoing())
.build())
.toList();

Map<String, Object> response = new HashMap<>();
response.put("projects", projectDTO);
response.put("totalPages", totalPages);
return response;
final List<ProjectEntity> onGoingProjects = projectRepo.findAllByIsOnGoing(true, Sort.by(Sort.Direction.DESC, "createdAt"));
final List<ProjectEntity> endedProjects = projectRepo.findAllByIsOnGoing(false, Sort.by(Sort.Direction.DESC, "createdAt"));

// 두 리스트 합치기
List<ProjectEntity> projects = new ArrayList<>();
projects.addAll(onGoingProjects);
projects.addAll(endedProjects);

// search 값이 비어 있지 않으면 이름으로 필터링
if (search != null && !search.trim().isEmpty()) {
String lowerCaseSearch = search.toLowerCase(); // 대소문자 구분 없이 검색
projects = projects.stream()
.filter(project -> project.getName().toLowerCase().contains(lowerCaseSearch))
.collect(Collectors.toList());
}

// 전체 페이지 수 계산
int totalProjects = projects.size();
int totalPages = (int) Math.ceil((double) totalProjects / 8);

// 수동으로 페이지네이션
int start = Math.min(page * 8, projects.size());
int end = Math.min((page + 1) * 8, projects.size());

List<ProjectListResponseDTO> projectDTO = projects.subList(start, end).stream()
.map(project -> {
try {
return ProjectListResponseDTO.builder()
.id(project.getId())
.name(project.getName())
.start(project.isStart())
.deadlineAt(LocalDate.from(project.getDeadlineAt()))
.image(project.getImage() != null ? bucketURL + URLEncoder.encode(project.getImage(), "UTF-8") : "")
.isOnGoing(project.isOnGoing())
.build();
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
})
.toList();

Map<String, Object> response = new HashMap<>();
response.put("projects", projectDTO);
response.put("totalPages", totalPages);
return response;
}
}