Github/이해하기

[Github] Github Actions 이해하기-1 (정의, 주요 용어)

adjh54 2022. 7. 10. 16:05
728x170
해당 글에서는 CI/CD 중 하나인 Github Actions에 대해서 이해하고 각각의 용어에 대해 이해하는 글을 다루고 있습니다.

 

 

1) Github Actions란?


💡 GitHub의 기능 중 하나로 특정 '이벤트에 따라 자동으로 작동하는 작업을 구성할 수 있도록 도와줍니다. 이를 통해 CI/CD를 구성하여 배포 자동화를 구성하여 버그를 빠르게 해결하여 배포시간을 단축 시킬 수 있습니다.

💡 예를 들어, 코드가 커밋되면 코드 빌드 및 테스트를 자동으로 실행하거나 새 코드가 병합되면 새로운 버전을 릴리스하도록 자동으로 설정할 수 있습니다. 

 

[참고] Github Actions 공식 사이트
 

Features • GitHub Actions

Easily build, package, release, update, and deploy your project in any language—on GitHub or any external system—without having to run code yourself.

github.com

[더 알아보기]

💡 CI/CD(Continuous Integration / Continuous Delivery) 란?

- 지속적인 통합 (CI) 및 지속적인 배포 (CD)의 약자입니다. 이것은 애플리케이션 개발 및 배포를 자동화하여 개발자가 코드 변경 사항을 빠르게 테스트하고 릴리스할 수 있도록 도와줍니다. CI/CD는 품질 제어를 향상시키고 버그를 빠르게 해결하여 배포 시간을 단축시킵니다.

 

2) Github Actions의 주요 용어


 

1. Events


💡 Github에서 지정한 '어떠한 일'이 발생했을 때 해당 Github workflow가 수행될 지에 대해 정의합니다.

[ 어떠한 일 ]
- 메인 브런치(Default Branch)로 머지(Merge)를 했을 경우 발생
- 특정 브런치에서 커밋(Commit) 내용을 푸시(Push) 했을 경우 발생
- 이슈를 누군가 생성했을 경우 발생

 

💡 Events 적용 예시
- 아래의 Events의 예시에서는 ‘develop-main’라는 메인 브런치에 'push' 혹은 'pull request'가 발생 시 해당 workflow가 수행된다는 것을 의미하는 예시입니다.

 

2. Workflows


💡 'Events'내에서 지정한 '어떠한 일'이 발생했을 때 '무엇을 수행하겠다'에 대해 정의합니다.

 

💡 Workflows 적용 예시
- 아래의 예시에서는 Events 부분을 제외한 하단 영역이 workflow로 수행이 되는 영역입니다.

 

3. Jobs


💡 workflow안에 있으며, '수행이 되는 작업'에 대해서 정의합니다.

💡 Jobs는 하나 혹은 여러 개의 Jobs를 가질 수가 있습니다.
💡 Jobs는 병렬적으로 동시 다발적으로 수행이 되며, Job을 순차적으로 수행되도록 구성할 수도 있습니다.

 

💡 Job 적용 예시
- 아래의 예시에서는 하나의 Job이 빌드가 되고 'strategy'에서는 각각 지정한 Node 버전(12.x, 14.x, 16.x)에 대해서 수행을 하겠다고 하는 것을 정의 한 부분입니다. (기본적으로 템플릿을 만들 때 추가가 되었으나 잘 사용하지 않는다고 합니다.)

 

4. Actions


💡 Job안에서 '수행이 되는 행동'들을 의미합니다. 이 Action은 워크 플로우의 가장 작은 요소로 직접 만들어 사용할 수도 있고 마켓에 등록된 이미 만들어진 것을 가져와 사용할 수도 있습니다.

 

💡 Actions 적용 예시
- 아래의 예시에서는 Steps안에 actions/checkout@v3로 수행이 됩니다. 해당 부분은 소스코드를 checkout 받습니다.
그리고 다음으로 checkout을 받은 것에 대해서 지정한 노드 16.x 버전을 설치하는 과정이 설명되어 있습니다.

 

5. Runners


💡 Job을 실행시켜주는 애플리케이션을 의미한다. VM 혹은 Docker라고 생각하면 되고, 독립적인 Container로 실행이 됩니다.

 

[ 더 알아보기 ]
💡 VM(Virtual Machine) 이란?
- 컴퓨터 안에서 또 다른 컴퓨터를 실행시키는 가상의 공간이다. 물리적으로 해당 공간은 컴퓨터는 아니지만 컴퓨터와 동일하게 동작하며 해당 환경에서는 프로그램 및 운영체제를 실행하고, 데이터를 저장하고, 네트워크에 연결하고, 기타 컴퓨팅 기능을 수행할 수 있습니다.

 

💡Runners 적용 예시
- 아래의 예시에서는 Shell Command로 지정한 값이 수행이 됩니다.
해당 값은 소스코드를 체크아웃받고 package.json내에 지정한 값을 수행합니다.

 

💡 결론적으로는 Github에서 특정 Event가 발생하였을 경우 workflow가 수행이 되며, workflow안에는 하나 혹은 다수의 Jobs를 지정할 수 있다. Jobs안에는 순차적으로 어떤 일들이 수행이 돼야 하는지 Shell Script 형태로 작성할 수 있고, Github에서 제공해주는 action을 수행할 수도 있다.

 
 

 

💡 [참고] Github에 더 궁금하시면 아래의 링크를 참고하시면 도움이 됩니다.
주제 링크
Github 주요 용어 -1: 기본 구조 https://adjh54.tistory.com/22
Github 주요 용어-2 : 기본 동작 https://adjh54.tistory.com/363
Github - JIRA 연동 방법 https://adjh54.tistory.com/366
Git Tag 및 Release 구성 방법 https://adjh54.tistory.com/13
Github Actions-1: 정의, 주요용어 https://adjh54.tistory.com/50
Github Actions-2: 환경설정, 적용예시 https://adjh54.tistory.com/51
Git 브랜치 전략의 종류 https://adjh54.tistory.com/364
Git 브랜치 전략 : Git-flow https://adjh54.tistory.com/367
Git 브랜치 전략 : Git-flow 변형 https://adjh54.tistory.com/368

 

 


 
오늘도 감사합니다😀
 
 
 
 
 

그리드형