TIL

24.08.14 TIL - GitHub Actions

개발공명 2024. 8. 16. 10:41

오늘 배운 것

  • GitHub Actions

 

CI / CD란

CI

  • = continuous integration = 코드의 지속적 통합이라는 의미
  • 개발자가 변경한 코드를 자주 통합하고 통합한 코드가 문제가 없는지 자동으로 테스트하는 프로세스 
  • 코드 변경 발생할 때마다 빌드 및 테스트를 수행
  • 코드 품질 유지하고 문제 조기에 발견 가능 

 

CD

  • = continuous Delivery = 지속적 전달이라는 의미
  • CI의 결과물을 사용자에게 자동으로 배포하는 프로세스
  • CI 성공하면 (코드 변경이 통합되고 테스트 통과되면) 자동으로 스테이징 or 프로덕션 환경 (= 테스트용 운영 서버, 실제 운영 서버)에 배포하는 것

 

CI / CD 장점

  • 빠른 피드백 : 코드 변경 후 즉각적인 빌드 및 테스트 결과 확인 가능해 문제 빠르게 인지 및 수정 가능
  • 자동화된 프로세스 : 빌드, 테스트, 배포 과정이 자동화되어 수동 작업을 줄이고, 인적 오류를 방지 가능
  • 일관된 배포 : 동일한 배포 프로세스로 모든 환경에서 일관된 결과 보장
  • 높은 품질 유지 : 코드 품질 지속적 검증, 잠재적인 문제 조기 발견
  • 개발 속도 향상 : 자동화된 프로세스로 개발 주기 단축

 

CI / CD 도구

  • GitHub Actions
  • Jenkins
  • GitLab CI

 

GitHub Actions이란

  • 빌드, 테스트, 배포 파이프라인 자동화 할 수 있는 CI / CD 도구다. 
  • GitHub 저장소에 직접 통합되어 있는 CI/CD 도구다.
  • GitHub 내 어떤 이벤트(push, pull, merge ...)가 발생하면 해당 이벤트에 대해 정해진 동작을 실행하게 하는 도구다. 
  • YAML 파일을 사용하여 워크플로우를 정의할 수 있다.

 

GitHub Actions 구성 요소

Workflow

  • workflow는 GitHub Actions의 기본 구성 단위
  • 여러 Job으로 구성되고 Event에 의해 트리거 될 수 있는 자동화된 프로세스 
  • Workflow 파일은 YAML 로 작성
  • Github Repository의 ./github/workflows 폴더 아래에 (workflow name).yml 파일 저장하면 됨

 

Event

  • Event는 Workflow를 트리거 = 실행하는 특정 활동이나 규칙
  • Event에는 push, pull_request, 일정 등이 포함됨
  • 사용자 지정 Event도 만들 수 있음

 

Job

  • Job은 Workflow 내에서 실행되는 개별 작업
  • Job은 여러 Step으로 구성됨
  • 가상 환경의 인스턴스에서 실행됨
  • 다른 Job에 의존관계 가질 수 있음
  • Job은 종속성에 따라 병렬 또는 순차적으로 실행될 수 있음

 

Step

  • Step은 Task들의 집합
  • 명령어를 날리거나 Action을 실행할 수 있음
  • Step은 Workflow 파일에 지정된 순서대로 실행
  • 각 Step은 동일한 실행기 인스턴스 내에서 실행됨

 

Action

  • Action은 Workflow의 가장 작은 블록
  • Action은 Workflow에서 공유 및 결합할 수 있는 재사용 가능한 코드 단위
  • 개인적으로 Action 만들 수도 있고 Marketplace의 Action 사용할 수 있음

 

Runner

  • Github Action Runner 어플리케이션이 설치된 머신
  • Workflow가 실행될 인스턴스
  • Workflow가 실행되는 가상 머신 또는 자체 호스팅 환경

 

 

 

GitHub Actions 문법

on

  • Event를 작성하는 부분
  • 어떤 Event에 Workflow를 트리거 = 실행할지 작성하는 부분
  • push, pull_request 등의 Event 사용할 수 있음
  • 단일 Event, Event 배열로 작성할 수 있음
  • push의 경우 branches 작성할 수 있음
  • branches도 단일 branch, branch 배열, 특정 branch 하위 등으로 작성할 수 있음

자주 사용하는 것 : push, pull_request, branches

