개발
SWM 프로젝트에서 쉽게 PR 검증
배우겠습니다
2024. 8. 15. 16:59
조건
- 중간발표, 새로운 피쳐 기획 및 개발로 인해 이 작업에서 많은 시간을 쏟기 어렵다(우선순위에서 밀린다)
- CI 자체가 많은 시간이 걸리면 안된다(PR 템플릿의 내용을 채우는 시간 고려해서 총 4분 이내면 좋을 것이다)
문제 제시
- 배포 작업을 백엔드 팀원이 수행했으나, 역시나 많은 난관이 생겼다. 하지만, 이것이 프로젝트 자체 코드의 문제인지 AWS infra 문제인지 알기 어려웠고, 이를 해결하기 위해 일일히 PR을 날리고 로컬에서 빌드하며 검증을 해야했다. 이 작업에서 많은 시간 및 커뮤니케이션 병목이 발생했다.
문제 판단
- 빌드 정도는 PR때 쉽고 빠르게 검증할 수 있다고 생각한다. 결론적으로 빌드가 성공하면 (AWS infra문제가 아니라면)배포가 된다
- E2E 유닛 통합테스트까지는 인력과 시간이 부족하다 우린 빠른시간안에 3명의 인원으로 MVP를 만들어야한다(문제는 개발 외 업무도 많다)
- 로컬기준 빌드 타임을 볼때, PR 템플릿을 다 작성하기 전 완료될 것이다. github actions 환경에서도 같을 것이라 생각한다.
- 모노레포이므로 빌드 검증으로 이 문제를 해결할 수 있을 것이다.
문제해결
- API-SERVER, FRONT-END, SOCKET-SERVER를 빌드해 에러를 검출한다
작동 시점
name: Build-test
on:
pull_request:
branches: [dev]
types: ["opened", "synchronize"]
* default branch(이하 dev)로 PR이 열리거나(오픈) 추가 커밋이 날아오면(싱크로나이즈) 작동한다
#### jobs
```yml
jobs:
build-front-end:
if: contains(github.event.pull_request.changed_files, 'packages/front-end/')
runs-on: ubuntu-latest
각각의 프로젝트를 빌드할 job을 정의
단 각각의 workspace 내부 파일에 작업이 일어날때만 해당 workspace build test가 작동하도록 했다.
set each jobs
- name: Checkout code uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: "20" cache: "yarn" - name: Enable Corepack run: corepack enable - name: Set Yarn version run: corepack prepare yarn@4.3.1 --activate - name: Install dependencies run: yarn install env: YARN_ENABLE_HARDENED_MODE: 0
프로젝트와 동일한 node20및 yarn4.3.1버전을 세팅한다
의존성을 설치한다. public repo기준 HARDEND_MODE가 작동해 json5 패키지 버전이 충돌이 발생했다.
- 아쉽게도, 해결하지 못한 이슈라 부채로 남겨두기로 했다.
- 우선 HARDEND_MODE를 해제했다.
빌드
- name: Build front-end run: yarn front-end run build
각각의 빌드 스크립트를 작성한다.