ved_Rony
article thumbnail

개요

빌드, 배포등의 자동화

→ 왜 자동화 해야하는 가? 빌드를 하는 과정은 시간도 오래 걸리고 자주, 반복적으로 해줘야 하기 때문에 수동으로 해주면 많은 시간을 잡아 먹게 된다. (빌드란, 실행 애플리케이션을 추출하는 과정이다.) 이렇게 반복되는 과정은 버튼 하나 or 단축키로 자동화 할 필요가 있다.

DevOps에서 필수적인 업무중 하나인 CI/CD 파이프라인 구축은 현재 사용법이 매우 용이 해진 상황이다. 일반 개발자들도 충분히 구현 할수 있다.

어떻게 구현을 하는 가

먼저, 어떤 도구를 사용해야할지 정해야 한다.

후보군 : Jenkins, Unity Cloud Build, Github Actions

장단점 비교

jenkins : 무료, 전용 mac 또는 pc 필요, 사전 지식 필요하다, 확장성 높음, 대규모 프로젝트에 적합

Unity Cloud Build : 유료 9$/month, 클라우드 서비스, 구축하기 쉽다, 확정성 bad, 소규모 프로젝트에 적합

Github Actions : public 무료, private 유료 after 500MB 스토리지와 실행 시간 2,000분(minute), 클라우드 서비스, 쉽지는 않다, 확장성 좋음, 소규모 프로젝트에 적합

github actions 시간 계산법 : mac의 경우 30분 실행하면 300분의 running time을 감소 시킨다. minute multiplier가 적용 되기 때문인데, 환경별로 필요 자원과 유지 관리 비용이 다르기 때문에 환경별로 다른 기준을 가지고 있다. macOS 러너는 일반적으로 Linux나 Windows 러너보다 더 많은 자원이 필요하고 유지 관리 비용이 더 높기 때문에 더 높은 곱수를 갖는다. → x10 무료 타임을 다쓰고 나면 $0.032 부과

출처 : https://choseongho93.tistory.com/295 , https://docs.github.com/ko/billing/managing-billing-for-github-actions/about-billing-for-github-actions, https://www.youtube.com/watch?v=LU7CMWlJOR4

기술 선호도 (개인 의견)

github actions > unity cloud build > jenkins

판단 근거 : 찾아 본 바에 의하면, github actions의 경우 클라우드로 운영이 되고, 비동기 ci/cd, 소규모 프로젝트에 적합한 장점, 비교적 저렴한 가격으로 사용 할 수가 있다. 개발 난이도 또한 적당하다고 생각이 든다. 또한, 현재 git flow 브랜치 전략을 사용중인 현재 프로젝트에 적합하다고 생각.

-> 소규모 프로젝트 vs 대규모 프로젝트 참여 인원수, 들어간 예산 등을 고려, 참여 인원이 2~5명인 현재 프로젝트는 소규모 프로젝트라고 생각하는게 맞다고 판단

실제 적용

유니티 github actions 적용 : https://www.youtube.com/watch?v=JjKCy3H0A30

github actions로 unity test runner 실행 : https://mousedoc.github.io/unity-testrunner-with-github-actions

unity 프로젝트에 git hooks 적용 : https://tech.devsisters.com/posts/unity-githooks/

Github Actions - Overall steps

  1. 어떻게 작동하는 지 이해
  2. 유니티 라이센스 설정
  3. 프로젝트에 대한 워크 플로우 설정
  4. pr merge with more confidence

Workflow 설정

.github/workflows/main.yml 생성 후, 다음 스텝들 진행

  1. Checkout your repository using Checkout.
  2. Cache Unity Library folder using Cache.
  3. Configure your test job using Test Runner.
  4. Configure your build job using Builder.
  5. Deploy your application.
profile

ved_Rony

@Rony_chan

검색 태그