Skip to content

개발 환경

Seonghwan Kim edited this page Oct 29, 2021 · 3 revisions

Firebase

  • FireBase Crashlytics
    • 사용자의 크래쉬 정보를 수집
    • 오류 통계 및 크래쉬 발생시 메일 알람
  • App Distribution
    • 테스터에게 앱 배포

Bitrize

  • Build Scehdule
    • 특정 시간 이나 pr이 일어날 때 빌드 후 FireBase App Distrubution으로 자동 배포
    • 테스트를 통과한 경우에만 빌드를 진행하고 결과를 slack으로 알림

Git hooks

  • (upstream) .gjt/hooks/pre-commit: upstream repository에서는 커밋을 할 수 없도록 제한
#!/bin/bash

echo "You'ar in upstream repository"
exit 1
  • (origin) .git/hooks/pre-commit: origin repository에서는 커밋 시 브랜치 명을 확인하여 main 또는 develop 브랜치에서 실수로 커밋하지 못하도록 제한
#!/bin/bash

CMD="$(git rev-parse --abbrev-ref HEAD)"
local_branch="$CMD"

if [ $local_branch == "main" ]
then
    echo "You're in main branch."
    exit 1
fi

if [ $local_branch == "develop" ]
then
    echo "You're in develop branch."
    exit 1
fi

exit 0
  • (origin) .git/hooks/pre-push: push 전 로컬에서 빌드와 테스트를 수행하여 문제가 없는 태스크만 올라가도록 진행
#!/bin/bash

echo "pre-push"

CMD="./gradlew :app:assembleDebug :app:assembleDebugUnitTest :app:testDebugUnitTest"
$CMD

RESULT=$?
if [ $RESULT -ne 0 ]; then
 echo "push failed $CMD"
 exit 1
fi
exit 0

제한 사항

로컬에서 빌드와 테스트를 하면 작업이 지연될 수 있다. 커밋마다 빌드, 테스트를 수행하면 너무 지연될 수 있으니 푸시마다 검사하도록 설정하였는데 약간의 불편함은 감수해야 함.

로컬에서 하는 테스트다 보니 팀원 각각의 환경마다 차이가 발생할 수 있다(ex: 저는 되는데요?). 서버 사이드 검사가 필요하기 때문에 Bitrize를 도입하였는데 크레딧 제한이 있기 때문에 검토가 필요하다.