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 |
---|