프로그래밍 연습하기

GitHub Actions 테스트 실패 시 Merge 금지하기 본문

Git&GitHub

GitHub Actions 테스트 실패 시 Merge 금지하기

john.k 2021. 7. 30. 23:40
반응형

프로젝트에 관한 내용이 들어가게 되었는데, 프로젝트 내용은 이후에 다시 분리해서 정리하겠습니다. 

 

진행 중인 프로젝트의 테스트를 자동화 하기 위해 방법을 고민해봤습니다.

맨 처음에는 Heroku를 사용 중이기 때문에 Heroku CI라는 이름을 보고

나중에 이걸 이용하면 되겠다고 생각하고 있었습니다.

그런데 막상 사용 해보려니까 비용이 들어가는 것으로 보여서,

무료인 GitHub Actions(이하 액션)를 사용해보기로 했습니다.

 

당시 프로젝트는 Heroku에서 배포 방법 중 GitHub Connect(이하 커넥트)라는 것이 있어서

Master 브랜치에 Push되면 자동으로 Heroku에서 그것을 빌드하여 배포하는 방식이었습니다.

그래서 저는 커넥트를 유지하면서 테스트만 따로 해보려고 했습니다.

그러나 액션을 만들면 저장소에 파일이 생겨서 커넥트로 배포를 하지 못하는 것 같아보였습니다.

결국 커넥트를 끊고 액션으로 Heroku 배포까지 하기로 했습니다.

찾아보니 어떤 분이 만드신 Heroku 배포 액션이 있어서 간단하게 사용할 수 있었습니다.

 

그래서 파이썬 빌드 액션과 Heroku 배포 액션을 합쳐서 만들었는데,

이게 Pull Request(이하 PR)시에 테스트와 배포를 다 해버리니까 이상해서

액션을 분리해서 PR시에는 테스트만 하고, Push할 때 배포를 하기로 했습니다.

그런데 PR시 테스트를 통과하지 못하면 Merge를 못하게 만드는 게 맞는 것 같아서,

찾아보니 저장소에서 Setting > Branches > Branch protection rules > Add Rule에 들어가서

Require status checks to pass before merging에 체크를 해준다고 나와 있었습니다.

그리고 저는 여기서 헤멨는데,

다른 분들은 밑의 회색 칸에 어떤 이름이 적혀 있었는데

저는 무엇을 넣어야 되는지 몰라서 빈 칸으로 냅뒀더니

PR을 하면 테스트를 실패해도 Merge가 가능하다고 떴습니다.

 

알고보니 체크하려는 액션의 job 이름을 검색하여 등록하면, 해당 job을 통과해야만 하도록 설정되는 것이었습니다.

이렇게 build라는 job을 등록해서 테스트 통과시에만 Merge할 수 있게 되었습니다.

 

액션에 대해 알아보면서 참 유용하게 사용할 수 있겠다는 생각이 들었습니다.

 

반응형
Comments