IT

[GitHub Actions] CI/CD를 하는 깃허브 액션이란 무엇일까?

yujinius 2024. 5. 30. 23:19

 이전 글을 통해 CI/CD란 무엇인지를 알아보았습니다. (아래 글 참고) 이번에는 CI/CD를 가능하게 하는 도구 중 하나인 GitHub Actions에 대해 알아보도록 하겠습니다. 

https://yujinius45.tistory.com/72

 

[CI/CD] 개발 프로세스에 쓰이는 CI/CD란 무엇인가?

현대 소프트웨어 개발에서 CI/CD(Continuous Integration/Continuous Deployment or Delivery)는 필수적인 요소로 자리잡았습니다. 이 글에서는 CI/CD가 무엇인지, 왜 중요한지, 그리고 이를 통해 어떻게 효율적이고

yujinius45.tistory.com


GitHub Actions은 CI/CD를 위한 강력한 도구!!

 GitHub Actions는 GitHub에서 제공하는 CI/CD 플랫폼으로, 소프트웨어 개발 워크플로우를 자동화할 수 있습니다. GitHub Actions는 YAML 파일을 사용하여 다양한 이벤트에 대한 반응을 정의하고, 이를 통해 빌드, 테스트, 배포 등을 자동화할 수 있습니다.

GitHub Actions의 구성 요소

https://docs.github.com/ko/actions/learn-github-actions/understanding-github-actions

  1. 워크플로우(Workflow):
    • 워크플로우는 특정 이벤트에 의해 트리거되는 자동화된 프로세스입니다.
    • 역할: 빌드, 테스트, 배포 등의 작업을 자동으로 실행합니다.
    • 구성: .github/workflows 디렉터리에 YAML 형식으로 저장됩니다.
  2. 이벤트(Event):
    • 워크플로우를 트리거하는 GitHub 상의 특정 활동입니다.
    • 역할: 코드 푸시, 풀 리퀘스트 생성, 릴리즈 등 다양한 이벤트가 워크플로우 실행을 유발합니다.
    • 예시: push, pull_request, release, schedule 등.
  3. 잡(Job):
    • 워크플로우 내에서 실행되는 개별 작업 단위입니다.
    • 역할: 서로 다른 환경에서 병렬로 실행될 수 있는 작업 단위를 제공합니다.
    • 구성: 각 잡은 하나 이상의 스텝으로 구성됩니다.
  4. 스텝(Step):
    • 잡 내에서 실행되는 개별 명령어 또는 액션입니다.
    • 역할: 실제 작업을 수행하며, 스크립트나 실행 파일을 실행합니다.
    • 구성: 특정 작업을 실행하는 명령어 또는 액션으로 구성됩니다.
  5. 액션(Action):
    • 재사용 가능한 독립 실행형 커맨드입니다.
    • 역할: 특정 기능을 수행하는 스크립트나 컨테이너 애플리케이션으로, 커뮤니티 또는 사용자 정의 액션을 사용할 수 있습니다.
    • 예시: actions/checkout, actions/setup-node 등
  6.  러너(Runner):
    • 워크플로우를 실행하는 서버입니다.
    • 구성: GitHub 제공 러너 또는 자체 호스팅 러너를 사용할 수 있습니다.
    • 역할: 각 잡을 개별적으로 실행하며, 병렬 실행이 가능합니다.

GitHub Actions의 주요 프로세스

  1. 워크플로우 파일 작성:
    • .github/workflows 디렉터리에 YAML 파일을 작성하여 워크플로우를 정의합니다.
    • 예시 :
      name: CI
      on: [push]
      jobs:
        build:
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v2
            - name: Set up Node.js
              uses: actions/setup-node@v2
              with:
                node-version: '14'
            - run: npm install
            - run: npm test
  2. 이벤트 발생:
    • 정의된 이벤트(예: 코드 푸시)가 발생하면 해당 워크플로우가 트리거됩니다.
  3. 잡 실행:
    • 워크플로우 파일에 정의된 각 잡이 병렬 또는 순차적으로 실행됩니다.
    • 각 잡은 정의된 환경에서 실행됩니다(예: ubuntu-latest).
  4. 스텝 실행:
    • 각 잡 내에서 스텝이 순차적으로 실행됩니다.
    • 스텝은 명령어 또는 액션을 실행합니다.
  5. 결과 보고:
    • 각 잡과 스텝의 실행 결과가 GitHub의 워크플로우 페이지에 표시됩니다.
    • 성공 또는 실패 여부, 로그 등이 제공되어 문제를 디버깅할 수 있습니다.

 

GitHub Actions의 주요 기능

  • 멀티 플랫폼 지원: 다양한 OS(Windows, macOS, Linux)에서 워크플로우를 실행할 수 있습니다.
  • 커뮤니티 액션: GitHub Marketplace에서 다양한 액션을 찾아 사용하거나 커스터마이징할 수 있습니다.
  • 시크릿 관리: 보안이 필요한 정보(API 키 등)를 안전하게 관리할 수 있습니다.
  • 매트릭스 빌드: 다양한 환경 변수 조합으로 병렬 실행하여 테스트 커버리지를 높일 수 있습니다.
  • 캐싱: 의존성 설치 시간을 줄이기 위해 캐싱 기능을 제공하여 빌드 시간을 최적화할 수 있습니다.

GitHub Actions의 장점

  1. 통합성: GitHub 저장소와 밀접하게 통합되어 코드 변경 사항에 즉시 반응할 수 있습니다.
  2. 사용 용이성: YAML 파일을 사용하여 직관적이고 쉽게 워크플로우를 정의할 수 있습니다.
  3. 확장성: 다양한 서드파티 액션과 통합하여 워크플로우를 확장할 수 있습니다.
  4. 유연성: 다양한 이벤트 트리거와 조건을 사용하여 복잡한 워크플로우를 구성할 수 있습니다.

마무리

 GitHub Actions는 소프트웨어 개발 워크플로우를 자동화하고, CI/CD 파이프라인을 효율적으로 관리할 수 있는 강력한 도구입니다. 이를 통해 개발자는 코드 변경 사항을 신속하고 안전하게 배포할 수 있으며, 개발 및 운영의 효율성을 크게 향상시킬 수 있습니다. 적절한 워크플로우 설계와 도구 활용을 통해 GitHub Actions를 최대한 활용해보세요! 다음에는 GitHub Actions를 실습해보는 포스팅으로 돌아오겠습니다!