Github Actions를 사용하고 있었고 현재는 배포 기능만 구현된 상태로 진행하고 있었다.
main 브랜치에 변경 사항이 merge 되면 Deploy Action이 실행되고 서버에서 빌드 후 배포 하는 과정을 거친다.
이렇게 CD만 구현한 상태로 개발을 진행하다보니 중간중간 빌드가 되지 않는 코드들이 메인 브랜치로 들어가게 되는 문제가 발생하였고 해당 문제를 해결하기 위한 임시 브랜치나, 아주 작은 별로 큰 의미가 없는 커밋들이 생기게 되는 문제가 있었다. 하지만 팀의 목표인 안정적인 채점 서버 구현을 위해 포기를 하고 넘어갔었지만 꼭 CI를 구현해보고 싶었기 때문에 이번 기회에 진행을 하게 되었다.
Pull Request를 날리고 해당 PR로 작성된 코드들이 빌드가 되는 코드인지, 문제가 없는 코드인지 테스트 하는 과정을 추가하는 목표를 가지고 시작했다. 그 후 최적화를 할 수 있으면 할 수 있도록 구성하는 목표를 잡았다.
Github Actions에서 workflow를 실행시키는 트리거들의 목록에서 PR과 관련된 내용을 적용시켰다. 아무런 설정을 하지 않는다면 pull request는 opened
, synchronize
, reopened
이벤트가 발생한 경우 workflow를 실행시킨다. opened
, reopened
는 PR에서 쉽게 볼 수 있는 상태들과 일치하고 synchronize
는 PR을 생성한 다음 로컬에서 새로운 내용을 commit
하고 push
한 경우 PR과 자동으로 동기화가 되는데 이 때를 의미한다.
actions/checkout은 많은 actions에서 처음 단계로 많이 사용한다. 이름에서 알 수 있듯이 checkout
을 해주는 역할을 한다. Actions 탭에서 로그를 확인하면 actions/checkout이 하는 일들을 확인할 수 있다.