본문 바로가기
개발 이론/CI CD

GitHub Actions 공부해보기

by dal_been 2023. 12. 31.
728x90

GitHub에서 제공하는 서비스로 build, test, deploy 파이프 라인을 자동화할 수 있는 CI와 CD 플랫폼이다.

깃 레포지토리에서 손 쉽게 CI/CD결과를 확인하고 관리할 수 있다. 

 

WorkFlow

GitHub Actions의 기본 구성 단위이다. ".github/workflows/<workflow_name>.yml"이라는 YAML파일에 정의된다.

워크플로우는 작업의 흐름으로 특정한 목적을 위한 푸시,풀 같은 이벤트 트리거, 환경, 기능들를 포함한다.

하나 코드 저장소에는 여러개의 워크플로우 파일이 존재할 수 있다.

 

on:
  push:
    branches:
     - main
     - develop
  pull_request:
    branches:
     - backend/**

 

on 속성을 통해 해당 워크플로우가 언제 실행될지 정의한다.

위의 예시에서는 main, develop브랩치에 커밋이나 푸시되거나 pull Requests가 backend/** 브랜치에서 만들어지면 동기화 될때 워크플로우가 실행된다. 

 

여기서 workflow를 실행하는 이벤트들은 다음과 같은 상황을 사용할 수 있다

- 앞서 예시를 든 Push, Pull Request

- 특정 시간대 반복(Cron)

- Webhook을 사용해 외부 이벤트를 통해 실행

 

Job

워크플로우가 실행되면 수행할 job을 정의한다.  GitHub Actions에서의 Job은 독립된 환경에서 돌아가는 하나의 처리 단위를 의미한다. 하나의 워크플로우에는 여러개의 job을 정의할 수 있는데 각각의 job은 다른 job과는 별개의 독립적인 환경에서 실행된다

 

Job에서 필수적으로 정의해야할 속성은 runs-on과 steps 다.

runs-on은 어떤 OS에서 실행될지 지정하는 것이고 steps는 실제로 실행할 작업들이 정의 되어있다

 

jobs:
  build:
    runs-on: ubuntu-latest

    defaults:
      run:
        working-directory: ./backend

    steps:
      - uses: actions/checkout@v3

      - name: Set up JDK 11
        uses: actions/setup-java@v3
        with:
          java-version: "11"
          distribution: "temurin"

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

      - name: Build with Gradle
        run: ./gradlew build

 

 

- uses  : 해당 step에서 사용할 액션

-> 위의 예시에서는 해당 프로젝트를 checkout하고 실행한다는 의미

(GitHub Actions에서의 check out : 워크플로우에서 실행되는 작업중에서 사용중인 리포지토리 소스 코드를 해당 워크플로우의 실행환경으로 복제한다)

- name : step의 이름

- run : job에 할당된 컴퓨팅 자원의 shell을 이용하여 커맨드 라인을 실행한다. 

 

핵심 부분만 적어두었다. 이외 부분들은 이 블로그를 참고하기를 바란다.

 

 

 

 

'개발 이론 > CI CD' 카테고리의 다른 글

Github Actions CI 자동 빌드 및 테스트 하기  (1) 2023.12.31