깃헙 액션즈 알아보기

고래상어·2022년 2월 22일
0

WHAT : 깃헙 액션즈는 무엇인가??


  • Github Action은 github에서 공식적으로 제공하는 CI/CD 툴이다
  • 다시 말해 개발의 work flow를 자동화할 수 있게 도와주는 툴이다.

CI/CD란?

CI는 Continuous Integration(지속적 통합), CD는 Coninuous Delivery(지속적 전달)의 줄임말이다.

  • CI : 테스트, 빌드 Dockerizing, 저장소에 전달하는 것까지 프로덕션 환경으로 서비스를 배포할 수 있도록 준비하는 프로세스
  • CD : 저장소로 전달된 프로덕션 서비스를 실제 사용자들에게 배포하는 프로세스

작업한 소스 코드를 빌드하고, 저장소에 전달 후 배포까지 하는 과정을 통상적으로 CI/CD 라고 부른다.

WHY : 깃헙 액션 어떤 부분이 좋은가?


Jenkins와 Github

Jenkins

Jenkins는 무료 오픈 소스 자동화 서버이다. Jenkins는 빌드, 테스트, 배포와 관련된 소프트웨어 개발부분을 자동화하고, 지속적인 통합과 지속적인 배포를 제공하는 데 도움을 준다.

GitHub Actions

GitHub Actions를 사용하면, Linux, macOS, Windows 를 포함한 모든 플랫폼에서의 프로젝트 빌드, 테스트, 배포를 쉽게 자동화할 수 있습니다. 여러분의 워크플로우를 컨테이너나 가상 머신에서 실행하세요.

젠킨스의 단점

  • 플러그인을 항상 최신 상태로 유지해야 하는 것
  • 단일 Jenkins 서버를 이용한 빌드는 빌드를 실행하지 않더라도 비용이 많이 듦
  • 동시 빌드 환경에서 일관성을 제공하지 않음
  • 때때로 업데이트를 해주지 않으면 정상 동작하지 않는 여러 플러그인에 의존해야 함

GitHub Actions의 장점

설치의 간편함

  • Jenkins에 비해 GitHub Actions의 설정이 더 쉽다
    • GitHub Actions는 클라우드에서 작동한다. (Runner를 로컬에서 실행할 수도 있음)
    • 반면 Jenkins는 공식적으로 관리하는 서비스를 제공하지 않는다.
  • Jenkins 서버는 설치가 필요하지만, GitHub Actions는 그렇지 않다.
    • docker run으로 구성된다.
    • docker build와 docker run만을 필요로 해서 실행과 디버깅이 매우 쉽다.

GitHub과의 긴밀한 결합

  • GitHub Actions는 많은 언어와 프레임워크를 지원하고 있고, YAML로 작성할 수 있다. 따라서 일반적인 코드를 작성하듯 편집, 재사용, 공유, 포킹할 수 있다.
  • 레포지토리를 포킹하면 작업이 자동으로 포킹되기 때문에 GitHub과 함께 사용하는 것이 매우 쉽게 느껴진다.
    • 프로젝트를 매우 효율적으로 테스트하고 빌드할 수 있다.
    • 개발자 친화적으로 실행할 수도 있다.
    • GitHubAPI에 쉽게 접근할 수 있으므로 개발자들에게 더 인기가 있다.

HOW : 사용법 알아보기


  1. Github의 탭중에 Actions를 클릭해서 생성할 수 있습니다.
  2. Simple workflow를 보면서 하나하나 살펴보겠습니다.
  • name : CI
    • 워크플로우 이름을 설정합니다. 여기서는 “CI”라고 정해봅니다
  • on :
    • 트리거
    • 해당 워크플로우가 실행되는 트리거를 지정합니다.
    • push 는 push가 발생했을때
    • pull_request 는 pull_request 가 발생했을 때 트리깅합니다.
    • wokflow_dispatch 는 버튼을 클릭해서 수동으로 이벤트를 시작시킬 수 있습니다.
  • jobs
    • 워크플로우에서 실행되는 모든 작업을 그룹화
  • build:
    • build라는 이름의 작업을 정의합니다.
  • runs-on: ubuntu-latest
    • 최신 버전의 Ubuntu Linux 실행기에서 실행되도록 작업을 구성합니다.
    • Github에서 호스팅하는 가상머신에서 실행됨을 의미합니다.
    • ubuntu, window, mac 등을 사용할 수 있다.
  • steps:
    • 작업에서 실행되는 모든 단계를 함께 그룹화합니다.
  • uses: actions/checkout@v2
    • 해당 step에서 사용할 액션. Github 마켓플레이스에 올라온 action들을 사용할 수 있다.
    • checkout 은 git 관련된 명령등을 수행할 수 있게 해준다

이거로 어떤것들을 할 수 있을까?


apk 추출 & 플레이스토어 릴리즈

EmotionalDiary/deploy-store.yml at develop · teamtuna/EmotionalDiary

슬랙으로 apk 보내기

EmotionalDiary/deploy-slack.yml at develop · teamtuna/EmotionalDiary

참고

profile
안드로이드 개발자 입니다

0개의 댓글