탄생배경

문제

복잡한 CI/CD 환경

  • 코드는  GitHub에서 관리, 외부 도구로 CI/CD 구축
    • Jenkins, Travis CI, CircleCI 

비효율성 발생

  • 여러 외부 도구 간 연동 문제
  • 복잡한 설정 필요
  • 관리의 불편함

탄생

문제 해결을 위한 GitHub Actions를 발표

GitHub Actions

  • GitHub 내에서 CI/CD 구현 : 코드 변경 사항에 따라 자동으로 빌드, 테스트, 배포 수행
  • 이벤트 기반(event-driven) 워크플로우 : 푸시(push), 풀 리퀘스트(pull request), 이슈(issue) 생성 등 다양한 이벤트에 반응

요약

GitHub Actions는 개발자들이 GitHub 플랫폼 내에서 직접 워크플로우를 자동화하고, CI/CD(지속적인 통합 및 배포) 프로세스를 간소화할 수 있는 필요성에서 탄생했습니다.

  • 개발자들의 필요성 충족
  • 효율적인 개발 프로세스 구축

사용하는 이유

1. 플랫폼 내 통합된 CI/CD 환경

  • 원스톱 솔루션: GitHub 내에서 직접 CI/CD 파이프라인을 구축
  • 심리스한 통합: 리포지토리와 깊게 연동되어 코드 변경 사항에 즉각적으로 반응.
    • seamless integration : 시스템이나 도구 간에 경계나 단절 없이 매끄럽게 연동되는 것을 의미

2. 자동화된 워크플로우 구축

  • 이벤트 기반 실행: 푸시, 풀 리퀘스트, 이슈 생성 등 다양한 이벤트에 따라 자동으로 작업이 실행
  • 유연한 설정: YAML 파일을 통해 원하는 워크플로우를 손쉽게 정의하고 커스터마이징 가능

3. 사용 편의성

  • 쉬운 설정: 복잡한 스크립트 없이도 간단한 설정만으로 자동화된 프로세스 구축
  • 직관적인 인터페이스: GitHub의 친숙한 UI를 통해 워크플로우를 모니터링하고 관리 가능

4. 커뮤니티 지원 및 확장성

  • 액션 마켓플레이스: GitHub Marketplace에서 수많은 사전 구축된 액션을 이용하여 개발 시간을 절약
  • 오픈소스 생태계: 커뮤니티에서 제공하는 액션을 활용하거나, 자신만의 액션을 만들어 공유 가능

5. 다양한 플랫폼 및 언어 지원

  • 크로스 플랫폼 지원: Linux, macOS, Windows 등 다양한 운영체제에서 워크플로우를 실행
  • 다양한 언어 호환: JavaScript, Python, Go 등 다양한 프로그래밍 언어를 지원하여 범용성 향상

6. 비용 효율성

  • 무료 이용 가능: 공개 리포지토리의 경우 무료로 이용, 제한된 범위 내에서 사설 리포지토리도 무료로 사용 가능
  • 유연한 결제 옵션: 필요에 따라 추가 러너나 기능을 구매하여 사용할 수 있어 비용 관리가 용이

7. 보안 및 권한 관리

  • 시크릿 관리: API 키나 토큰과 같은 민감한 정보를 안전하게 저장하고 사용
  • 세분화된 권한 설정: 워크플로우에 대한 접근 권한을 세밀하게 제어하여 보안 강화

8. 효율적인 협업 지원

  • 팀 생산성 향상: 자동화된 테스트와 배포를 통해 팀원 간의 협업 원활
  • 코드 품질 개선: 지속적인 통합을 통해 코드의 안정성과 품질 향상

9. 모니터링 및 피드백

  • 실시간 로그 제공: 워크플로우 실행 중 발생하는 로그를 실시간으로 확인
  • 알림 기능: 워크플로우의 성공 여부나 오류 발생 시 알림을 받아 빠르게 대응 가능

장단점

장점:

  • 깊은 통합성: GitHub 리포지토리와 직접 통합되어 있어 코드 변경 사항에 즉각적으로 반응하는 워크플로우 설정 가능
  • 사용 편의성: YAML 형식의 설정 파일을 통해 워크플로우를 손쉽게 작성 및 관리 가능
  • 커뮤니티 지원: GitHub Marketplace를 통해 다양한 사전 구축된 액션을 이용할 수 있어 개발 시간을 절약
  • 유연성: 다양한 프로그래밍 언어와 플랫폼을 지원하며, 병렬 작업 및 매트릭스 빌드를 통해 복잡한 테스트 시나리오를 구현 가능
  • 비용 효율성: 공개 리포지토리의 경우 무료로 이용 가능하며, 필요한 경우에만 추가 리소스를 구매

단점:

  • 벤더 종속성: GitHub 플랫폼에 종속되므로 다른 CI/CD 도구로의 이식성이 낮음
  • 제한된 리소스: 무료 계정이나 제한된 플랜의 경우 사용 가능한 러너나 실행 시간이 제한됨
  • 복잡한 설정: 복잡한 워크플로우나 고급 기능을 구현하려면 YAML 설정에 대한 깊은 이해가 필요
  • 비용 문제: 사설 리포지토리나 대규모 프로젝트의 경우 추가 비용이 발생

+ Recent posts