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 : 사용법 알아보기
- Github의 탭중에 Actions를 클릭해서 생성할 수 있습니다.
- Simple workflow를 보면서 하나하나 살펴보겠습니다.
- name : CI
- 워크플로우 이름을 설정합니다. 여기서는 “CI”라고 정해봅니다
- on :
- 트리거
- 해당 워크플로우가 실행되는 트리거를 지정합니다.
- push 는 push가 발생했을때
- pull_request 는 pull_request 가 발생했을 때 트리깅합니다.
- wokflow_dispatch 는 버튼을 클릭해서 수동으로 이벤트를 시작시킬 수 있습니다.
- jobs
- 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
참고