본문 링크 (Original Link)

Buddybuild 대안 찾기

2018.01.23

#

by Geoff Pado, translated by pilgwon

지난주, 훌륭한 모바일 지속적 통합 서비스인 buddybuild애플에 인수되었다는 소식을 들었습니다. 저는 일 년 가까이 buddybuild를 사용해왔고 Scrawl NotesScrawl Pouch와 같은 개인적인 사이드 프로젝트들에는 전부 적용해 왔습니다. 설정하기 쉬운 점과 서비스의 수준 그리고 지원해주는 방식을 보면 애플이 왜 그들을 뺏아간지 이해할 수 있을 것 같습니다.

저는 고객 한 명을 모으는데에 하나의 빌드만 가능하게 해주는 buddybuild의 무료 서비스 플랜을 사용했습니다. [1] 그것은 한 번 실행하는 데에 1시간을 기다려야 했던 경우도 있었지만 저의 니즈에 완벽하게 맞았습니다. 불행하게도 인수 과정의 일부분으로 buddybuild는 3월 이후로는 더 이상 무료 서비스 플랜을 제공하지 않는다고 합니다. 그래서 저는 새로운 지속 통합 시스템을 찾아보려고 합니다.

이 게시글은 어느 하나의 “승자”를 고르려고 하는 것이 아니고 제 개인적인 결정 과정을 보여드려서 도움을 드리려는 목적입니다. 제가 선택한 마지막 그것이 여러분 각자의 니즈에는 틀린 선택일 수 있기 때문입니다. 대신에 이 게시글은 어떤 해결책들이 있고 그것들은 각각 어떤 장단점이 있는지 직접 하나씩 보는데에 초점을 맞출 것입니다.

저의 니즈는 이렇습니다

저는 지속 통합 시스템에 대한 요구 사항이 많지는 않습니다. 그 요구 사항은 아마 제 개인 프로젝트를 위한 것들입니다. 아래는 제가 꼭 사용할 수 있었으면 하는 기본 사항들입니다.

다른 “있으면 좋을” 기능들은 다음과 같습니다:

고려했던 대안들

CircleCI

Circle(고려되지 않는 대안인 Travis를 포함해서)은 업계에서는 거물입니다. 저는 기본적으로 Circle과 Travis 이 둘을 하나로 생각하고 있습니다. 제가 Travis는 고려하지 않고 Circle만 고려한 이유는 Travis의 가장 저렴한 티어가 한 달에 69달러로, 제 예산에서 벗어나기 때문입니다.

Circle은 더 합리적인 한 달에 39달러짜리 티어가 있습니다. 이것도 또한 저의 예산을 벗어납니다. 하지만 앱이 진짜 수익을 내기 시작했을 때 선택하기 가장 좋은 대안이라고 생각해서 목록에 적어두었습니다. 또, Circle에는 다른 CI 서비스들은 다 가지고 있는 iOS 프로젝트를 위한 빠른 설정 기능이 없습니다. 그럼에도 불구하고 제가 높은 가격을 주고도 써보고 싶은 이유는 훌륭한 문서때문입니다. 이 문서에는 iOS 앱을 빌드하고 배포하는 것에 대해 아주 잘 적혀있지만 여전히 많은 손으로 해줘야 하는 작업들이 있습니다.

Microsoft App Center

마이크로소프트의 Visual Studio App Center는 최근에 배포된 HockeyApp의 업그레이드 버전입니다. 그리고 CI뿐만 아니라 베타 테스팅, 분석, 크래시 리포트 등 모바일 개발자들을 위한 모든 서비스 도구들을 담는 것을 목표로 하고 있습니다. 이것은 많은 모바일 앱 설정도 쉽게 할 수 있는 설정 방법을 가지고 있고, 좋은 프리 티어와 꽤나 괜찮은 다음 업그레이드 단계도 존재합니다. (다음 단계는 한 달에 40달러이며 buddybuild나 Travis보다 더 저렴합니다.)

App Center는 보기에 훌륭한 도구이고 정말 쓰고 싶은 그런 서비스입니다. 하지만 몇 가지 중요한 기능을 가지고 있지 않습니다. App Center가 가지고 있지 않은 것 중에 가장 중요한 것은 임의의 Git 레포지토리를 지원하지 않는다는 점입니다. App Center는 GitHub, Bitbucket 그리고 Visual Studio Team Services 이렇게 세 개의 코드 저장소에서만 풀을 할 수 있습니다. 저는 저의 모든 Git 레포지토리를 자체 호스팅중입니다. 만약 어딘가에 맡기더라도 Gitlab.com이 될 것이기 때문에 저 세 곳과는 상관이 없습니다. 그래서 저는 지금 당장은 App Center를 패스하지만 가까운 미래에 다시 알아볼 것입니다.

Bitrise

