|
| 1 | +# CodePush Server  |
| 2 | + |
| 3 | +[[영어 버전 English]](./README.md) [[중국어 버전 中文版]](./README.cn.md) |
| 4 | + |
| 5 | +CodePush Server는 CodePush 프로그램 서버입니다. |
| 6 | +Microsoft 공식 CodePush 서비스는 아시아 지역에서 속도가 느린 경우가 많기 때문에, 우리는 자체 서버를 구축하여 사용합니다. |
| 7 | + |
| 8 | +- (해당 Repo의 오너가 중국인이므로 중국어 위주의 안내를 단순 한국어로 번역 했음을 미리 안내합니다.) |
| 9 | + |
| 10 | +## Requirement |
| 11 | + |
| 12 | +- Node.js v24.6.0 |
| 13 | +- npm install -g install @shm-open/code-push-cli |
| 14 | + |
| 15 | +## 이 포크(Fork)에 대하여 |
| 16 | + |
| 17 | +원본 프로젝트인 [code-push-server](https://github.com/lisong/code-push-server)가 현재 활발히 유지·보수되고 있지 않기 때문에, 우리는 다음 목적을 위해 이 포크를 만들었습니다: |
| 18 | + |
| 19 | +- 의존성을 최신 상태로 유지 |
| 20 | +- 최신 공식 CodePush 클라이언트와의 호환성 문제 해결 |
| 21 | +- 공식 `react-native-code-push` 클라이언트만 사용하기 때문에, |
| 22 | + [is_use_diff_text](https://github.com/lisong/code-push-server#advance-feature) 같은 커스텀 기능은 지원하지 않습니다. |
| 23 | +- 프로덕션에서는 `react-native-code-push`만 사용합니다. |
| 24 | + 다른 CodePush 클라이언트도 대부분 동일하게 동작할 것이지만, 문제가 있다면 Issue 또는 PR 환영합니다. |
| 25 | + |
| 26 | +## 지원되는 저장소(Storage) 모드 |
| 27 | + |
| 28 | +- local: 로컬 머신(서버 디스크)에 번들 파일 저장 |
| 29 | +- qiniu: [qiniu](http://www.qiniu.com/)에 저장 |
| 30 | +- s3: [AWS S3](https://aws.amazon.com/)에 저장 |
| 31 | +- oss: [Alibaba Cloud OSS](https://www.aliyun.com/product/oss)에 저장 |
| 32 | +- tencentcloud: [Tencent Cloud COS](https://cloud.tencent.com/product/cos)에 저장 |
| 33 | + |
| 34 | +## CodePush 핫 업데이트 올바르게 사용하기 |
| 35 | + |
| 36 | +- Apple App은 핫 업데이트 사용을 허용하지만, |
| 37 | + [Apple 개발자 약관](https://developer.apple.com/programs/ios/information/iOS_Program_Information_4_3_15.pdf)에 따라 사용자 경험을 해치지 않도록 **반드시 Silent Update(무알림 업데이트)** 로만 사용해야 합니다. |
| 38 | + |
| 39 | + Google Play는 silent update를 허용하지 않으며, **업데이트 안내 팝업을 반드시 표시해야 합니다.** |
| 40 | + |
| 41 | + 중국 Android 마켓은 **Silent Update만 허용**합니다. |
| 42 | + 팝업을 띄우면 “최신 버전의 바이너리 앱을 제출하세요”라는 이유로 반려될 수 있습니다. |
| 43 | + |
| 44 | +- React Native는 플랫폼별로 bundle 파일이 다르기 때문에, |
| 45 | + CodePush Server 사용 시 **iOS/Android 앱을 각각 따로 생성**해야 합니다. |
| 46 | + 예: `CodePushDemo-ios`, `CodePushDemo-android` |
| 47 | + |
| 48 | +- `react-native-code-push`는 리소스 파일만 업데이트하고, |
| 49 | + **Java / Objective-C 네이티브 코드는 업데이트하지 않습니다.** |
| 50 | + |
| 51 | + 따라서 npm 패키지 버전을 올렸는데 해당 패키지가 네이티브 코드를 변경했다면, |
| 52 | + 반드시 **앱 버전(ios: Info.plist의 CFBundleShortVersionString / android: build.gradle의 versionName)** 을 증가시키고 |
| 53 | + **새로운 앱을 스토어에 제출해야 합니다.** |
| 54 | + |
| 55 | +- `code-push release-react` 명령을 사용하여 배포할 것을 추천합니다. |
| 56 | + (예: `code-push release-react CodePushDemo-ios ios -d Production`) |
| 57 | + 이 명령은 번들 생성과 배포를 한 번에 수행합니다. |
| 58 | + |
| 59 | +- App Store에 새 버전을 제출할 때는 반드시 **해당 버전에 대한 초기 CodePush 릴리즈도 함께 업로드**해야 합니다. |
| 60 | + 이후 모든 CodePush 릴리즈는 이 초기 버전을 기준으로 diff 패치를 생성하기 때문입니다. |
| 61 | + |
| 62 | +### CodePush CLI |
| 63 | + |
| 64 | +- 앱 관리 및 CodePush 릴리즈 배포는 다음 [code-push-cli](https://github.com/shm-open/code-push-cli)를 사용하세요. |
| 65 | + |
| 66 | +### 클라이언트 |
| 67 | + |
| 68 | +- [React Native](https://github.com/Microsoft/react-native-code-push) |
| 69 | +- [Cordova](https://github.com/microsoft/cordova-plugin-code-push) |
| 70 | +- [Capacitor](https://github.com/mapiacompany/capacitor-codepush) |
| 71 | + |
| 72 | +## CodePush Server 설치 방법 |
| 73 | + |
| 74 | +- [docker](./docs/install-server-by-docker.md) (추천) |
| 75 | +- [수동 설치](./docs/install-server.md) |
| 76 | + |
| 77 | +## 기본 계정 정보 |
| 78 | + |
| 79 | +- 계정: `admin` |
| 80 | +- 비밀번호: `123456` |
| 81 | + |
| 82 | +## FAQ |
| 83 | + |
| 84 | +- [비밀번호 변경](https://github.com/lisong/code-push-server/issues/43) |
| 85 | +- [code-push-server 일반적인 문제 해결 (중국어)](https://github.com/lisong/code-push-server/issues/135) |
| 86 | +- 지원되는 targetBinaryVersion 형식 |
| 87 | + - `*` |
| 88 | + - `1.2.3` |
| 89 | + - `1.2` / `1.2.*` |
| 90 | + - `1.2.3 - 1.2.7` |
| 91 | + - `>=1.2.3 <1.2.7` |
| 92 | + - `~1.2.3` |
| 93 | + - `^1.2.3` |
0 commit comments