Github Actions를 이용한 CI

yshjft·2022년 7월 24일
0

CI/CD 사용해보기

목록 보기
4/4

Github Actions를 이용하여 CI를 진행하고 이에 대한 결과를 Slack으로 알릴 수 있게 해보았다.

GitHub Actions

GitHub에서 제공되는 CI/CD 서비스이다. 레파지토리에서 어떤 이벤트가 발생했을 때 특정한 작업이 일어나도록 하거나 주기적으로 작업을 반복하도록 설정할 수 있다.


사용 예시

.github/workflows/gradle-ci.yml

name: Spring Boot & Gradle CI/CD

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        java-version: '17'
        distribution: 'temurin'
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    - name: Build with Gradle
      run: ./gradlew clean build --stacktrace
      
    - name: action-slack
      uses: 8398a7/action-slack@v3
      with:
        status: ${{ job.status }}
        author_name: CI Practice
        fields: repo,message,commit,author,action,eventName,ref,workflow,job,took
      env:
        SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
      if: always()

Workflows

  • GitHub Actions에서 가장 상위 개념으로서 자동화 해놓은 작업 과정
  • .github/workflows 폴더 아래에 위치한 YAML 파일로 설정

on

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  • workflow가 실행되는 시점을 지정
  • 위의 경우 main 브랜치에 push 또는 PR이 머지 되는 경우 workflow가 실행되도록 하고 있다.

jobs

  • 독립된 가상 머신(machine) 또는 컨테이너(container)에서 돌아가는 하나의 처리 단위
  • 하나의 workflow는 여러개의 작업으로 구성되며 적어도 하나의 작업은 있어야 한다.
    • 여러 작업을 구분할 때는 식별자를 이용하는데 위의 경우 build가 작업 식별자이다.
  • 그리고 모든 작업은 기본적으로 동시에 실행되며 필요 시 작업 간에 의존 관계를 설정하여 작업이 실행되는 순서를 제어할 수도 있다.

runs-on

  • 작업이 수행될 실행 환경을 지정

Steps

  • 하나의 작업은 하나 이상의 단계로 모델링 된다.
  • 작업은 command, script, action으로 이루어진다.
    • command, script 실행시는 run 속성을 사용
    • action은 실행시 uses 속성을 사용

Actions

  • 빈번하게 필요한 반복 단계를 재사용하기 용이하도록 제공되는 일종의 작업 공유 메커니즘
  • 대표적으로 위에서 사용하고 있는 actions/checkout 이 Action
    • actions/checkout 는 레파지토리로 부터 코드를 작업 실행 환경으로 내려받는 것

GitHub Actions의 소개와 핵심 개념
Github Action을 사용한 Spring boot & gradle CI/CD 구축 - 1
Github Action과 Slack 연동해서 빌드 결과 받기

profile
꾸준히 나아가자 🐢

0개의 댓글