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

CI 스크립트 개선 (issue #108) #111

Merged
merged 23 commits into from
Jul 24, 2024
Merged

CI 스크립트 개선 (issue #108) #111

merged 23 commits into from
Jul 24, 2024

Conversation

lilychoibb
Copy link
Member

구현 요약

  • 프론트/백엔드 ci 스크립트 분리
  • ci 트리거 labels > path 로 변경
  • permissions 제거
  • gradle caching
  • gradle build > test 로 변경

연관 이슈

close #108

참고

코드 리뷰에 RCA 룰을 적용할 시 참고해주세요.

헤더 설명
R (Request Changes) 적극적으로 반영을 고려해주세요
C (Comment) 웬만하면 반영해주세요
A (Approve) 반영해도 좋고, 넘어가도 좋습니다. 사소한 의견입니다.

@lilychoibb lilychoibb added 🚛 백엔드 백엔드 관련 이슈 🚀 개선 성능의 개선 혹은 리팩토링 labels Jul 23, 2024
@lilychoibb lilychoibb self-assigned this Jul 23, 2024
@le2sky
Copy link
Member

le2sky commented Jul 23, 2024

지나가다 들려요.
gradle 캐싱을 적용했을 때 CI 과정의 성능 개선이 얼마나 이루어졌는지 측정해보는 건 어떨까요?

@le2sky le2sky changed the title CI 스크립트 개선 CI 스크립트 개선 (issue #108) Jul 24, 2024
@lilychoibb
Copy link
Member Author

지나가다 들려요. gradle 캐싱을 적용했을 때 CI 과정의 성능 개선이 얼마나 이루어졌는지 측정해보는 건 어떨까요?

오 좋네요 ㅎㅎ 측정해보고 결과 붙여서 pr 업데이트 해놓겠습니다

@lilychoibb
Copy link
Member Author

lilychoibb commented Jul 24, 2024

▶️ gradle caching 적용 전 후 Total duration 기준으로 16s, 슬랙 메시지 전송을 제외한 BE_CI 기준으로 19s 속도 개선되었습니다 :)
ci_개선전
-> 개선 전
ci_개선후
-> 개선 후
▶️ gradle caching 적용된 모습
gradleCaching

Copy link
Contributor

@Minjoo522 Minjoo522 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요, 릴리!
짧은 시간 안에 스크립트 개선하느라 고생했습니다. 👍
몇 가지 코멘트 달아 두었으니 확인 부탁드려요!

Comment on lines 33 to 44
- 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: Setup Gradle
run: chmod +x ./backend/gradlew
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Comment]

setup-gradle@v3를 사용하면 보다 간편하고 효율적으로 캐싱 할 수 있다고 합니다! 😊

GitHub Actions 공식 문서에서도 확인할 수 있습니다.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수동으로 작업해주지 않아도 되었군요 👍 반영해놓겠습니다~

Comment on lines 67 to 75
script: |
const fs = require('fs');
const workers = JSON.parse(fs.readFileSync('.github/workflows/teamMember.json'));
const mention = context.payload.pull_request.assignees.map((user) => {
const login = user.login;
const mappedValue = workers[login];
return mappedValue ? `<@${mappedValue}>` : `No mapping found for ${login}`;
})
return mention.join(', ');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Approve]

현재 팀 멤버는 변경될 가능성이 굉장히 적은데 차라리 상단에 env나 상수로 정의하는 건 어떨까요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

json 을 따로 분리해두어 사용하는 방식은 파일에 접근하고 추가적인 I/O 를 위한 작업을 해야하긴 하지만 데이터와 로직을 분리해둔다는 장점이 있는 것 같아요!
리브가 제안주신 스크립트 하나에서 처리하는 방식은 한 곳에서 관리할 수 있다는 장점이 있지만 env 로 정의하더라도 readFileSync 만 수행하지 않을 뿐 json parse 를 해야하고, 상수는 스크립트 내에 정의해두면 스크립트가 너무 길어질 것 같아요.

말씀주신 것과 다른 내용이긴 하지만 위의 스크립트가 지금도 충분히 길어서 계속 개선점을 찾고 있는데,, 아직은 쉽지 않네요 🥹

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assignee -> sender 로 변경 후 수정

Comment on lines 30 to 31
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
settings-path: ${{ github.workspace }} # location for the settings.xml file
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Comment]

이 부분은 Maven 빌드할 때 사용되는 부분인 것으로 알고 있습니다!

@lilychoibb lilychoibb merged commit 4df524c into main Jul 24, 2024
@lilychoibb lilychoibb deleted the refactor/#108 branch July 24, 2024 08:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🚀 개선 성능의 개선 혹은 리팩토링 🚛 백엔드 백엔드 관련 이슈
Projects
Status: 😎 DONE
Development

Successfully merging this pull request may close these issues.

CI Scripts 분리 & 개선
3 participants