서론
2023년 전반기에 Poom이라는 서비스를 개발하면서 이것저것 프론트엔드 개발을 편리하게 해주는 기술들을 써 보았는데, 그중에 Github Action을 써본 경험담을 작성해 보려고 한다.
사실 나는 홈페이지에서 마일스톤 적용하고 뭐 간단한 작업만 하고 풀리퀘만 했지.. 세팅은 하나도 안 했어서 블로그를 쓰면서 정리도 하고 공부도 해보려고 한다.
현업자들과 같이 프로젝트를 준비하면서 되게 모르는 것이 많다는 것을 느꼈다. 특히 백엔드 분들과 AWS S3얘기를 할 때는 AWS인지 모르고 "S3? 왜 갤럭시 S3 얘기를 하고 있지.." 부끄럽지만 이런 생각을 했었다.
그래서 그런 격차를 조금씩 줄여보고자 나름대로 공부를 했었고 우선 개발의 흐름을 파악하기 위해서 제일 먼저 알아야 했던것이 CI/CD였다. 그래서 프로젝트 도중 따로 공부 겸 정리를 해 두었다.
여튼 이런 생각을 하게 된 계기가 바로 Github Action에 있다.
Github Action 이란?
우리는 Github라는 서비스를 사용할 때 데이터를 저장하기 위해서 저장소(repository)를 사용한다.
repository를 통해 코드를 관리하기 위해 우리는 Git 이라는 버전관리 시스템을 사용하였다.
이 덕분에 우리는 사용자 간의 코드 충돌을 방지하고 코드가 잘못되었더라도 이전 버전으로 코드를 되돌릴 수 있었다.
즉 Git을 통해서 우리는 repository를 관리를 하는데. 이러한 일련의 과정을 workflow라고 하고 Git을 사용한다고 하여 Git-flow 라고 부르기도 한다. (Git-flow에 대해서 모른다면 해당 링크를 참고하도록 하자!)
이러한 workflow 과정은 코드의 품질과 프로젝트의 유지보수성을 유지하는데 있어서 중요한데, 이러한 QA과정을 사람이 일일이 하고 있기에는 인적 & 시간적 낭비가 될 수 있다.
그리하여 우리는 Github Action을 통해 workflow 과정을 자동화하여 이러한 문제점을 해소하기 위해 사용한다.
Github Action의 5가지 개념
Github Action을 이해하기 위해 우리가 알아야할 5가지 개념이 있다.
Event | 특정한 일(Event)이 있어났을 때를 등록해두어, 내가 원하는 기능을 자동으로 수행하게 끔 한다. - Event의 종류로는 merge, push, issue 등록 등등 Github에서 일어나는 대부분의 일들을 등록할 수 있다. |
Workflows | Event가 발생했을 때 일어나는 일들을 모아둔 것. |
Jobs | Event가 발생했을 때 일어나는 일들. - Job 안에는 step을 통해 일어날 일의 순서를 정할 수 있다. |
Actions | github에서 제공하는 일을 수행하게끔 하는 명령어이며 step에 들어감. |
Runners | 가상머신(VM) 이며 각각의 Job들이 이 Runners안에서 일어남. |
Github Action 분석
Github Action을 사용하기 위해서는 .github 폴더 안에 YMAL 파일을 생성해 주어야 한다.
.github/worksflow/제목.yml
아래 코드는 실제 프로젝트에 쓰인것을 들고 왔다.
코드에 대한 설명을 하자면 아래와 같은 내용이다.
- 1: 어떤 workflow인지에 대한 이름
- 2-4: main 브랜치에 push Event가 발생할 때마다 해당 workflow를 실행함.
- 8: 해당 workflow는 다음과 같은 일을 함.
- 10: 어떤 Runner를 사용할 것인지 명시.
- 11: 어떤 순서대로 작업을 수행해야 하는지 명시.
- 13: Github에서 제공하는 checkout이라는 action을 사용한다고 명시.
이런 식으로 Event에 대한 Jobs를 등록해두면 해당 절차가 수행되게 된다.
아래 그림은 내가 feature/issue 브랜치에서 작업을 하고 main 브랜치로 merge 하는 과정에서 workflow가 일어난 상황이다.
마치면서
아직 개발을 시작하는 걸음마 단계에서 생각하면, 굳이 이런 게 필요한가? 좀 거추장스럽고 해야 할 일만 늘어나는 게 아닌가? 라는 생각할 수도 있다. 하지만 점점 규모가 큰 프로젝트를 하게 되고 여러 개발자가 함께 작업할수록 나중에 일어날지도 모르는 시한폭탄을 없애줄.. 중요한 작업이라고 생각한다.
나도 대학교 과제를 수행하면서 Github Action을 쓰긴 할까.. 싶은 느낌이 없지 않아 있지만 본격적인 프로젝트를 다시하게 된다면 한 번 시간을 들여서 적용해보고 싶다.
항상 새로운 기술을 적용하는 것은 두렵고 어려운 것 같다. 하지만 배워서 사용하는 것도 그렇게 어려운 문제가 아니라고 생각한다. 처음부터 완벽하게 할 순 없지만 하다 보면 늘 거라고 생각한다.
아직 나도 공부하는 단계라 다른 블로거들 같이 개념을 완벽하게 정리해둔 것은 아니지만 누군가에게 조금이나마 이해하는 데 있어 도움이 되었으면 좋겠다.
참고
'활동 > Poom (ZeroWasteShop)' 카테고리의 다른 글
친환경을 위한 초록발자취 서비스 [ 품: POOM ] 개발기 (11) | 2023.08.15 |
---|---|
주니어 프론트 개발자의 Storybook 경험담 (0) | 2023.07.25 |