본문 바로가기
코딩 아카이브/Golang

TDD와 cleancode로 만들면서 배우면서 Golang backend -6

by SteadyForDeep 2022. 5. 1.
반응형

가짜 데이터베이스 객체를 완성했다.

 

이런식으로 쿼리문을 보내면

 

이렇게 데이터를 볼 수 있다.

 

TDD의 최고 장점중 하나는 Test 파일 자체가 하나의 명세가 된다는 것인데

 

이렇게 모든 테스트를 통과한 것에 한하여

테스트를 진행하기 위해 작성했던 일련의 코드들이

이 객체를 어떻게 사용해야 하는가를 직관적으로 보여준다는 말이다.

 

사용법이 이해되지 않을 경우 이런 테스트 코드를 참고하여 코딩을 이어갈 수 있다.

 

어느 정도 프로젝트의 형태가 잡혀가는 지금

CI/CD를 도와주는 github action을 적용해 보자.

특히 코드의 품질을 측정해서 뱃지로 알려주는 Code Climate을 연동해 보자.

내가 이전에 작성한 글을 참고하면 Code Climate의 기능을 알 수 있다.

2021.09.23 - [MLOps/MyTemplate] - [DLTemplate] #3 github action과 codeclimate

 

[DLTemplate] #3 github action과 codeclimate

일을 시작 하기 전에 먼저 깃헙을 확인한다. pull requests 를 확인한 다음 closed 를 보면 내가 이전의 작업을 끝내면서 어떤 메모를 남겼는지 확인 할 수 있다. 이런 작업들이 남아있다. 계속해서 bran

davi06000.tistory.com

 

 

간략하게 말하자면 빌드나 검사에 관한 명령어를 미리 작성하고

git push를 실행할 때 깃헙에서 가상의 OS를 빌려와 작성된 수행을

자동으로 진행하게 하는 것을 말한다.

 

github action을 사용하기 위해서는 위와 같은 경로에 yml파일이 존재해야한다.

yml파일은 어떤 git 명령시에 동작할지 명시하고

그 아래로는 어떤 작업들을 할지 명시한다.

여기서는 ubuntu의 최신 os를 불러오고 Go환경을 세팅한 후

내 프로젝트가 빌드되는지 확인하는 명령이 작성되어 있다.

 

이 기능을 잘 이용하면 여러 OS에서 배포되는 상황을 자동으로 검사할 수 있고

만약 성공하지 못하면 push나 merge가 안되도록 되어있어 코드를 안전하게 유지할 수 있다.

이제 test를 자동으로 진행하고 test에 통과하지 못할경우 다음 스텝으로 못 넘어가게 해보자.

 

 

이렇게 파일을 작성해 보았다.

 

먼저 우분투 최신 버전에 go 환경을 세팅해 주고

33~36 라인에 걸쳐

go test를 실행하는데 이때 실행한 내역을 c.out 파일로 남겨준다.

이 내용이 code climate로 보내져서 기록되고 분석되고 뱃지로 만들어 진다.

이때 c.out의 경우 패키지 단위로 GOPATH가 기록되므로

이 GOROOT을 상대주로소 바꿔줄 필요가 있어

shell script로 작성해 주었다.

 

그 아래는

38~41 라인에 걸쳐

Gocov 라는 툴을 이용해서 리포트를 출력하게 했는데

이 Gocov를 이용해 만든 리포트도 역시 Code Climate에서 지원하는 포멧이긴 하다.

실행 내역은 아래에서 확인 하자

 

43~46에 걸쳐 Code Climate에 관한 명령이 실행된다.

디테일은 위에 첨부한 이전 글 링크를 읽기 바란다.

 

그러면 이제 실행해볼 차례다

git push를 해주면

 

이렇게 Actions 탭에 새로 어떤 작업이 생긴 것을 볼 수 있다.

위에서 작성한 build 와 test가 있고

 

이렇게 실행된 터미널 아웃풋 까지 볼 수 있다.

 

그리고 현재 내 repo의 코드 품질도 한눈에 확인할 수 있다.

반응형

댓글