GitHub Actions를 활용한 CI 구축

강우엉·2023년 12월 11일
0

study

목록 보기
33/44

💡 CI란?

Continuous Integration의 약자이며, 소프트웨어 개발 프로세스의 일환이다.

코드 변경 사항이 자동으로 빌드 및 테스트되어 공유 코드 저장소에 통합되는 프랙티스를 나타낸다.

CI의 목적은 코드 변경으로 인해 발생할 수 있는 오류를 최소화하고, 팀원 간의 협업을 촉진하여 소프트웨어의 품질을 높이는 것이다.

💡 Github Actions이란?

github에서 공식적으로 제공하는 CI 툴이라고 보면된다.

public Repository에 한해서 무료로 사용할 수 있고 private Repository에 대해서는 runner(워크플로우 구동환경)에 따라 분당 / 시간당 금액을 청구한다.

Github Actions을 사용하여 npm에 패키지를 배포, Docker Hub에 이미지를 배포, AWS에 서비스를 배포하는 작업 등을 Github에서 바로 할 수 있다.

💡 Github Action 구성 요소

Workflow

  • 한 개 이상의 job을 실행할 수 있는 자동화된 작업
  • yaml 파일로 저장되며 event에 의해 실행된다.

Event

  • workflow 실행을 발동시키는 특정한 활동
  • 깃허브에서 소스코드를 푸시하면 발생하는 push event, pull request event, issue event 등 깃허브에서 발생하는 대부분의 작업을 event로 정의할 수 있다.

jobs

  • 한가지 러너안에서 실행되는 여러가지 step들의 모음
  • 각각의 step들은 일종의 shell script처럼 실행
  • Step들은 순서에 따라 실행되며 step끼리 데이터들을 공유 가능
  • Job은 다른 Job에 의존관계를 가질 수 있으며, 병렬 실행도 가능

Actions

  • 복잡하고 자주 반복되는 작업을 정의한 커스텀 어플리케이션
  • workflow 파일 안에서 자주 반복되는 코드를 미리 정의해 코드의 양을 줄일 수 있다.
  • 깃허브 마켓플레이스를 통해 공용 Action 또는 다름 사람들이 만든 Action을 사용할 수 있다.

💡 GitHub Action 시작하기

1. Workflow 생성

깃허브 내 해당 repository에서 Actions -> set up a workflow yourself 클릭

원하는 템플릿이있다면 사용가능

2. Secret 환경 변수 등록하기

깃허브 민감정보 숨기기
위의 정보를 통하여 Secret 환경 변수 등록

3. yml 파일 작성

name: CI

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      - name: Set up JDK 11
        uses: actions/setup-java@v2
        with:
          distribution: 'adopt'
          java-version: '11'

      - name: Build with Gradle
        run: chmod +x ./gradlew && ./gradlew build

      - name: Run Tests
        run: ./gradlew test
  • name: CI의 workflow 이름을 나타낸다.

  • on섹션:

    • push: 소스코드가 푸시될 때 이 workflow가 실행
    • branches: main 브렌치에 대해서만 이 workflow가 실행
  • jobs섹션:

    • build job:
      • runs-on: Unbuntu 환경에서 실행
      • steps:
        • Checkout Repository: GitHub Actions에서 레포지토리를 체크아웃한다.
        • Set up JDK 11: AdoptOpenJDK의 11 버전을 설치
        • Build with Gradle: Gradle 빌드를 수행하기 전에 ./gradlew 스크립트에 실행 권한을 부여하고, 그 다음 빌드를 수행
        • Run Tests: Gradle을 사용하여 테스트를 실행합니다.

    이제 main 브렌치에서 변경사항이 생겨 push되면 아래와같이 빌드를 하는것을 확인할 수 있다. 만약 빌드시 에러나 테스트 실패시 로그와 함께 빌드가 실패한다.

                                                                                                                                                                       
profile
우엉이의 코딩 성장일기💻

0개의 댓글