Github Actions#1

Donghoon Nam
원티드랩 기술 블로그
3 min readDec 28, 2019

목록

1. Github Actions 선택 배경
2. branch별로 S3에 배포
3. 빌드, 배포 step을 job으로 그룹핑 및 의존성 선언을 통한 배포
4. 배포 성공, 실패 슬랙 메세지 전송 공통 모듈 작성
5. Lighthouse action을 Github Actions scheduler 구현

첫 시작은 배포 시스템으로 왜 Github Actions를 선택하게 되었는지에 대한 배경을 설명하고자 합니다.

원티드 프론트 팀에서 관리하는 도메인은 총 4개 이고, 배포는 두 개의 시스템 및 하나는 수동으로 진행하고 있습니다.

  • A Domain : Bamboo
  • B, C Domain : CircleCI
  • D Domain : command line

위와 배포 시스템이 파편화 되어 있다보니 생기는 문제가 아래와 같이 있었습니다.

  • 파편화에 따른 배포 시스템 학습 비용
  • 도메인 별 모니터링 진행
  • 유사한 배포 플로우를 가지고 있지만 코드가 다름
  • 에러 발생 시 로그를 확인해야하는게 시스템 별로 상이
  • 인원 증가에 따른 시스템 마다 별도의 비용 발생

위와 같은 문제가 있었고 이 부분을 해결할 방법을 찾고 있는 중에 Github Actions를 알게 되었고 코드를 관리하는 곳에서 코드를 배포한다라는 것은 저에게 굉장히 매력적인 부분으로 느껴지게 되었습니다.
(Github와 연동은 당연히 잘 되겠지라는 생각도 하였구요.)

Github Actions로 이전을 진행하면서 느낀 장점은 아래와 같습니다.

  • 개발자의 증원으로 인하여 Github Plan을 변경하게 되었고 거기에 따라 별도의 비용 없이 Github Actions를 한달에 10,000분을 사용할 수 있게 되었습니다.
  • Github Package와의 연동으로 각각의 도메인 마다 공통 코드 작성에 대해 유용했습니다.
  • 최종적으로 개발팀 전체가 Github를 사용하고 있기 때문에 통합하기가 유리하다고 판단했습니다.
  • 배포 시스템 뿐만이 아닌 Crawling, E2E Test등 일시적인 프로그램을 운영하기에도 적합하다고 판단되었습니다. 이유는 후에 계속 설명드리도록 할게요.

제가 처음부터 작업한 내용을 정리해보려고 했으나 저보다 훨씬 설명을 잘해주신 분이 계셔서 아래에 링크를 걸어놓으려고 합니다.

저는 loakick님께서 마지막으로 s3에 배포한 내용을 기준으로
조금 더 다양한 시나리오를 어떻게 풀 수 있는지를 설명하려고 합니다.

https://velog.io/@loakick 님이 작성한 글을 참고하면 Github Actions로 배포하기를 정말 쉽고 자세하게 배울 수 있다.

https://velog.io/@loakick/Github-Action%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-React-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-S3%EC%97%90-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0

참고로 저는 프론트 개발자로 일을 하면서 전문적으로 배포 시스템을 다뤄본 적이 없어 설명하는데 있어 오류가 있을 수도 있습니다.
관련해서는 댓글로 달아주시면 열심히 수렴하도록 할게요.

--

--