본문 바로가기

ComputerScience/기타

Github Guide

728x90

1. Branch Strategy - git flow

master/main branch는 CICD로 바로 test를 거치고 배포와 연동 될 수 있기 때문에 직접 push는 위험하다.

develop branch가 현재 개발중인 branch이다. 여기서 브랜치를 파서 나의 작업(task, 해결해야 할 issue 등)을 진행한다. branch를 팔 때 branch이름에 prefix를 사용할 수 있다. feat(새 기능 개발), refactor, fix, docs등이 있다.

release branch는 배포 직전 dev에서 따와서 QA를 진행하는 branch이다. 발견된 bug를 수정하고 dev에 지속적으로 merge해준다. test가 끝나면 master/main 으로 병합된다.

hotfix branch는 master에서 발견된 심각한 긴급 버그를 바로 master에서 따와서 수정 후 dev와 master로 병합하는 곳이다.

 

2. Branch strategy - github flow

main, dev, release가 합쳐진 main과 작업들이 이루어지는 feature 브랜치 두개로 이루어진다. 바로바로 push하며 작업이 완료되면 master로 들어간다. 

 

3. Commit Convention

git commit -m "test - add more test codes"
git commit -m "test: add more test codes"

// issue 기반 작업을 할 때 footer에 issue 번호 추가
git commit -m "test: add more test codes
- body1
- body2
#issue_number"

처럼 prefix를 다양하게 명시할 수 있다. (feat, refactor, fix, style, tests, docs 등)

commit msg footer에 issue tag #{issue 번호}를 달아서 링크를 걸 수 있다.

 

4. Pre-commit으로 black 실행하기

'git commit'을 수행할 때 실행 할 hook을 설정할 수 있다. 보통은 commit 직전 coding convention을 자동으로 reformat하도록 한다.

pip install pre-commit
pre-commit sample-config > .pre-commit-config.yaml

pre-commit autoupdate
pre-commit install

 

5. Issue

작업을 시작하기 전에 issue를 먼저 작성한다.

issue_template을 ./github/ISSUE_TEMPLATE/bug_report.md 처럼 추가해서 팀원과 공유/재사용 할 수 있다.

ex) ./github/ISSUE_TEMPLATE/feature_request.md

이슈에 이렇게 label을 달 수도 있다.

6. Pull Request

closed: #3 - pr이 merge되었을 때 자동으로 issue가 닫히도록 할 수 있다.

마찬가지로 pr template을 설정할 수 있다. ex) ./github/PULL_REQUEST_TEMPLATE.md

 

7. Lightweight Tag

commit에 추가로 tag를 달 수 있다.

git tag v1.0.0
git push origin v1.0.0

 

8. Github Action

build, test, deploy같은 작업을 yaml파일로 정의해서 work flow를 설정할 수 있다.

 

Example 1) code formatter, CI workflow에 등록하기

.github/workflows/pre-commit.yaml

이전에 등록했던 pre-commit은 'commit' 커맨드를 실행하면 먼저 동작하는 Hook을 등록한 것이다.

지금 하는 것은 코드가 push되었을 때 format을 검사하는 job을 CI workflow에 등록하는 것이다.

 

Example 2) Pytest CI 등록하기

 

9. Github Project

Project 안에서도 기본적인 workflow를 설정할 수 있다. 예를들어 item이 closed되면 issue를 닫아라 같은 작업을 자동화 할 수 있다.

728x90
반응형