목차

  • 목표
  • CI / CD란?
  • GithubActions란?
    • workflow?
    • 사용해야하는 이유?
    • 장점
    • 단점
  • 정리

목표

CI / CD, Github Actions이 무엇이고, 어떻게 사용할 수 있는지, 그리고 어떤 장단점이 있는지를 알고 사용하는 것을 목표로 글을 작성합니다.

1. CI / CD란?

CI/CD는 Continuous Integration과 Continuous Delivery 또는 Continuous Deployment의 약자로, 소프트웨어 개발에서 흔히 사용되는 방법론입니다.

1-1. Continuous Integration

CI는 지속적인 통합이라는 뜻으로, 개발자들이 코드를 자주 병합하고, 빌드하고, 테스트하는 과정을 말합니다. CI를 통해 코드의 품질을 높이고, 버그를 줄이고, 협업을 쉽게 할 수 있습니다.

1-2. Continuous Deployment

CD는 지속적인 배포 또는 지속적인 전달이라는 뜻으로, CI의 결과물을 자동으로 배포하거나, 배포 준비 상태로 만드는 과정을 말합니다. CD를 통해 배포의 속도와 안정성을 높이고, 고객의 피드백을 빠르게 반영할 수 있습니다.

1-3. 장점

CI / CD 환경이 필요한 이유는 반복 작업의 자동화 및 피드백 루프 단축 등을 통해 소프트웨어 릴리스 프로세스의 속도를 개선하는 것 입니다.

짧은주기의 개발단위를 반복하며, 많은 협력과 피드백을 필요로 하는 애자일의 원칙을 실현하는 데 핵심적인 역할을 합니다.

2. Github Action

Github Actions은 Github에서 제공하는 CI/CD 도구입니다.

Github 저장소에서 발생하는 다양한 이벤트에 따라 원하는 작업을 자동화할 수 있으며 workflow라는 단위로 구성되어있습니다.

2-1. Workflow

Workflow는 Github Actions에서 자동화할 수 있는 작업의 흐름을 의미합니다. ./github/workflows 폴더에 저장되며 다음과 같은 요소로 구성됩니다.

  • name: Workflow의 이름을 지정합니다. (선택 사항)
  • on: Workflow를 트리거할 이벤트를 지정합니다. (필수 사항)
  • jobs: Workflow에서 실행할 Job들을 지정합니다. (필수 사항)
  • env: Workflow 전체에서 사용할 환경 변수를 지정합니다. (선택 사항)
# Workflow 이름
name: Java CI with Gradle

# workflow trigger
on:
  push:
    branches: [ "develop" ]

# permission
permissions:
  contents: read

# Job
jobs:
  build:

	# Job 실행 환경
    runs-on: ubuntu-latest
    
	# Job Step
    steps:
	    # Step Action
      - uses: actions/checkout@v3
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        
        # Step Input
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Run chmod to make gradlew executable
        # Step 커맨드
        run: chmod +x ./gradlew

      - name: Build with Test
        run: ./gradlew clean build test

2-2. 장점

  • Github Actions를 사용하면 다음과 같은 이유로 CI/CD를 쉽고 편리하게 구현할 수 있습니다.
  • Workflow를 YAML 파일로 간단하게 정의하고, 코드와 함께 버전 관리할 수 있습니다.
  • Github 마켓플레이스에서 수많은 Action을 찾아서 사용할 수 있으며, 자신이 만든 Action을 공유하거나 재사용할 수 있습니다.
  • Workflow를 트리거할 수 있는 이벤트의 범위가 넓습니다.

2-3. 단점

  • Workflow의 실행 시간과 리소스에 제한이 있습니다.
  • Workflow의 실행 환경에 따라서, 도커 컨테이너로 작성한 Action을 사용할 수 없는 경우가 있습니다.
  • Workflow의 실행 결과와 로그를 Github 외부에서 확인하거나, 공유하기 어려울 수 있습니다.
  • Workflow의 테스트와 디버깅을 위한 툴이 부족할 수 있습니다.

정리

  • CI / CD는 지속적인 통합과 지속적인 배포를 의미하며, 소프트웨어 출시 및 운영에 필요한 반복적인 작업을 빠르게 안정적으로 가져가기 위해 필요
  • Github Action은 CI / CD 환경 구축에 대한 리소스를 최소화 하며 사용할 수 있으며 트리거 할 수 있는 이벤트 범위가 넓기 때문에 사용
  • Github Actions의 단점은 workflow에 대한 테스트 및 디버깅을 할 수 있는 수단이 부족하며 외부에서 로그 확인이 힘듬