[Dart] Cloudsmith 이용해서 비공개 패키지 버전 관리하기

CHOI·2022년 12월 24일
1
post-thumbnail

패키지 도입

프로젝트를 진행하다가 보면 pub dev 에 원하는 패키지, 플러그인이 없는 경우가 있다. 이러한 경우 기존의 프로젝트와 별도로 관리를 위해서 직접 패키지를 만들어야 한다.

저 같은 경우 회사 내에서 디자인 시스템을 도입하게 되어서 디자인 시스템 전용 패키지를 제작하였습니다.
문제는 제작 후의 아래와 같은 과정에서 어려움을 느꼈습니다.

github 주소를 가지고 와서 프로젝트에 적용하자.
⛔ 여러 개의 프로젝트에서 동일한 디자인 시스템 패키지 적용 시, 패키지 수정할 때마다 모든 프로젝트를 수정해 줘야 한다는 문제 발생.

pub dev에 패키지를 배포해서 버전 관리를 하여, 프로젝트에 버전 별로 적용할 수 있도록 하자.
⛔ 회사의 전용 디자인 시스템 패키지가 오픈되어서 모든 개발자가 적용할 수 있다는 문제 발생.

✅ 이러한 문제점들로 인해서 비공개 패키지 배포 방법을 찾아보게 되었습니다.


비공개 배포

아쉽게도 Flutter에 공식적으로 제공하는 비공개 배포 방식은 없었습니다.
(제가 못 찾은 거일 수도 있으니 아시는 분은 알려주세요! 수정하겠습니다 😅)

📌 Custom package repositories
위의 링크를 보시면 패키지 비공개 배포를 제공하는 업체가 나와있습니다.

1️⃣ Cloudsmith
2️⃣ Jetbrains Space
3️⃣ JFrog Artifactory

✅ 제공 업체 3개 모두 둘러본 결과, 저는 개인적으로 Cloudsmith가 제일 적용하는데 편리하고 유지 보수하는데 있어서 편하다고 생각해서 Cloudsmith를 도입했습니다!


Cloudsmith

1️⃣ 회원가입

Cloudsmith에 회원가입을 하고 나면 바로 Organization 생성하는 화면이 나온다.

📌 I want to start a 2 week trial for premium/paid features
항목은 유료 기능을 2주간 무료로 사용하고 싶은 분들은 체크하시면 됩니다.
참고로 제가 사용하는 기능들은 무료 버전에 전부 있기 때문에 무료로 사용하고 있습니다!

2️⃣ Repository 생성

‼️ 비공개 배포 진행을 원하면 Repository Type 에서 반드시 Private을 선택해야합니다.

3️⃣ End Point 및 버전 설정

기관과 레포지토리를 만들면서 지정한 이름이 기본적으로 Dart API의 엔드포인트 입니다.

https://dart.cloudsmith.io/{OWNER}/{REPOSITORY}/

위에서 확인한 엔트포인트를 프로젝트로 돌아가서 pubspec.yaml 파일 내부에 배포 경로를 지정해 줍니다.

publish_to: https://dart.cloudsmith.io/test-organization-cFV/test-package/

또한 pubspec.yaml 에서 패키지의 버전을 지정을 해줍니다.

version: 0.0.1

4️⃣ Token 추가

배포를 인증하려면 터미널에서 API Key를 입력하고 아래의 명령어로 토큰 추가 명령어를 실행해야 됩니다.

echo 'YOUR-API-KEY' | dart pub token add https://dart.cloudsmith.io/test-organization-cFV/test-package/

API Key는 [오른쪽 상태에 본인의 프로필] > [API Settings] 로 진입하면 확인할 수 있습니다.

5️⃣ 테스트 및 배포

dart pub 게시가 작동하는 방식을 테스트하려면 테스트 실행을 수행할 수 있습니다.

dart pub publish --dry-run

🎉 테스트가 정상적으로 끝났으면 이제 최종적으로 배포하면 됩니다.

dart pub publish

6️⃣ 프로젝트에서 패키지 사용

배포된 패키지를 프로젝트에서 적용하는 방법은 기존의 패키지 사용법과 비슷합니다.
패키지의 이름을 입력, hosted에 위에서 확인했던 엔드 포인트를 입력, 마지막으로 사용할 버전을 입력하면 사용이 가능합니다.

dependencies:
  flutter:
    sdk: flutter

  test-package:
    hosted: https://dart.cloudsmith.io/test-organization-cFV/test-package/
    version: ^0.0.1
profile
Mobile App Developer

0개의 댓글