GithubActions_실전 적용하기

박민우·2022년 4월 13일
0

모아부자

목록 보기
4/9


Github Actions이란?

Github Actions이란 Github에서 제공하는 워크플로우(workflow)를 자동화하도록 도와주는 도구이다. 테스트, 빌드, 배포 등의 다양한 작업들을 자동화하여 처리한다.

※ 깃헙액션과 같은 다른 도구는 무엇이 있는가?

  • 젠킨스
    Jenkins 는 Java 기반, 크로스 플랫폼, 오픈 소스 CI/CD 도구입니다. 지속적인 제공과 함께 지속적인 통합을 제공합니다. 또한 실시간 테스트 및 보고가 가능합니다.
    Jenkins Pipeline은 전달 파이프라인을 "코드로" 모델링하는 데 사용할 수 있는 도구 세트를 제공합니다. Jenkins는 DSL(도메인별 언어)을 사용하여 파이프라인을 구현합니다. 그것은 오픈 소스이며 오랫동안 존재했기 때문에 널리 사용되는 최고의 CI/CD 도구 중 하나입니다.

  • Travis CI
    Jenkins와 마찬가지로 Travis CI 도 CI/CD 파이프라인 도구 시장의 선두주자 중 하나입니다. 처음에는 오픈 소스 프로젝트용으로만 출시되었으며 나중에 클로즈드 소스 프로젝트도 지원하기 위해 마이그레이션되었습니다.
    Ruby 프로그래밍 언어로 작성된 Travis CI는 프로젝트가 GitHub 또는 Bitbucket에 있는 경우 오픈 소스 및 엔터프라이즈 수준 프로젝트를 위한 최고의 CI/CD 도구 중 하나입니다. CircleCI와 마찬가지로 Travis CI도 개인 클라우드(또는 자체 호스팅 플랫폼)에서 Travis CI를 사용하려는 오픈 소스 커뮤니티 및 기업을 위한 다양한 제품을 제공합니다

Github Actions 시작하기

Github Actions은 Github 저장소에서 등록할 수도 있고 .github/workflows 폴더 내에 .yml 파일을 추가하여 등록할 수도 있다.

Github Actions의 구성

워크 플로우(workflows)

저장소에 추가하는 자동화된 프로세스이다. 하나 이상의 job으로 이루어져 있으며 이벤트에 의해 실행된다.

  • Workflow는 프로젝트를 빌드, 테스트, 패키지, 릴리스 또는 배포하기 위한 전체적인 프로세스이다.
  • Workflow는 여러개의 Job으로 구성되어 event기반으로 동작한다.
  • 여러 Job으로 구성되며 최상위 개념이다.
  • 나만의 동작을 정의한 Workflow file을 만들어 전달하면 Github Actiond이 실행한다.
  • Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장됨

이벤트(Events)

워크 플로우를 실행하는 특정 활동이나 규칙이다.
커밋의 push, pull request가 생성되었을 때뿐만 아니라 저장소 dispatch event를 통해 Github 외부에서 발생하는 활동으로도 이벤트를 발생시킬 수도 있다.

  • 특정 브랜치로 Push
  • 특정 브랜치로 Pull Request
  • 특정 시간대에 반복(Cron)

JOB

  • Job은 여러 Step으로 구성되고, 가상 환경의 인스턴스에서 실행된다.
  • 다른 Job에 의존 관계를 가질 수 있고, 독립적으로 병렬 실행도 가능하다.

Action

  • Workflow의 가장 작은 블럭
  • Job을 만들기 위해 Step들을 연결할 수 있다.
  • 재사용이 가능한 컴포넌트
  • 개인적으로 만든 Action을 사용할 수도 있고, Marketplace에 있는 공용 Action을 사용할 수도 있음

워크 플로우 관리

민감한 정보 저장
워크 플로우가 비밀번호나 인증서 같은 민감한 정보를 사용한다면 Github에 secret으로 저장하여 환경 변수로 사용 가능하다.

Github Actions 을 선택한 이유

젠킨스와 Github Actions의 차이

  • GitHub Actions는 GitHub이 완전 관리하는 서비스이기 때문에, 워크플로우를 실행하기 위해 인프라를 어떻게 확장할지, 어떻게 운영할지 몰라도 됩니다.

깃헙액션은 젠킨스에 비해 설정이 매우 쉽다.

  • 젠킨스는 CI/CD 파이프라인을 통해 어떤 일이 일어나고 있는지 완전히 통제하지 못함.

jenkins는 계정과 트리거를 기반으로 하고 있으며, 빌드를 중심으로 동작한다. 반면에 GitHub Actions는 모든 GitHub 이벤트를 통해 수행될 수 있습니다.

profile
KingdomOfGod newPerson = new KingdomOfGod();

0개의 댓글