저는 Bitrise가 제가 생각한 서비스의 모습과 정말 맞아떨어진다고 생각했습니다. 그들의 설정 방법과 인터페이스는 buddybuild의 것과 매우 비슷해 보였고 제가 원하는 모든 니즈를 다 지원했으며 비용까지 맞았습니다. Bitrise로 하는 초기 설정 경험은 매우 간편했습니다. 레포지토리를 추가하고, 제 workflow가 생성되며, 첫 번째 빌드가 바로 실행됩니다. 이것은 아주 훌륭한 첫 경험이었습니다.

첫 번째 빌드 이후, 설정 도우미가 빌드된 앱을 배포하는데에 도움을 주기위해 나타났습니다. (테스트플라이트, Hocky, 또는 다른 비슷한 것들로요) 저는 이 설정을 따랐고 제 서명정보를 업로드 하기 위해 도구를 다운받았고 설명대로 모든 것들 따랐습니다. 하지만 마지막에 저와 만난 것은 망가진 빌드였습니다. 아무것도 작동하지 않았고 에러 메세지는 전혀 도움이 안됐으며 도움이 되던 설정 도우미는 사라졌습니다. 이것을 스스로 수정해보려고 시도했을때 저에게 문서에 적혀있지 않은 workflow 단계가 생성되었습니다. 저는 결국 포기했습니다.

정말 이 서비스에 대해 실망했습니다. 아주 좋은 해결책이 될 수 있는 기회를 놓쳤다고 생각합니다. 😢

BuildKite

BuildKite를 평가하는데에는 그렇게 오래 걸리지 않았습니다. BuildKite는 다른 서비스들과는 약간 다른 부분이 있습니다. BuildKite는 오로지 CI 시스템을 관리하는데에 도움되는 서비스를 제공합니다. 우리가 빌드를 실행시킬 “에이전트”를 제공해야 합니다. 가격은 월 15달러(연단위로 내면 매달 12달러입니다)로 나쁘지 않습니다. 그리고 제가 필요했던 것들을 쉽게 조절할 수 있었습니다. 모바일 앱을 위한 특별한 설정은 없지만 Circle이나 저의 마지막 결정보다 그렇게 복잡하지 않아보였습니다. 저는 BuildKite가 자신만의 에이전트로 호스팅하고 싶어하는 사람들을 위한 훌륭한 해결책이라고 생각했습니다.

고려되지 않은 대안들

고려된 대안들 외에도 깊이 파보기 전에 제외한 대안들이 있습니다. 여러분이 궁금해 할 경우를 위해 여기 목록을 적지만 깊이 파보진 않을 예정입니다.

선택된 해결책

결국에 저는 GitLab CI를 선택했습니다. GitLab CI는 BuildKite와 아주 비슷하게 작동합니다. 이 서비스는 에이전트(GitLab에서 “runners”라고 불립니다) 중에서 실제로 프로젝트를 빌드하는데에 도움이 되는 것들의 집합을 만들어냅니다. 저는 이미 제 Git 레포지토리들을 관리하기 위해 GitLab 서버를 돌리고 있어서 CI를 위해 사용하려고 할 때 어떤 설치나 설정도 하지 않았습니다. 저는 집에 있는 데스크탑 기기에 GitLab runner를 설치했고 빌드를 설정했으며 돌아가게 놨뒀습니다.

저는 추후의 글에서 GitLab CI 설정에 관한 자세한 내용을 설명할 에정이지만, 이것은 상당히 직관적이라고 할 수 있습니다:

위에서도 말했듯이, GitLab CI는 여러분의 경우에는 맞지 않는 해결책일 수 있습니다. 저에게 맞았던 이유는 1) 저렴하고 2) 저는 이미 GitLab 서버를 실행중이었고 3) 다른 대안들이 저의 경우와 맞지 않았기 때문입니다. 여러분의 경우에 맞는 대안을 찾기 위해서는 위에 적어놓은 다른 대안들을 잘 읽어보셔야 합니다. App Center는 만약 GitHub에 호스팅 중이라면 가장 훌륭한 대안이 될 것이고 Circle은 모바일이 아닌 다른 플랫폼을 대상으로 하고 있고 예산도 충분하다면 가장 훌륭한 대안이며, Bitrise와 BuildKite 또한 그들만의 수요를 가지고 있습니다. 그리고 심지어 제가 고려하지 않은 대안들도 그들만의 청중이 있기때문에 고려해볼 가치가 있습니다.

[1] 저의 사이드 프로젝트 중 어떤것도 돈을 벌고 있지는 않기 때문에 buddybuild의 매달 71달러를 내는 가장 저렴한 티어를 사용할 이유를 정당화시킬 수 없었습니다.

[2] 자세히 말하자면, 자체 호스팅중인 GitLab 입니다.

[3] 돈이 없는 사람을 위한 노티피케이션 시스템입니다. 저는 이러한 이유로 저 혼자 있는 Slack 팀을 만들어두었습니다.