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를 닫아라 같은 작업을 자동화 할 수 있다.
'ComputerScience > 기타' 카테고리의 다른 글
Installing PyTorch on Apple M1 chip with GPU Acceleration (0) | 2023.06.04 |
---|---|
tmux 사용법 (0) | 2022.09.27 |
local에서 ssh tunneling으로 원격 서버의 jupyter notebook 접속하기 (0) | 2022.09.23 |
Speech Recognition - End to End Models for Speech Recognition (0) | 2022.09.17 |
Speech Recognition - MFCC (0) | 2022.09.16 |