본문 바로가기
Backend MLOps/MyTemplate

[DLTemplate] #3 github action과 codeclimate

by SteadyForDeep 2021. 9. 23.
반응형

일을 시작 하기 전에 먼저 깃헙을 확인한다.

 

pull requests 를 확인한 다음 

closed 를 보면 내가 이전의 작업을 끝내면서 어떤 메모를 남겼는지 확인 할 수 있다.

 

이런 작업들이 남아있다.

 

계속해서 branch를 확인하고 추적하는 작업이 상당히 귀찮다.

그럴때는 zsh를 이용해주도록 하는데 VScode는 어떤 쉘을 이용해서 작업을 시작할지 프로필에서 정해줄 수 있다.

터미널을 열고 왼쪽 위에 있는 저 부분을 설정해 주면 간단하게 기본 쉘을 zsh로 바꿔줄 수 있다.

zsh와 oh-my-zsh 를 이용해서 현재 브랜치가 어디인지 나타내주는 테마를 적용했다.

테마 적용에 어려움이 있는 경우 VScode zsh 깨짐 등을 검색하면 해결할 수 있다.

VScode 가 설치되어있는 로컬에서 해결해야하는 문제이므로

필요하지 않은 경우 애꿎은 컨테이너를 헤집지는 않길 바란다.

 

아무튼 gitignore를 변경하는 브랜치를 만들고 들어왔다.

코드와 꼭 필요한 파일이 아니면 올라가지 않도록 했다.

역시 merge 까지 해준다.

브랜치를 삭제해도 되고 나중에 또 수정할 수 있겠다 싶으면 삭제하지 않아도 된다.

 

과거의 내가 시킨 또다른 일을 해보자.

github action을 통해서 code coverage를 자동으로 측정하는 CI 기능을 추가하는 작업이다.

 

coverage report 를 작성하도록 하는 일련의 과정을 yaml에 담고

작업의 이름을 Coverage Report 라고 한다

push가 실행되면 이 작업이 동작해야하며

jobs 에 등록된 작업들을 실행하되

coverage-report는 이하 작성된 steps에 해당하는 순서로 작업을 진행한다.

 

코드 검사를 마친 후에

파이썬을 설치하고

coverage를 이용해서 모든 *_test.py 를 찾아내서 검사한다.

그리고 code climate 라는 유용한 툴을 이용하려고 하는데 그러기 위해서는

리포지토리를 연결하고 ID를 받아와야 한다.

구글에 codeclimate 를 검색하면 홈페이지로 갈 수 있고

오른쪽 상단에서 quality 를 선택 한 후 repo를 연결한다.

그리고 위에 보이는 탭에서 ID 를 받을 수 있고 이 ID를 github action을 위한 yaml 파일에 넣어준다.

 

보면 정상적으로 실행이 된 것 처럼 보이지만 사실 action으로 검사된 항목이 하나도 없다.

yaml 파일에서 오타가 난 모양이다.

action 탭으로 가보면 역시 어떤 오류가 발생했는지 바로 볼 수 있다.

uses라고 해야하는데 use로 적은 라인이 있었다.

고쳐주도록 한다.

pull requests 에서 요 똥색 라인이 추가되면 성공한 것이다.

실패했다고 나온다.

옆에 details 를 누르면 어디가 실패한 것인가 잘 알 수 있다.

coverage 가 없기 때문에 실행을 못했다고 한다.

github action은 동작이 이뤄지는 순간 빈 컴퓨터를 하나 할당받고

그 컴퓨터에서 원하는 동작을 수행한다.

따라서 지금 action이 동작하는 컴퓨터는 당연히 coverage가 없다.

coverage를 설치하는 구문도 추가할 겸 requirements.txt 를 만들어보자.

터미널에서 지금 내 pip에 저장된 모든 패키지와 모듈 그리고 버전을 출력하는 것이 가능하다.

이 내용을 고대로 requirements.txt로 넣고 저장한다.

그러면 어마 무시한 내용이 쭉 적혀있을것인데 내가 원하는 내용만 남기고 모두 지워주면 된다.

깎아내고 보니 이것밖에 안남았다.

torch는 공홈 다운로드를 잘 보면 해당 링크로 타고 들어가서 다운받도록 되어있기 때문에

pip의 저장소에서 가져오려고 하면 에러가 발생한다.

따라서 공홈에서 알려주는 링크를 find-links로 명시해 주고

이하 그 링크에서 받을 수 있는 내용들을 적어주면 잘 찾아준다.

이제 requirements.txt 가 있으면 pip를 통해서 동일한 버전을 다운로드 받도록 명령을 넣어준다.

run 이하는 쉘스크립트의 문법을 따르므로 if와 fi 사이에서 원하는 동작을 수행할 수 있다.

아까와는 다른게 All checks have passed 라는 신나는 문구가 같이 뜨는 것을 볼 수 있다.

codeclimate에도 잘 연동되었는데 아직 coverage를 다 채우려면 한참 멀었다는 것을 알 수 있다.

코드를 엉망으로 짜 뒀으니 maintainability도 형편없다.

이제 이것을 끌어올리는 방향으로 작업하는 것이 하나의 큰 축이 된다.

반응형

댓글