Infra Settings/Github Action

GitHub Action - 1 (개념)

완두완두콩 2022. 1. 18. 17:00

GitHub Action


 

GitHub Action

- GitHub Action 이란 ? 

 

Github에서 CI를 위한 툴인 GitHub Actions 를제공하고 있다. CI란 Continuous Integration의 약자로써 각각의 개발자가 개발한 코드를 하나의 저장소에서 통합하는 과정을 말한다.

 하지만 단순히 코드의 통합만을 의미하진 않으며 정적 분석, 단위 테스트, 분석결과 리포팅, 배포 서버에 push 하는 등의 여러 작업들을 수행한다. 

즉, 배포 전에 한 번에 모아서 통합하는 것이 아닌 조금씩 자주 계속해서 통합해 나가는 과정이라고 이해할 수 있을 것 같다.

기존의 Circle CI / Travis CI / Jenkins CI와 같은 서비스 또는 설치형 CI처럼 Github에서도 Actions이라는 CI툴을 선보였으며 별다른 복잡한 절차 없이 Github를 통해 사용할 수 있다는 장점이 있다.

 

< CI / CD 에 대해 정리한 글 참고 >

https://dodokong.tistory.com/entry/CI-CD-feat-DevOps

 

CI / CD (feat. DevOps)

DevOps CI / CD 에 관한 설명을 들어가기에 앞서 , IT 분야에 관심이 많으신 분들은 DevOps 라는 용어에 대해 많이 들어보셨을 것 입니다. CI / CD 는 이 DevOps 와 관련이 깊은 용어인데요 , DevOps 란 애플리

dodokong.tistory.com

 

GitHub Action 실습에 들어가기 앞서, 반드시 알아야 할 주요 용어들이 몇가지가 존재한다.

 

https://velog.io/@adam2 참조

  • WorkFlow : 자동화된 프로세스로 , 하나 또는 그 이상 여러개의 job 을 실행한다. YAML 파일로 정의돼있으며 , 하나의 저장소는 각자 다르게 동작하는 여러개의 workflow 를 가질 수 있다. 예를 들어 , 하나의 workflow 는 오로지 pull request 요청이 들어올 때만 작동할 수 있고 , 다른 하나의 workflow 는 application 을 release 할 때마다 실행되는 workflow 일 수 있다.

 

  • Event : Workflow 에 걸린 trigger 를 뜻한다. 예를 들면 , push , pull request 요청이 들어올 때마다 실행된다.

 

  • Job : Job 은 step 의 묶음으로 , 의존적이여서 순차적으로 실행되거나 병렬적으로 실행될 수 있다. Default 값은 병렬 실행으로 , 예를 들어 , 여러 개의 job 이 존재하고 dependency 가 없다면 병렬적으로 모든 job 을 실행하고 패키징을 완료한다.

 

  • Action : Action 은 복잡하지만 자주 반복해서 일어나는 task를 사용하기 편하게 도와주는 것이다. 사용자 스스로 action 을 정의할 수도 있고, maketPlace 에서 필요한 action 을 사용할 수도 있다.

 

  • Runner : Runner 는 workflow 가 실행되기 위한 서버를 뜻한다. Ubuntu , MS , Mac 등 다양한 환경을 지원한다.

 

* GitHub Actions Documents 를 참조하여 작성했습니다.

https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions

 

Understanding GitHub Actions - GitHub Docs

Overview GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository, or deplo

docs.github.com