on:
  push:
    branches:
      - main
      - 'branch/**'
      - [develop, feature/*]
      
  pull_request:
    branches:
      -develop

 

 

jobs

  • Job을 작성하는 부분
  • 여러 Job이 있는 경우 default로 병렬 실행
  • jobs 바로 아래 해당 Job의 id 작성 (id는 Actions UI에 표시됨)
  • runs-on으로 실행되는 OS 지정
  • needs로 해당 Job이 시작되기 전에 완료되어야 하는 Job 지정
  • env로 Job에서 사용할 수 있는 변수 지정 가능, 변수의 형식은 map처럼 key-value로 작성
  • steps로 진행할 Step 지정 

자주 사용하는 것 : runs-on, needs, env, steps

jobs:
  job-name1:
    runs-on: ubuntu-latest
  	
    env:
      FIRST_NAME : KIM
      LAST_NAME : MINJI
    
    steps:
      ...
  
  job-name2:
    needs: job-name1
    
    steps:
      ...

 

Github의 Actions 탭 가보면 jobs에 지정한 id들이 위의 그림처럼 나타남

 

steps

  • Step을 작성하는 부분
  • 명령어를 날리거나 Action을 실행할 수 있음
  • name으로 각 step의 이름 작성할 수 있음 (name은 Actions UI에 표시됨)
  • run으로 명령어를 날릴 수 있음
  • uses로 재사용 가능한 workflow 파일 불러와 실행할 수 있음 (jobs에서도 사용 가능)
  • with로 uses에 명시한 workflow에 필요한 값들 key-value로 전달할 수 있음 (jobs에서도 사용 가능)
  • with로 전달할 값들은 전달할 workflow 파일에 정의된 변수와 일치해야 함

 

자주 사용하는 것 : name, run, uses, with

steps:
  - name: Checkout
    uses: actions/checkout@v3
    
  - name: Set up JDK 17
	uses: actions/setup-java@v2
	with:
		java-version: '17'
		distribution: 'adopt'

  - name: Grant execute permission for gradlew
	run: chmod +x ./gradlew

  - name: build project
    run: ./gradlew clean build -Dspring.profiles.active=test

 

Github의 Actions 탭에서 job의 id 누르면 그림처럼 step들의 이름이 나옴

 

 

더 많은 문법은 아래 공식 문서를 참조하자.

https://docs.github.com/ko/actions/writing-workflows/workflow-syntax-for-github-actions

 

GitHub Actions에 대한 워크플로 구문 - GitHub Docs

 

docs.github.com

 

 

좋은 참고 블로그

https://somaz.tistory.com/213

 

1. Github Action이란?

Overview 오늘은 Github Action에 대해서 공부해보려고 한다. Github Action이란? GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 지속적 통합 및 지속적 배포(CI/CD) 플랫폼이다. 리포지

somaz.tistory.com

https://somaz.tistory.com/233

 

2. Github Action (With Syntax)

Overview 오늘은 Github Action 문법에 대해서 공부해보려고 한다. 2023.05.19 - [IaC/CI CD Tool] - 1. Github Action이란? 1. Github Action이란? Overview 오늘은 Github Action에 대해서 공부해보려고 한다. Github Action이란? Gi

somaz.tistory.com

https://velog.io/@ggong/Github-Action%EC%97%90-%EB%8C%80%ED%95%9C-%EC%86%8C%EA%B0%9C%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95

 

 

Github Action에 대한 소개와 사용법

Github Action은 github에서 공식적으로 제공하는 CI/CD 툴, 다시 말해 개발의 work flow를 자동화할 수 있게 도와주는 툴이다. CI는 Continuous Integration(지속적 통합), CD는 Continuous Delivery(지속적 전

velog.io

https://zzsza.github.io/development/2020/06/06/github-action/

 

 

Github Action 사용법 정리

Github Action 사용법 및 cron 사용 방법에 대해 정리한 글입니다 Github Action으로 YES24 IT 신간을 파이썬으로 크롤링 후 Issue에 업로드하는 예제가 있습니다 Github Action with Python Github action with cron, Github a

zzsza.github.io

https://docs.github.com/ko/actions/about-github-actions/understanding-github-actions

 

GitHub Actions 이해 - GitHub Docs

GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD(연속 통합 및 지속적인 업데이트) 플랫폼입니다. 리포지토리에 대한 모든 끌어오기 요청을 빌드 및 테스트하거나 병합된

docs.github.com

 

'TIL' 카테고리의 다른 글

24.08.20 TIL - Redis in Spring  (0) 2024.08.21
24.08.19 TIL - Redis  (0) 2024.08.20
24.08.13 TIL - Docker  (0) 2024.08.16
24.08.12 TIL - MSA 구성 요소들  (2) 2024.08.13
24.08.09 TIL - 서킷 브레이커 & Resilience4j  (1) 2024.08.10