Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v2.1.0 릴리즈 #332

Merged
merged 185 commits into from
Aug 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
a2e4926
feat: 안드로이드 프로젝트 생성
rhthrhrl0 Jul 13, 2023
0013133
chore: #7 프로젝트 세팅 (#8)
JJ503 Jul 13, 2023
057963c
chore: gradle 설정
rhthrhrl0 Jul 13, 2023
fe73d9e
chore: #7 프로젝트 기초 세팅 추가 (#10)
JJ503 Jul 14, 2023
8fdca63
feat: 권한 설정
rhthrhrl0 Jul 14, 2023
c411ce1
feat: 기본 리소스 설정
rhthrhrl0 Jul 14, 2023
8538415
feat: 데이터 모듈 분리
rhthrhrl0 Jul 14, 2023
6b8eaa6
feat: 패키지 구조 설계
rhthrhrl0 Jul 14, 2023
9ef415f
feat: 공통 feature 관련 코드 작성
rhthrhrl0 Jul 14, 2023
e5badd6
rename: 패키지 이동
rhthrhrl0 Jul 14, 2023
dffec48
feat: 유틸 코드 작성
rhthrhrl0 Jul 14, 2023
e81da2d
feat: 바인딩 어댑터 코드 작성
rhthrhrl0 Jul 14, 2023
0b077cb
feat: Bottom Navigation 레이아웃 작성
ippnsj Jul 15, 2023
e240549
feat: 프래그먼트 이동 로직 추가
rhthrhrl0 Jul 15, 2023
59860ef
feat: #11 카테고리 엔티티 및 레포지토리 추가 (#19)
JJ503 Jul 17, 2023
0bb468a
feat: #12 카테고리 api 추가 (#23)
JJ503 Jul 17, 2023
f5af12e
feat: #13 지역 엔티티 및 레포지토리 추가 (#24)
JJ503 Jul 17, 2023
5b99342
feat: #14 지역 api 추가 (#32)
JJ503 Jul 18, 2023
398d6db
feat: #17 경매 상품 등록 페이지 그리고 MVVM 구조 설계 (#33)
hyemdooly Jul 18, 2023
b53feb3
feat: #26 경매 엔티티 및 레포지토리(등록) 추가 (#37)
JJ503 Jul 18, 2023
e179faf
feat: #20 경매 상품 등록 페이지 날짜, 시간 Picker 추가 (#38)
hyemdooly Jul 18, 2023
d63e6d6
feat: #27 경매 api(등록) 추가 (#41)
JJ503 Jul 18, 2023
3ecfdb4
feat: #28 경매 레포지토리(상세 조회) 테스트 추가 (#42)
JJ503 Jul 18, 2023
0671317
feat: #30 경매 api(상세 조회) 추가 (#43)
JJ503 Jul 18, 2023
872793e
feat: #29 경매 도메인 엔티티 삭제 비즈니스 로직 추가 (#45)
JJ503 Jul 18, 2023
cc615f1
feat: #31 경매 api(삭제) 추가 (#46)
JJ503 Jul 18, 2023
6602d3c
경매 상품 상세 페이지 UI 추가 (#39)
rhthrhrl0 Jul 18, 2023
41906ee
chore: #47 queryDsl 설정 추가 (#52)
JJ503 Jul 19, 2023
7af652e
refactor: 이미지, 카테고리, 지역 필드 임시 추가 (#53)
JJ503 Jul 19, 2023
feb0eba
feat: #22 경매 상품 목록 레이아웃 작성 (#54)
ippnsj Jul 19, 2023
f3d9450
chore: #60 gradle 설정 변경 (#61)
JJ503 Jul 19, 2023
0cfb79e
feat: #48 경매 api(목록) 추가 (#58)
JJ503 Jul 19, 2023
4d1f58c
feat: #18 경매 상품 등록 페이지 이미지 URL 업로드와 서버 전송 준비, Picker 스타일 변경 (#55)
hyemdooly Jul 19, 2023
c6f0361
feat: #59 경매 상품 선택 시 경매 상세를 보여주는 기능 구현 (#62)
ippnsj Jul 19, 2023
83f0b97
refactor: #65 API 명세 변경 (#67)
JJ503 Jul 19, 2023
5e3e863
chore: #35 git submodule 적용 (#64)
apptie Jul 19, 2023
cb826d5
chore: #68 테스트 환경 설정 추가 (#69)
JJ503 Jul 19, 2023
d4a4dd7
feat: #63 경매 상품 목록에서 경매 등록 페이지로 이동하는 기능 구현 (#66)
ippnsj Jul 19, 2023
391fd0b
rename: 패키지 이동
ippnsj Jul 19, 2023
bd1dde7
chore: gradle 변경
ippnsj Jul 19, 2023
7c75d7e
feat: retrofit service 및 DTO 작성
ippnsj Jul 19, 2023
f48ced3
feat: repository 작성
ippnsj Jul 19, 2023
d08411f
chore: #35 build script 추가 (#71)
apptie Jul 19, 2023
e4bd2e1
ci: #35 jenkins pipeline script 추가 (#72)
apptie Jul 19, 2023
5e5b109
feat: #76 경매 dummy 데이터 추가 (#77)
JJ503 Jul 19, 2023
61fe1b0
chore: dev설정에 console-log 추가 (#78)
JJ503 Jul 19, 2023
df939d4
!hotfix: 젠킨스 권한 설정 추가
JJ503 Jul 19, 2023
8315c4b
!hotfix: 젠킨스 권한 설정 변경
JJ503 Jul 19, 2023
6865b74
fix: #79 API 명세 수정 (#80)
JJ503 Jul 20, 2023
0471f50
feat: 경매 상품 목록 조회 api 연동
ippnsj Jul 20, 2023
ad11e93
!hotfix: 경매 상세 api 변경
JJ503 Jul 20, 2023
4d43577
!hotfix: 경매 상세 api 변경
JJ503 Jul 20, 2023
8de0230
!hotfix: log 설정 변경
JJ503 Jul 20, 2023
aa472fe
!hotfix: 경매 api 변경
JJ503 Jul 20, 2023
6f71b18
test: #83 경매 상품 목록 조회 테스트 추가 (#85)
ippnsj Jul 20, 2023
9cc43b4
feat: #50 경매 상세 페이지 UI 모델 작성 및 데이터바인딩 연결 (#84)
rhthrhrl0 Jul 20, 2023
7f3b4e6
ci: #73 jenkins slack notification 설정 추가 (#89)
apptie Jul 20, 2023
3abf152
feat: #82 경매 상품 등록 서버 연동 (#86)
hyemdooly Jul 20, 2023
b89cdb1
test: #57 AuctionService 예외 케이스 테스트 추가 (#90)
apptie Jul 20, 2023
8f85bff
test: #91 Repository 테스트 작성 - 경매 상품 등록, 상세 정보 (#93)
hyemdooly Jul 20, 2023
77821ed
test: #92 경매 상품 목록 페이지 ViewModel 테스트 추가 (#95)
ippnsj Jul 20, 2023
ef0b90a
feat: #87 경매 상세 페이지 서버 연동 작업 추가 (#96)
rhthrhrl0 Jul 20, 2023
2e44c6a
ci: #75 sonarqube와 github actions 설정 (#94)
apptie Jul 20, 2023
6eac27d
ci: #75 sonarqube 관련 pr decorator yml 변경 (#102)
apptie Jul 25, 2023
a3f7f22
feat: #105 사용자 엔티티 생성 (#112)
JJ503 Jul 25, 2023
e99673f
feat: #117 경매 데이터 캐싱 전략 적용 (#123)
ippnsj Jul 26, 2023
19b7452
feat: #124 CallAdapter 적용 (#125)
ippnsj Jul 26, 2023
c1f7366
test: #108 통합 테스트, 인수 테스트 격리 설정 (#110)
apptie Jul 27, 2023
e7ba2b9
feat: #111 지역 초기 데이터 저장 기능 추가 (#115)
apptie Jul 27, 2023
1da7523
feat: #113 입찰 엔티티 및 레포지토리 추가 (#119)
JJ503 Jul 27, 2023
e4ea159
chore: mysql 의존성 추가 (#132)
swonny Jul 27, 2023
fdad519
feat: #101 경매 상품 등록 페이지 DatePicker month -1 버그 (#133)
hyemdooly Jul 27, 2023
e723482
feat: #126 경매 목록 무한 스크롤 구현 (#127)
ippnsj Jul 27, 2023
03672ef
refactor: #130 BaseTimeEntity 생성, 수정 시간 분리 (#135)
JJ503 Jul 28, 2023
87b69a9
feat: #128 경매 등록 사진 업로드 레이아웃 작성 및 사진 삭제 기능 구현 (#138)
ippnsj Jul 28, 2023
3751407
test: #99 경매 상세 ViewModel 테스트 코드 작성 (#129)
rhthrhrl0 Jul 28, 2023
bcb8bf9
feat: #118 채팅 기능 구현에 필요한 엔티티 생성 (#122)
kwonyj1022 Jul 28, 2023
f828a84
feat: #131 경매 입찰 요청 팝업창 UI 추가 (#141)
rhthrhrl0 Jul 28, 2023
273a67e
feat: #116 지역 엔티티, 경매 엔티티 연동 (#137)
apptie Jul 28, 2023
5d956d8
feat: #142 경매 등록 시 갤러리에서 사진 선택하는 기능 구현 (#148)
ippnsj Jul 31, 2023
b1c8bcc
feat: #136 카테고리 선택 Activity UI, 구조 작성 (#153)
hyemdooly Jul 31, 2023
0244cda
feat : #140 경매 이미지 엔티티, 카테고리 엔티티, 경매 엔티티 연동 (#149)
apptie Jul 31, 2023
d8a39cf
feat: #143 입찰 가격 입력 뷰 수정 및 비지니스 로직 뷰모델로 분리 (#154)
rhthrhrl0 Jul 31, 2023
3c65ce2
!hotfix: flyway mysql 의존성 추가 (#160)
swonny Jul 31, 2023
8ab1610
!hotfix: flyway 적용 (#163)
swonny Jul 31, 2023
3e80359
!hotfix: auction DB 데이터타입 변경 (#165)
swonny Jul 31, 2023
6847e56
ci: #166 운영 서버 빌드 스크립트 작성 (#167)
swonny Jul 31, 2023
865855e
!hotfix: prod-pipeline.jenkinsfile 오타 수정 (#171)
swonny Jul 31, 2023
9fbe5be
feat: #159 이미지 Uri를 MultipartBody로 변환 (#162)
ippnsj Aug 1, 2023
abf2acb
feat: #176 경매 등록 api 변경 (#177)
apptie Aug 1, 2023
55e5c20
!hotfix: 개발 환경 jenkins pipeline script 수정 (#178)
apptie Aug 1, 2023
e03b74a
refactor: #173 카테고리 조회, 직거래 지역 조회 api 수정 (#174)
apptie Aug 1, 2023
96c8c85
feat: #120 입찰 api(등록) 추가 (#156)
JJ503 Aug 1, 2023
cff1804
feat: #175 경매 등록 시 갤러리에 있는 이미지를 서버로 전송하는 기능 구현 (#182)
ippnsj Aug 1, 2023
5b7e6d0
feat: #157 입찰 api(조회) 추가 (#183)
JJ503 Aug 1, 2023
f12cbb4
!hotfix: 경매 이미지 설정 제거 (#184)
apptie Aug 1, 2023
79a6de4
feat: #151 채팅 전송 기능 추가 (#155)
swonny Aug 1, 2023
96734c1
feat: #161 지역 선택 페이지 UI 추가, 구조 설계 (#179)
hyemdooly Aug 2, 2023
f047a06
feat: #185 경매 엔티티에 판매자 필드 추가 (#187)
apptie Aug 2, 2023
9e60ea6
!hotfix: 이미지 업로드 용량 설정 추가 (#190)
apptie Aug 2, 2023
8b34eb9
refactor: #191 경매 엔티티에 카테고리 엔티티, 직거래 지역 엔티티 연관관계 세팅 방식 변경 (#192)
apptie Aug 2, 2023
753d51e
feat: #193 이미지를 압축하여 캐시에 저장하는 기능 구현 (#195)
ippnsj Aug 2, 2023
26c44e4
chore: 파이어베이스 analytics 추가
ippnsj Aug 2, 2023
2a4062f
design: 아이콘 변경
hyemdooly Aug 2, 2023
b162303
feat: #180 카테고리 선택 페이지 서버 연동 (#188)
hyemdooly Aug 3, 2023
04c2cfd
feat: #181 지역 선택 페이지 서버 연동 (#194)
hyemdooly Aug 3, 2023
9ca8693
docs: #189 예외 핸들링, 테스트 케이스, 문서 추가 (#198)
apptie Aug 3, 2023
4070c2f
feat: #186 입찰 시 판매자 검증 로직 추가 (#199)
JJ503 Aug 3, 2023
258c13e
feat: #144 채팅방 목록 조회 api 추가 (#197)
kwonyj1022 Aug 3, 2023
c634ed0
!hotfix: flyway로 인해 기존 데이터의 입찰자 수가 null이 되는 문제 해결 (#202)
JJ503 Aug 3, 2023
e997dc2
feat: #196 경매 입찰 기능 서버 연동 (#200)
rhthrhrl0 Aug 3, 2023
9075272
!hotfix: 두 가지 예외 통합 (#204)
JJ503 Aug 3, 2023
dd8a6ed
feat: Analytics Screen View 로그 이벤트 추가
ippnsj Aug 3, 2023
a243765
feat: #201 등록 페이지와 카테고리, 지역 선택 페이지 연결 (#203)
hyemdooly Aug 3, 2023
7ba1426
refactor: #205 경매 입찰 응답 메시지 수정 (#206)
rhthrhrl0 Aug 3, 2023
9dbe4b5
chore: 파이어베이스 crashlytics 추가
rhthrhrl0 Aug 3, 2023
c78cff3
fix: #208 상세 정보에서는 입찰자 수가 0으로 전달되는 문제 해결 (#209)
JJ503 Aug 4, 2023
31d19a7
feat: 3차 데모데이 기능 운영 서버 배포 (#214)
JJ503 Aug 6, 2023
111f4a4
docs: #158 입찰 관련 테스트 추가 및 api 문서 (#213)
JJ503 Aug 6, 2023
af1df6b
feat: #145 채팅방 상세 정보 조회 api 추가 (#212)
kwonyj1022 Aug 8, 2023
12f609d
feat: #227 카카오 소셜로그인 기능 구현 (#229)
ippnsj Aug 8, 2023
1d005b9
feat: #225 회원 가입, 로그인 기능 구현 (#231)
apptie Aug 9, 2023
e248ef6
!hotfix: flyway script 오타 수정 (#243)
apptie Aug 9, 2023
d945ca0
feat: #230 카카오 소셜로그인 서버 연동 (#241)
ippnsj Aug 9, 2023
2040145
flyway version 5 script 누락된 컬럼 변경 사항 추가 (#245)
apptie Aug 9, 2023
ad61ee3
feat: #232 경매 상세 화면에서 쪽지방 생성 버튼 기능 추가 (#240)
rhthrhrl0 Aug 9, 2023
1d84a65
feat: #246 자동 로그인 기능 구현 (#248)
rhthrhrl0 Aug 9, 2023
0e01aef
feat: #233 api 인증 및 인가 기능 연동 (#249)
apptie Aug 10, 2023
53671e1
feat: #226 경매 신고 등록 및 조회 api 추가 (#238)
JJ503 Aug 10, 2023
c240dc9
feat: #252 토큰 유효성 검증 api 추가 (#255)
apptie Aug 10, 2023
9afb383
feat: #250 쪽지 목록 페이지 기능 구현 (#254)
rhthrhrl0 Aug 10, 2023
9f85667
feat: #247 사용자 정보 조회 api 추가 (#256)
JJ503 Aug 10, 2023
af35afd
refactor: #235 채팅방 목록 조회 api 명세 수정에 따른 변경 (#236)
kwonyj1022 Aug 10, 2023
eb5523e
feat: #228 채팅방 생성 api 추가 (#234)
kwonyj1022 Aug 10, 2023
114e359
feat: #253 마이페이지 추가 (#261)
ippnsj Aug 10, 2023
99ac61b
채팅방 신고 등록 및 조회 api 추가 (#262)
JJ503 Aug 10, 2023
60fd175
feat: #242 신고 페이지 UI/구조 작성, 삭제 버튼 UI추가 (#267)
hyemdooly Aug 10, 2023
2bd90c4
refactor: #271 경매와 인증/인가 기능 연동 (#273)
JJ503 Aug 10, 2023
040ff50
feat: #258 로그아웃 api 추가 (#269)
apptie Aug 11, 2023
deab9b3
feat: #263 경매 목록 새로고침 기능 추가 (#264)
ippnsj Aug 11, 2023
79e4397
feat: #266 삭제된 경매 상세 조회 시 데이터를 삭제하고 경매 목록으로 돌아오는 기능 추가 (#268)
ippnsj Aug 11, 2023
41fe735
feat: #274 신고 기능 서버 연동 및 액티비티 연결 (#275)
hyemdooly Aug 11, 2023
a8b3a4f
feat: #257 쪽지방 페이지 기능 구현 (#270)
rhthrhrl0 Aug 11, 2023
7d99377
feat: #152 채팅 메시지 조회 API 추가 (#272)
swonny Aug 11, 2023
76c1789
feat: #278 자동로그인 기능 서버 연동 (#279)
ippnsj Aug 11, 2023
3fbd0b4
refactor: #259 채팅방 목록 조회시 마지막 메세지 함께 반환 및 마지막 메시지가 최근인 순으로 정렬하도록 수정 (…
kwonyj1022 Aug 11, 2023
93ac9fe
refactor: #260 경매 상세 조회 시 채팅방 아이디와 채팅 가능 유저 여부 함께 전송하도록 수정 (#265)
kwonyj1022 Aug 11, 2023
8a5e4db
!hotfix: 채팅방 생성 시 채팅방 아이디 바디로 넘기도록 수정 (#283)
kwonyj1022 Aug 11, 2023
bedbab6
fix: 앱에서 나갔다가 돌아왔을 때 경매 목록 캐시가 남아있는 문제 해결
ippnsj Aug 11, 2023
edbe6b9
feat: #282 회원 탈퇴 api 추가 (#284)
apptie Aug 11, 2023
4c90c14
feat: #285 개인정보처리방침 추가 (#288)
ippnsj Aug 11, 2023
2f8432b
feat: #286 신고하기 및 쪽지방 정보 Dto 서버랑 안맞는 버그 수정 (#289)
rhthrhrl0 Aug 11, 2023
9200c4d
!hotfix: flyway script 수정 (#291)
apptie Aug 11, 2023
78bd0d7
docs: #277 신고 api 문서화 (#281)
JJ503 Aug 11, 2023
71b75b4
feat: #292 모니터링 설정 (#292)
apptie Aug 11, 2023
539dfdf
refactor: 개인정보처리방침 url 코드에서 숨김
ippnsj Aug 11, 2023
68e072e
docs: #280 경매 api 문서 최신화, 인증 & 인가 api 문서화 (#295)
apptie Aug 13, 2023
accc949
docs: #298 경매 상세 조회 api 응답 필드 추가 (#299)
apptie Aug 15, 2023
49c5f9d
chore: #301 운영 서버 관련 script 변경 (#302)
apptie Aug 16, 2023
633a8c5
feat: #297 경매 상세 페이지 경매 삭제 기능 추가 (#300)
hyemdooly Aug 16, 2023
e2896ff
feat: #304 마지막 메시지 위치로 리사이클러뷰 위치 이동되는 기능 및 메시지 입력 소프트 키보드 올라올 때 툴바 보이…
rhthrhrl0 Aug 16, 2023
4b4168c
deploy: 시맨틱 버저닝 적용
hyemdooly Aug 16, 2023
815fa0f
refactor: 사용하지 않는 기능 버튼 숨김 처리
hyemdooly Aug 16, 2023
10967b7
deploy: 시맨틱 버저닝 적용
hyemdooly Aug 16, 2023
a3b0967
docs: #293 채팅 api 문서화 (#296)
kwonyj1022 Aug 16, 2023
d090042
refactor: #303 경매가 종료되지 않았다면 판매자이더라도 채팅 가능한 유저인지 정보에 false를 반환하도록 수정 …
kwonyj1022 Aug 16, 2023
2db47c9
deploy: 난독화 적용
hyemdooly Aug 16, 2023
6d22401
feat: #309 서버로부터 가져온 프로필 정보 화면에 띄워주는 기능 추가 (#312)
ippnsj Aug 16, 2023
8c73041
refactor: #325 입찰 예외처리 리팩토링 (#326)
rhthrhrl0 Aug 17, 2023
78f04e9
fix: #327 토큰 자동 갱신 시 응답 안 닫고 다음 요청을 보내던 버그 수정 (#328)
rhthrhrl0 Aug 17, 2023
4583c19
fix: 입찰 금액 입력 최댓값 수정
rhthrhrl0 Aug 17, 2023
2be39ad
fix: 경매 등록 여러번 되는 문제 방지
rhthrhrl0 Aug 17, 2023
4c244a0
feat: 경매 등록 실패 시 스낵바 메시지 노출
rhthrhrl0 Aug 17, 2023
fba82d8
feat: 경매 입찰 시 일정 단위를 벗어날 경우 서버에서 받는 메시지를 출력하는 기능 추가
rhthrhrl0 Aug 17, 2023
05c90bb
design: 마감기한 텍스트 뷰 위치를 시작 가격 옆으로 조정
rhthrhrl0 Aug 17, 2023
adddc64
design: 프로필 이미지 뷰에 디폴트 이미지 적용
rhthrhrl0 Aug 17, 2023
f7dcc84
fix: 경매 상세 페이지가 한 번에 여러개 생성되지 않도록 수정
ippnsj Aug 17, 2023
15dd51d
design: 경매 상세 화면 판매자 프로필 외곽을 둥글게 수정
rhthrhrl0 Aug 17, 2023
a34425b
feat: 활성화된 쪽지방이 없으면 쪽지방 프래그먼트에 보여줄 문구 추가
rhthrhrl0 Aug 17, 2023
0107cb2
fix: 경매 상세와 쪽지방이 무한히 중첩되는 버그 수정
ippnsj Aug 17, 2023
86c985c
feat: 레벨3 안드로이드 기능 구현 추가
ippnsj Aug 31, 2023
8ba42b2
feat: 4차 데모데이 기능 구현 추가
JJ503 Aug 31, 2023
5878c23
refactor: 버전 수정
ippnsj Aug 31, 2023
c7b2f4c
refactor: 안드로이드 버전 수정
ippnsj Aug 31, 2023
03fe003
ci: 브랜치 최신화
JJ503 Aug 31, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
167 changes: 167 additions & 0 deletions .github/workflows/backend_pr_decorator.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
name: PR 코드 분석

on:
pull_request:
types: [opened, reopened, synchronize]
branches: [ main, develop, develop-be ]

permissions: write-all

jobs:
build:
if: contains(github.event.pull_request.labels.*.name, 'backend')
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: settings java
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

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

- name: chmod gradle
run: chmod +x backend/ddang/gradlew

- name: run jacocoTestCoverage
run: |
cd backend/ddang
./gradlew jacocoTestCoverage --info

- name: set author slack id
if: always()
id: author-slack
run: |
GIT_ID=${{ github.event.pull_request.user.login }}

if [ "$GIT_ID" == "apptie" ]; then
AUTHOR_NAME="${{ secrets.apptie_slack_display_name }}"
AUTHOR_ID="${{ secrets.apptie_slack_id }}"
elif [ "$GIT_ID" == "swonny" ]; then
AUTHOR_NAME="${{ secrets.swonny_slack_display_name }}"
AUTHOR_ID="${{ secrets.swonny_slack_id }}"
elif [ "$GIT_ID" == "jj503" ]; then
AUTHOR_NAME="${{ secrets.jj503_slack_display_name }}"
AUTHOR_ID="${{ secrets.jj503_slack_id }}"
elif [ "$GIT_ID" == "kwonyj1022" ]; then
AUTHOR_NAME="${{ secrets.kwonyj1022_slack_display_name }}"
AUTHOR_ID="${{ secrets.kwonyj1022_slack_id }}"
fi

echo "AUTHOR_NAME=${AUTHOR_NAME}" >> $GITHUB_OUTPUT
echo "AUTHOR_ID=${AUTHOR_ID}" >> $GITHUB_OUTPUT

- name: run an analysis of the ${{ github.REF }} branch ${{ github.BASE_REF }} base
uses: sonarsource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_URL }}
with:
args: >
-Dsonar.issuesReport.console.enable=true
-Dsonar.projectKey=develop-be-project
-Dsonar.java.binaries=backend/ddang/build/classes
-Dsonar.exclusions=**/*Dto*.java,**/*Application*.java,**/*Exception*.java,**/*Response*.java,**/*Request*.java,**/*Configuration*.java,**/*Appender*.java,**/*.html,**/generated/**,**/resources/**
-Dsonar.sourceEncoding=UTF-8
-Dsonar.java.coveragePlugin=jacoco
-Dsonar.coverage.jacoco.xmlReportPaths=backend/ddang/build/reports/jacoco/test/jacocoTestReport.xml
-Dsonar.issue.ignore.multicriteria=e1,e2
-Dsonar.issue.ignore.multicriteria.e1.ruleKey=java:S100
-Dsonar.issue.ignore.multicriteria.e1.resourceKey=**/*Test.java
-Dsonar.issue.ignore.multicriteria.e2.ruleKey=java:S1192
-Dsonar.issue.ignore.multicriteria.e2.resourceKey=**/*Test.java

- name: sonarqube quality check
id: sonar-quality
run: |
SONAR_PROJECT_KEY="develop-be-project"
SONAR_TOKEN="${{ secrets.SONAR_TOKEN }}"

RESULT=$(curl -s -u "admin:root" "${{ secrets.SONAR_URL }}/api/qualitygates/project_status?projectKey=${SONAR_PROJECT_KEY}&pullRequest=${{github.event.number}}")
STATUS=$(echo "$RESULT" | jq -r '.projectStatus.status')
ERROR_METRIC_KEYS=$(echo "$RESULT" | jq -r '.projectStatus.conditions[] | select(.status == "ERROR").metricKey')

echo "STATUS=${STATUS}" >> $GITHUB_OUTPUT
echo "ERROR_METRIC_KEYS=${ERROR_METRIC_KEYS}" >> $GITHUB_OUTPUT

- name: set variables
id: variables
run: |
SONAR_SCANNER_URL="${{ secrets.SONAR_URL }}/dashboard?id=sonarqube-test&pullRequest=${{github.event.number}}"

REVIEWERS_GIT_ID='${{ toJson(github.event.pull_request.requested_reviewers[*].login) }}'
reviewers=$(echo "$REVIEWERS_GIT_ID" | jq -r '.[]')

REVIEWERS_SLACK_ID=""

for reviewer in $reviewers; do
echo "Reviewer: $reviewer"
if [ "$reviewer" == "apptie" ]; then
REVIEWERS_SLACK_ID+="<@${{ secrets.apptie_slack_id }}> "
elif [ "$reviewer" == "swonny" ]; then
REVIEWERS_SLACK_ID+="<@${{ secrets.swonny_slack_id }}> "
elif [ "$reviewer" == "JJ503" ]; then
REVIEWERS_SLACK_ID+="<@${{ secrets.jj503_slack_id }}> "
elif [ "$reviewer" == "kwonyj1022" ]; then
REVIEWERS_SLACK_ID+="<@${{ secrets.kwonyj1022_slack_id }}> "
fi
done

echo "AUTHOR=${AUTHOR}" >> $GITHUB_OUTPUT
echo "SONAR_SCANNER_URL=${SONAR_SCANNER_URL}" >> $GITHUB_OUTPUT
echo "REVIEWERS=${REVIEWERS}" >> $GITHUB_OUTPUT
echo "REVIEWERS_SLACK_ID=${REVIEWERS_SLACK_ID}" >> $GITHUB_OUTPUT

- name: slack test
run: |
SLACK_MESSAGE='{"text":"PR 브랜치 분석","blocks":[{"type":"section","text":{"type":"mrkdwn","text":">*PR 브랜치 분석* \n>\n>*PR Author*\n>'
SLACK_MESSAGE+="${{ steps.author-slack.outputs.AUTHOR_NAME }}"
SLACK_MESSAGE+="\n>\n>*PR 링크*\n><"
SLACK_MESSAGE+="${{ github.event.pull_request.html_url }} "
SLACK_MESSAGE+="> \n>\n>분석 결과\n>"
SLACK_MESSAGE+=":white_check_mark:"
SLACK_MESSAGE+="\n>\n>*리뷰어*\n>"
SLACK_MESSAGE+="${{ steps.variables.outputs.REVIEWERS_SLACK_ID }}"
SLACK_MESSAGE+='"}}]}'

curl -X POST ${{ secrets.SLACK_WEBHOOK }} -d "${SLACK_MESSAGE}"

- name: slack failed test
if: failure()
run: |
SLACK_MESSAGE='{"text":"PR 브랜치 분석","blocks":[{"type":"section","text":{"type":"mrkdwn","text":">*PR 브랜치 분석* \n>\n>*PR Author*\n>'
SLACK_MESSAGE+="<@"
SLACK_MESSAGE+="${{ steps.author-slack.outputs.AUTHOR_ID }}"
SLACK_MESSAGE+=">"
SLACK_MESSAGE+="\n>\n>*PR 링크*\n><"
SLACK_MESSAGE+="${{ github.event.pull_request.html_url }} "
SLACK_MESSAGE+="> \n>\n>분석 결과\n>"
SLACK_MESSAGE+=":x:"
SLACK_MESSAGE+='"}}]}'

curl -X POST ${{ secrets.SLACK_WEBHOOK }} -d "${SLACK_MESSAGE}"

- name: slack cancelled test
if: cancelled()
run: |
SLACK_MESSAGE='{"text":"PR 브랜치 분석","blocks":[{"type":"section","text":{"type":"mrkdwn","text":">*PR 브랜치 분석* \n>\n>*PR Author*\n>'
SLACK_MESSAGE+="<@"
SLACK_MESSAGE+="${{ steps.author-slack.outputs.AUTHOR_ID }}"
SLACK_MESSAGE+=">"
SLACK_MESSAGE+="\n>\n>*PR 링크*\n><"
SLACK_MESSAGE+="${{ github.event.pull_request.html_url }} "
SLACK_MESSAGE+="> \n>\n>분석 결과\n>"
SLACK_MESSAGE+=":black_square_for_stop:"
SLACK_MESSAGE+='"}}]}'

curl -X POST ${{ secrets.SLACK_WEBHOOK }} -d "${SLACK_MESSAGE}"
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[submodule "backend/ddang/3-ddang-submodule"]
path = backend/ddang/3-ddang-submodule
url = https://github.com/apptie/3-ddang-submodule
branch = main
34 changes: 34 additions & 0 deletions android/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Log/OS Files
*.log

# Android Studio generated files and folders
captures/
.externalNativeBuild/
.cxx/
*.apk
output.json

# IntelliJ
*.iml
.idea/
misc.xml
deploymentTargetDropDown.xml
render.experimental.xml

# Keystore files
*.jks
*.keystore
/3DDANG_KEY

# Google Services (e.g. APIs or Firebase)
google-services.json

# Android Profiling
*.hprof
1 change: 1 addition & 0 deletions android/app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
100 changes: 100 additions & 0 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'kotlin-parcelize'
id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics'
}

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

android {
namespace 'com.ddangddangddang.android'
compileSdk 33

defaultConfig {
applicationId "com.ddangddangddang.android"
minSdk 28
targetSdk 33

versionCode 3
versionName "2.1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

manifestPlaceholders = [KEY_KAKAO: properties['key.kakao']]
buildConfigField 'String', 'KEY_KAKAO', properties['key.kakao.string']
buildConfigField "String", "PRIVACY_POLICY_URL", properties['url.privacyPolicy']
}

buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro',
'glide.pro',
'retrofit2.pro'
}
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro',
'glide.pro',
'retrofit2.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}

buildFeatures {
buildConfig true
dataBinding true
}
}

dependencies {
implementation project(":data")
implementation 'androidx.core:core-ktx:1.10.1'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

// lifecycle
implementation 'androidx.activity:activity-ktx:1.7.2' // by viewModels()
implementation 'androidx.fragment:fragment-ktx:1.6.0' // by activityViewModels()
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.1"

// 리사이클러뷰
implementation 'androidx.recyclerview:recyclerview:1.3.0'

// 이미지 처리
implementation 'com.github.bumptech.glide:glide:4.15.1'

// 테스트
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'

testImplementation 'io.mockk:mockk-android:1.13.5'

testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test'
testImplementation 'androidx.arch.core:core-testing:2.2.0'

androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

// 파이어베이스
implementation platform('com.google.firebase:firebase-bom:32.2.0')
implementation 'com.google.firebase:firebase-analytics-ktx'
implementation 'com.google.firebase:firebase-crashlytics-ktx'

// 카카오 로그인
implementation 'com.kakao.sdk:v2-user:2.11.1'
}
14 changes: 14 additions & 0 deletions android/app/glide.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep class * extends com.bumptech.glide.module.AppGlideModule {
<init>(...);
}
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
-keep class com.bumptech.glide.load.data.ParcelFileDescriptorRewinder$InternalRewinder {
*** rewind();
}

# Uncomment for DexGuard only
#-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
45 changes: 45 additions & 0 deletions android/app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keep interface com.ddangddangddang.data.* { *; }
-keep class com.ddangddangddang.data.model.** { *; }
-keep class com.ddangddangddang.data.remote.** { *; }

-keep interface com.ddangddangddang.android.* { *; }
# Kakao SDK
-keep interface com.kakao.sdk.**.*Api
-keep class com.kakao.sdk.**.model.* { <fields>; }
-keep class * extends com.google.gson.TypeAdapter
# https://github.com/square/okhttp/pull/6792
-dontwarn org.bouncycastle.jsse.**
-dontwarn org.conscrypt.*
-dontwarn org.openjsse.**
# firebase-crashlytics
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers.
-keep public class * extends java.lang.Exception # Optional: Keep custom exceptions.
# firebase-analytics
-keep public class com.google.firebase.analytics.FirebaseAnalytics {
public *;
}
-keep public class com.google.android.gms.measurement.AppMeasurement {
public *;
}

Loading