Sangmun

github action 기본사항 본문

개발/github

github action 기본사항

상상2 2023. 2. 12. 00:31

CI/CD 도구로는 많은 것들이 있지만 github action이라는 것도 있다.

github action은 github에서 출시한 기능으로 소프트웨어 Workflow 자동화를 도와주는 도구이다.

 

workflow 예시

  • TEST CODE
  • 배포
    • Prod, Staging, Dev 서버에 코드 배포
  • 파이썬, 쉘 스크립트 실행
    • github Repo에 저장된 스크립트를 일정 주기를 가지고 실행
    • crontab의 대용
    • setup-python v2가 있음
  • Github Tag, Release 자동으로 설정
    • Main 브랜치에 Merge 될 경우 특정 작업 주행
  • 그 외에도 다양한 Workflow를 만들 수 있고 Workflow 템플릿도 커스텀이 가ㅡㅇ
    • Action Marketplace : 
    • Awesome Github Action : 
  • 하지만 private repo를 운영을 하면 유료 플랜을 사용해야함

 

Github Action을 사용하는방식

1)  코드 작업

2) 코드 작업 후, Github Action으로 무엇을 할 것인지 생각

3) 사용할 Workflow 정의

4) Workflow 정의 후 정상 작동하는지 확인

 

Github Action의 핵심개념

Workflow, Event, Job, Step, Action, Runner

 

workflow

  • 여러개의 Job으로 구성이되고 Event Trigger되는 자동화된 Process이며 최상위 개념
  • Workflow 파일은 YAML으로 작성되며, github repo의 .github/workflows에 저장됨

Event

  • Workflow를 trigger하는 특정 활동, 규칙
  • 특정 Branch를 push하는 경우
  • 특정 Branch로 pull request하는 경우
  • 특정 시간대에 반복(Cron)

Jobs

  • Runner에서 실행되는 step의 조합
  • 여러 job이 있는 경우 병렬로 실행하며, 순차적으로 실행도 가능
  • job들간에 의존 관계를 가질 수도 있음(A process after B process)

Step

  • Step은 Job에서 실행되는 개별 작업
  • Action을 실행하거나 쉘 커맨드 실행
  • 하나의 Job에선 데이터를 공유하는것이 가능

Actions

  • Workflow의 제일 작은 단위
  • Job을 생성하기 위해 여러 Step을 묶은 개념이며 재사용이 가능한 Component
  • Action을 개인적으로 만들 수도 있고, Marketplace의 Action을 사용할 수도 있음

Runner

  • Github Action도 일종의 서버에서 실행되는 개념이며 Workflow가 실행될 서버
  • Github-hosted Runner : Github Action의 서버를 사용
  • Self-hosted Runner : 직접 서버를 호스팅해서 사용

Github action 간단한 예제

github action에 대한 간단한 python 예제를 정리해보고자 한다. 먼저 github으로 이동해서 간단한 repo와 간단한 python script를 추가해준다.

 

다음으로 repo의 action을 눌러서 이동을 하면

다음과 같이 사용할 수 있는 다양한 github actions들이 나온다. 나는 여기서 python application을 사용할 예정임으로 python application에 있는 configure를 눌러주면

다음과 같이 python-app.yml 파일이 생성되고 start commit을 누르면 github action이 시작된다.

아래의 빨간 박스는 이전에 작성했던 python file을 수행하기 위한 shell 명령어이다.

start commit을 누르면 아래와 같이 commit id 옆에 노랑 동그라미가 생성이 되며 python-app.yml 명세에 적힌대로 action이 수행되고 있다는 뜻이다. 노랑 동그라미를 눌러 세부사항으로 이동을 해보면

명령을 수행하는 동안의 세부사항을 확인할 수 있다. 지금의 경우는 성공적으로 github action이 수행되어 이전에 작성했던 python script의 hello world가 출력된것을 확인할 수 있다.

Python-app.yml 파일 상세

on : Event, 언제 Workflow가 실행될 것인가?

아래의 케이스는 main branch가 업데이트될때 또는 pull_request로 main branch의 코드가 업데이트될때 실행이 된다.

다음으로 jobs는 jobs의 정의이며 이경우는 build이다. 

details에서 확인을 해보면 jobs기 build로 되어있는것을 확인할 수 있다.

runs-on : 실행환경을 의미하며 아래는 ubuntu 환경에서 실시한다는 의미이다.

uses :  사용할 Github Action

name : Step의 이름

run : run에 작성된 쉘 커맨드가 실행되며 uses가 없는 경우에 run을 사용한다.

 

'개발 > github' 카테고리의 다른 글

github action으로 google cloud에 CI/CD 환경 구축하기  (0) 2023.02.12
git 파일 복구  (0) 2023.01.18
git simulation  (0) 2022.12.31
git reset, git revert  (0) 2022.12.28
vscode에서 git 사용하기 + 유용한 extention들  (0) 2022.12.18
Comments