티스토리 뷰
이 글의 제목은 "Gihub Actions, black, pre-commit 을 이용해 Python 프로젝트를 체계적으로 관리해보자 " 이다.
여기서 모호한 표현인 체계적은 코드가 일관적인 포맷으로 잘 정렬된 상태를 의미한다.
이미 이전 글에서 관련 주제를 다루었다.
일관적인 포맷으로 포매팅을 해주는 대표적인 툴 black! https://developer0hye.tistory.com/481
commit 전에 black을 실행하여 git commit 전에 코드를 자동으로 포매팅 해줄 수 있는 pre-commit! https://developer0hye.tistory.com/482
이제 여기에 Github Actions 를 끼얹어보자
pre-commit 까지 했으면 어느정도 된 거 아닌가? 싶은데 문제는 pre-commit은 웹에서 바로 수정하여 commit하는 경우에 동작하지 않는다.
누가 웹에서 바로 수정해? 라고 생각할 수 있지만 그런 사람들이 있다. 나는 아니다.
그치만, Github Actions라면 웹에서 바로 수정한 경우에도 감지가 가능해진다. 여로모로 은혜로운 툴이다.
1. 우선 Github 프로젝트를 생성하자
이름은 python-black-pre-commit-actions-for-blogging 으로 생성했다.
2. 로컬에 클론하자
git clone https://github.com/developer0hye/python-black-pre-commit-actions-for-blogging
cd python-black-pre-commit-actions-for-blogging
3. pre-commit 용 파일 .pre-commit-config.yaml 을 생성하자
4. .pre-commit-config.yaml commit 전에 black이 실행되도록 .pre-commit-config.yaml 을 작성하자
rev 에 쓰인게 우리가 쓸 black 버전이고, Github Actions workflow 파일 작성할때도 이 버전이 쓰이니 기억해두자
repos:
- repo: https://github.com/psf/black
rev: 23.1.0
hooks:
- id: black
5. git hook 생성을 위한 pre-commit install 명령어 실행
pip install pre-commit
pre-commit install
6. 보면 열받는 포맷으로 python 파일 app.py 생성
a = 1 +2
b = a * 3
7. pre-commit 잘되나 테스트
git add app.py
git add .pre-commit-config.yaml
git commit -m "pre-commit test"
black이 실행되고 Fail 이 잘 뜨는것을 확인할 수 있다.
app.py 도 아래와 같이 정렬돼있을것이다.
8. 다시 stage에 올리고 commit 해서 remote repo에 push
git add app.py
git commit -m "pre-commit test"
9. Github Actions 활용하여 workflow 파일 작성
name: Python Formatting
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install black==23.1.0
- name: Formatting with black
run: |
black --check .
위 파일에 대해 설명하자면,
main branch 로 push 되거나 pull request 요청이 날라오면 실행됨
서버 pc의 os는 ubuntu-latest
clone 하고 python 3.10으로 세팅후 pip update 해주고 23.1.0버전의 black을 설치함
그다음 black --check . 통해 format이 black의 format과 안맞으면 실패!
--check 안붙이면 실패/성공 여부 체크가 안됨
10. 테스트
10.1 test-actions 라는 branch를 웹에서 만들자
10.2 웹 에디터로 포맷 안맞게 app.py를 수정하자
10.3 main branch로 pull request 날려보자
야호 Python Formatting에서 Fail 뜬다.
DCO 도 Fail 뜨는데 이건 그냥 수동으로 Success 로 바꿔줌
옆에 Details 눌러서 봐보면 아래와 같이 black --check . 통해서 실패로 판단내린것을 확인할 수 있다.
다음번에는 pytest 까지 이용해 "체계적"을 넘어서 안정적이고 보다 테스트 주도 개발에 가깝게 Python 프로젝트를 관리하는 방법에 대해 정리해봐야겠다.
'기타' 카테고리의 다른 글
ChatGPT 나 Bing 챗봇을 보며... (0) | 2023.03.04 |
---|---|
항상 그만두기 (0) | 2023.03.02 |
힘들 때 볼 영상 (0) | 2023.02.11 |
[관제, 선별 관제 관련 뉴스] 법 바뀌자 아파트 주민들 '전전긍긍' / OBS 뉴스O (0) | 2023.02.11 |
Yolo_Label 스타 300개 돌파! (0) | 2023.02.08 |
- Total
- Today
- Yesterday
- C++ Deploy
- 조합
- 문제집
- MOT
- 이분탐색
- ㅂ
- 위상 정렬 알고리즘
- cosine
- 자료구조
- 백트래킹
- LCA
- 순열
- 가장 긴 증가하는 부분 수열
- 백준 11053
- Lowest Common Ancestor
- 단축키
- FairMOT
- 백준
- PyCharm
- 백준 11437
- 파이참
- 백준 1766
- 인공지능을 위한 선형대수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |