명령
모든 명령은 커패시터 프로젝트가 제대로 활성화된 앱 폴더에서 실행되어야 합니다.
npx @capgo/cli@latest init [apikey]
이 방법은 단계별로 온보딩하기 위한 것입니다.
Capgo에 앱이 추가됩니다. 업데이트의 유효성을 검사하기 위해 앱에 코드가 추가됩니다. 마찬가지로 앱을 빌드합니다. 또한 앱을 Capgo에 업로드합니다. 업데이트가 작동하는지 확인하는 데 도움이 됩니다.
npx @capgo/cli login [apikey]
이 방법은 apikey을 기억하기 위한 것입니다.
선택적으로 다음을 제공할 수 있습니다.
--local 이렇게 하면 apikey가 로컬 저장소에 저장되고 git은 이를 무시합니다.
Doctor
Section titled “Doctor”npx @capgo/cli doctor
Capgo 패키지가 최신인지 확인하는 명령입니다.
이 명령은 버그 보고에도 유용합니다.
npx @capgo/cli app add [appId]
[appId] 앱 ID com.test.app 형식은 여기에 설명되어 있습니다.
💡 모든 옵션이 제공되지 않으면 구성에서 추측됩니다.
선택적으로 다음을 제공할 수 있습니다.
--icon [/path/to/my/icon]Capgo 웹 앱에 사용자 정의 아이콘이 표시되도록 합니다.- 목록에 사용자 정의 이름을 포함하려면
--name [test]. --apikey [key]계정 연결을 위한 API 키입니다.--retention [retention]App Bundle의 보존 기간(일), 기본적으로 0 = 무한.
appId 및 AppName에 대한 capacitor.config.json의 예, 아이콘은 리소스 폴더에서 추측됩니다.
{ "appId": "ee.forgr.capacitor_go", "appName": "Capgo", "webDir": "dist"}npx @capgo/cli app set [appId]
[appId]은 앱 ID이며 형식은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--icon [/path/to/my/icon]Capgo 웹 앱에 사용자 정의 아이콘이 표시되도록 합니다.--name [test]목록에 사용자 정의 이름이 있습니다.--retention [retention]App Bundle의 보존 기간(일), 기본적으로 0 = 무한.--apikey [key]계정 연결을 위한 API 키입니다.
npx @capgo/cli app list [appId]
[appId] 앱 ID com.test.app 형식은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--apikey [key]계정 연결을 위한 API 키입니다.
Delete
Section titled “Delete”npx @capgo/cli app delete [appId]
[appId] your app ID the format com.test.app is explained here.
선택적으로 다음을 제공할 수 있습니다.
--apikey [key]계정 연결을 위한 API 키입니다.--bundle버전 번호를 추가하면 이 버전만 삭제됩니다.
npx @capgo/cli app debug [appId]
[appId] 앱 ID 형식 com.test.app은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--apikey [key]계정 연결을 위한 API 키입니다.--device디버깅하려는 특정 장치를 사용하세요.
Setting
Section titled “Setting”npx @capgo/cli app setting [path]
커패시터 구성을 편집합니다.
[path] - 변경하려는 설정의 경로입니다. 예를 들어 appId을 변경하려면 appId을 제공합니다.
capacitor-updater에서 자동 업데이트를 비활성화하려면 plugins.CapacitorUpdater.autoUpdate을 제공하세요.
--string 또는 --bool 중 하나를 제공해야 합니다!
옵션:
--string <string>- 설정을 문자열로 설정합니다.--bool <true | false>- 설정을 부울로 설정합니다.
Bundle
Section titled “Bundle”Upload
Section titled “Upload”npx @capgo/cli bundle upload [appId]
[appId]은 앱 ID이며 형식은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--apikey <apikey>계정 연결을 위한 API 키입니다.--path <path>업로드할 폴더 경로입니다.--channel <channel>링크할 채널입니다.--external <url>Capgo Cloud에 업로드하는 대신 외부 URL로 연결합니다.--iv-session-key <key>외부 번들 URL에 대한 IV 및 세션 키를 설정합니다.--s3-endpoint <s3Endpoint>S3 엔드포인트의 URL입니다. 델타 업로드 또는 외부 옵션에서는 작동하지 않습니다.--s3-region <region>S3 버킷의 리전입니다.--s3-apikey <apikey>S3 엔드포인트용 API 키입니다.--s3-apisecret <apisecret>S3 엔드포인트의 API 비밀번호입니다.--s3-bucket-name <bucketName>AWS S3 버킷의 이름입니다.--s3-port <port>S3 엔드포인트용 포트입니다.--no-s3-sslS3 업로드에 SSL을 비활성화합니다.--key <key>공개 서명 키에 대한 사용자 정의 경로(v1 시스템).--key-data <keyData>공개 서명 키(v1 시스템).--key-v2 <key>개인 서명 키에 대한 사용자 정의 경로(v2 시스템).--key-data-v2 <keyData>개인 서명 키(v2 시스템).--bundle-url번들 URL을 표준 출력으로 인쇄합니다.--no-key서명 키를 무시하고 명확한 업데이트를 보냅니다.--no-code-check루트 폴더에 있는 소스 코드 및 인덱스에서 informAppReady()가 호출되는지 확인을 무시합니다.--display-iv-session업데이트를 암호화하는 데 사용된 IV 및 세션 키를 콘솔에 표시합니다.--bundle <bundle>업로드할 번들의 번들 버전 번호입니다.--min-update-version <minUpdateVersion>이 버전으로 업데이트하려면 최소 버전이 필요합니다. 자동 업데이트 비활성화가 채널의 메타데이터로 설정된 경우에만 사용됩니다.--auto-min-update-version기본 패키지를 기준으로 최소 업데이트 버전을 설정합니다.--ignore-metadata-check업로드 시 메타데이터(node_modules) 확인을 무시합니다.--ignore-checksum-check업로드 시 체크섬 검사를 무시합니다.--timeout <timeout>업로드 프로세스의 시간 초과(초)입니다.--delta전체 번들과 함께 델타(매니페스트) 파일을 업로드합니다.--delta-only전체 번들을 건너뛰고 델타(매니페스트) 업데이트만 업로드합니다.--no-delta델타(매니페스트) 업로드를 비활성화합니다(directUpdate이 활성화되어 있지만 전체 번들을 원하는 경우 유용함).--tustus 프로토콜을 사용하여 번들을 업로드합니다.--multipart멀티파트 프로토콜을 사용하여 S3에 데이터를 업로드합니다. 더 이상 사용되지 않으며 대신 TUS를 사용합니다.--encrypted-checksum <encryptedChecksum>암호화된 체크섬(서명)입니다. 외부 번들을 업로드할 때만 사용됩니다.--package-json <packageJson>package.json의 경로입니다. 모노레포에 유용합니다.--auto-set-bundleCapacitor.config.json에 번들을 설정합니다.--node-modules <nodeModules>node_modules의 경로 목록입니다. 단일 저장소에 유용합니다(쉼표로 구분된 예: ../../node_modules,./node_modules).
⭐️ 외부 옵션은 2가지 경우의 잠금을 해제하는 데 도움이 됩니다. 개인 정보 보호가 우려되는 기업, 제3자에게 코드를 보내지 않음, 200MB보다 큰 앱. 이 설정을 사용하면 Capgo는 zip에 대한 링크만 저장하고 모든 앱에 링크를 보냅니다.
🙌 Capgo 클라우드는 링크(외부 옵션의 경우)나 저장 시 코드에 있는 내용을 절대 보지 않습니다.
🔑 암호화를 사용하여 두 번째 보안 계층을 추가할 수 있습니다. 그러면 Capgo는 어떤 것도 보거나 수정할 수 없으며 “신뢰할 수 없는” 상태가 됩니다.
버전에 대한 package.json의 예
{ "version": "1.0.2"}⛔ 버전은 “0.0.0” 이상이어야 합니다.
💡 버전 번호를 보낼 때마다 버전 번호를 업데이트하는 것을 잊지 마세요. 버전 번호는 보안상의 이유로 재정의되거나 삭제 후 재사용될 수 없습니다.
npx @capgo/cli bundle list [appId]
[appId] 앱 ID com.test.app 형식은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--apikey [key]계정 연결을 위한 API 키입니다.
Delete
Section titled “Delete”npx @capgo/cli bundle delete [appId]
[appId] 앱 ID com.test.app 형식은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--apikey [key]계정 연결을 위한 API 키입니다.--bundle버전 번호가 있으면 이 버전만 삭제됩니다.
Cleanup
Section titled “Cleanup”Cloud의 주요 버전에 대한 SemVer 범위
npx @capgo/cli bundle cleanup [appId] --bundle=[majorVersion] --keep=[numberToKeep]
[appId] 앱 ID com.test.app 형식은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--apikey [key]계정 연결을 위한 API 키입니다.--bundle [majorVersion]이전 패키지를 제거하려는 버전인 경우 마지막 패키지 +numberToKeep이 유지됩니다.--keep [numberToKeep]보관하려는 패키지 수(기본값 4).
예: 10.0.1부터 10.0.11까지 10개 버전이 있고 npx @capgo/cli cleanup [appId] --bundle=10.0.0을 사용하면 10.0.1부터 10.0.6까지 제거됩니다. 10.0.7부터 10.0.11까지 유지됩니다.
총 20개 버전이 있고 다음과 같은 번들 번호를 제공하지 않는 경우: npx @capgo/cli cleanup [appId] --keep=2 18개 버전을 제거하고 마지막 2개 버전을 유지합니다.
이 명령은 확인을 요청하며, 유지하고 제거할 항목에 대한 테이블을 표시합니다.
Encrypt
Section titled “Encrypt”경고: 이 명령은 더 이상 사용되지 않으며 다음 주요 릴리스에서 제거될 예정입니다. 새로운 암호화 시스템을 사용해 주세요.
npx @capgo/cli bundle encrypt [path/to/zip]
이 명령은 외부 소스를 사용하여 코드를 저장하거나 테스트 목적으로 사용할 때 사용됩니다.
선택적으로 다음을 제공할 수 있습니다.
--key [/path/to/my/private_key] 개인 키의 경로입니다.
--key-data [privateKey] 인라인을 사용하려는 경우 개인 키 데이터입니다.
이 명령은 ivSessionKeyy를 인쇄하고 암호화된 zip을 생성하여 upload 명령 또는 decryt 명령과 함께 사용합니다.
Encrypt V2
Section titled “Encrypt V2”npx @capgo/cli bundle encrypt [path/to/zip] [checksum]
이 명령은 외부 소스를 사용하여 코드를 저장하거나 테스트 목적으로 사용할 때 사용됩니다. 체크섬은 번들의 sha256(—key-v2에 의해 생성됨)이며, 해독 후 파일의 무결성을 확인하는 데 사용됩니다. 개인 키로 암호화되어 번들과 함께 전송됩니다. 암호화 v2에서는 체크섬이 업그레이드되어 번들의 “서명”이 됩니다.
선택적으로 다음을 제공할 수 있습니다.
--key [/path/to/my/private_key] 개인 키의 경로입니다.
--key-data [privateKey] 인라인을 사용하려는 경우 개인 키 데이터입니다.
--json 정보를 json으로 출력합니다.
이 명령은 ivSessionKeyy를 인쇄하고 암호화된 zip을 생성하여 upload 명령 또는 decryt 명령과 함께 사용합니다.
Decrypt
Section titled “Decrypt”npx @capgo/cli bundle decrypt [path/to/zip] [ivSessionKey]
선택적으로 다음을 제공할 수 있습니다.
--key [/path/to/my/private_key] 개인 키의 경로입니다.
--key-data [privateKey] 인라인을 사용하려는 경우 개인 키 데이터입니다. 이 명령은 주로 테스트 목적으로 사용되며, zip을 해독하고 base64로 해독된 세션 키를 콘솔에 인쇄합니다.
Decrypt V2
Section titled “Decrypt V2”npx @capgo/cli bundle decryptV2 [path/to/zip] [ivSessionKey]
선택적으로 다음을 제공할 수 있습니다.
--key [/path/to/my/private_key] 개인 키의 경로입니다.
--key-data [privateKey] 인라인을 사용하려는 경우 개인 키 데이터입니다. 이 명령은 주로 테스트 목적으로 사용되며, zip을 해독하고 base64로 해독된 세션 키를 콘솔에 인쇄합니다.
--checksum [checksum] 파일의 체크섬, 암호 해독 후 체크섬을 확인합니다.
npx @capgo/cli bundle zip [appId]
[appId]은 앱 ID이며 형식은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--path [/path/to/my/bundle]특정 폴더를 업로드합니다.--bundle [1.0.0]파일 이름의 번들 버전 번호를 설정합니다.--name [myapp]파일 이름을 재정의합니다.--json정보를 json으로 출력합니다.--no-code-check코드 확인을 무시하고 어쨌든 번들을 보냅니다.--key-v2새로운 암호화 시스템을 사용합니다. 이는 새로운 암호화 시스템이 더 나은 체크섬을 사용하여 파일의 무결성을 확인하므로 필요합니다.
Compatibility
Section titled “Compatibility”npx @capgo/cli bundle compatibility [appId] -c [channelId]
[appId]은 앱 ID이며 형식은 여기에 설명되어 있습니다.
[channelId] 새 채널의 이름입니다.
선택적으로 다음을 제공할 수 있습니다.
--apikey [key]계정 연결을 위한 API 키입니다.--text표에 이모티콘 대신 텍스트를 사용하세요.--channel [channel]호환성을 확인할 채널입니다.--package-json <packageJson>package.json의 경로입니다. 모노레포에 유용함--node-modules <nodeModules>node_modules의 경로 목록입니다. 단일 저장소에 유용합니다(쉼표로 구분된 예: ../../node_modules,./node_modules).
Channel
Section titled “Channel”npx @capgo/cli channel add [channelId] [appId]
[channelId] 새 채널의 이름입니다. [appId] 앱 ID 형식 com.test.app은 여기에 설명되어 있습니다.
Delete
Section titled “Delete”npx @capgo/cli channel delete [channelId] [appId]
[channelId] 삭제하려는 채널 이름입니다. [appId] 앱 ID com.test.app 형식은 여기에 설명되어 있습니다.
npx @capgo/cli channel list [appId]
[appId] 앱 ID 형식 com.test.app은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--apikey [key]계정 연결을 위한 API 키입니다.
npx @capgo/cli channel set [channelId] [appId]
[appId]은 앱 ID이며 형식은 여기에 설명되어 있습니다.
선택적으로 다음을 제공할 수 있습니다.
--bundle [1.2.3]App Bundle을 채널에 연결하기 위해 이미 클라우드로 전송했습니다.--latestpackage.json:version에서 번들 버전을 받으세요.--bundle과 함께 사용할 수 없습니다.--state [ normal | default ]채널 상태를 설정합니다.normal또는default이 될 수 있습니다. 한 채널은default이어야 합니다.--downgrade을 사용하면 채널이 다운그레이드 버전을 기기에 보낼 수 있습니다.--no-downgrade은 채널이 다운그레이드 버전을 기기에 보내는 것을 허용하지 않습니다.--upgrade을 사용하면 채널에서 업그레이드(주) 버전을 기기에 보낼 수 있습니다.--no-upgrade채널이 업그레이드(주) 버전을 기기에 보내는 것을 허용하지 않습니다.--ios을 사용하면 채널에서 iOS 기기로 버전을 보낼 수 있습니다.--no-ios은 채널이 iOS 기기에 버전을 보내는 것을 허용하지 않습니다.--android을 사용하면 채널이 Android 기기에 버전을 보낼 수 있습니다.--no-android은 채널이 안드로이드 기기에 버전을 보내는 것을 허용하지 않습니다.--self-assign을 사용하면 장치가 이 채널에 자체 할당할 수 있습니다.--no-self-assign은 장치가 이 채널에 자체 할당하는 것을 허용하지 않습니다.--disable-auto-update STRATEGY이 채널에 대한 자동 업데이트 전략을 비활성화합니다. 가능한 옵션은 메이저, 마이너, 메타데이터, 없음입니다.--apikey [key]계정 연결을 위한 API 키입니다.
업데이트 전략 비활성화
Section titled “업데이트 전략 비활성화”너무 오래된 버전에 대한 업데이트 비활성화를 처리하는 몇 가지 방법이 있습니다.
Capgo는 네이티브 코드를 업데이트할 수 없으므로 이전 네이티브 코드가 있는 버전에서 업데이트된 네이티브 코드가 있는 버전으로의 업데이트는 불가능합니다.
이를 달성하는 데는 몇 가지 방법이 있습니다.
첫째, major 전략입니다. 0.0.0 -> 1.0.0의 업데이트를 방지합니다. 전공은 강조 표시된 숫자입니다(1.0.0 및 0.0.0).
두 번째는 minor 전략입니다. 0.0.0 -> 1.1.0에서 업데이트하거나 1.1.0에서 1.2.0으로 업데이트하는 것을 방지합니다.
주의하세요 이 전략은 0.1.0 -> 1.1.0의 업데이트를 방해하지 않습니다.
셋째, patch 전략입니다. 매우 엄격한 모드로 capgo에 추가되었습니다. 작동 방식을 완전히 이해하지 않는 한 사용하지 않는 것이 좋습니다.
업데이트를 수락하려면 다음 조건을 충족해야 합니다.
- 신버전과 구버전의 메이저는 동일합니다.
- 마이너는 신버전과 구버전 모두 동일합니다.
- 이전 버전의 패치보다 높은 경우 새 버전의 패치
다음은 업데이트가 허용되거나 거부되는 시나리오의 예입니다.
- 0.0.311 -> 0.0.314 ✅
- 0.0.0 -> 0.0.314 ✅
- 0.0.316 -> 0.0.314 ❌
- 0.1.312 -> 0.0.314 ❌
- 1.0.312 -> 0.0.314 ❌
마지막으로 가장 복잡한 전략입니다. metadata 전략.
먼저 이 기능을 활성화한 후 처음에는 채널에 필요한 메타데이터가 부족하기 때문에 업데이트가 실패할 것이라는 점을 알아야 합니다.
채널에 메타데이터가 부족한 경우 다음과 같은 메시지가 표시됩니다.

이와 같은 내용이 표시되면 실패한 채널의 현재 번들로 이동하여 메타데이터를 설정해야 한다는 것을 알 수 있습니다.
먼저 어떤 채널이 실패하고 있는지 파악하세요. misconfigured 열을 보면 그렇게 할 수 있습니다.

그런 다음 실패한 채널로 이동하여 Bundle number을 클릭합니다. 그러면 번들 페이지로 이동됩니다.

Minimal update version 필드를 채우세요. semver이어야 합니다.
전달한 값이 semver가 아닌 경우 오류가 발생하지만 모든 것이 올바르게 진행되면 다음과 같은 내용이 표시됩니다.

이제 업데이트할 때마다 이 데이터를 수동으로 설정하고 싶지 않을 것입니다. 다행히 CLI에서는 이 메타데이터 없이는 업데이트를 보낼 수 없습니다.

metadata 옵션을 사용할 때 번들을 올바르게 업로드하려면 유효한 semver와 함께 --min-update-version을 전달해야 합니다. 다음과 같은 것 :

--min-update-version은 호환성을 수행하는 유일한 방법은 아닙니다.
--auto-min-update-version도 존재합니다. 작동 방식은 다음과 같습니다.
먼저 현재 채널에 업로드된 버전을 살펴봅니다. bundle compatibility 명령과 동일하게 호환성을 확인합니다.
둘째, 새 버전이 100% 호환되면 채널의 최신 버전에서 min_update_version을 재사용합니다.
그렇지 않은 경우 min_update_version을 새로 업로드된 버전의 번들 번호로 설정합니다.
이 옵션을 사용하면 항상 min_update_version이 무엇인지에 대한 정보를 얻을 수 있습니다. 다음과 같이 보일 것입니다:

새 버전이 호환되지 않으면 다음과 같이 표시됩니다.

종단 간 암호화(신뢰할 수 없음)
Section titled “종단 간 암호화(신뢰할 수 없음)”Capgo는 엔드투엔드 암호화를 지원합니다. 즉, 번들(코드)이 클라우드로 전송되기 전에 암호화되고 장치에서 해독됩니다. 이를 위해서는 RSA 키 쌍을 생성해야 하며, 다음 명령을 사용하여 생성할 수 있습니다.
암호화 시스템은 RSA와 AES의 조합으로, RSA 키는 AES 키를 암호화하는 데 사용되고 AES 키는 파일을 암호화하는 데 사용됩니다.
암호화 시스템에 대한 자세한 내용은 아래를 참조하세요.

암호화 스키마
앱용 키 만들기
Section titled “앱용 키 만들기”npx @capgo/cli key create
선택적으로 --force을 지정하여 기존 키를 덮어쓸 수 있습니다. 이 명령은 앱에 키 쌍을 생성하고 개인 키를 안전한 장소에 저장하도록 요청합니다. 개인 키를 git commit하지 말고 누구와도 공유하지 않는 것이 좋습니다.
로컬 테스트 후 구성 파일에서 키를 제거하고
key save을 사용하여 CI 단계에 추가합니다.
앱 구성에 키 저장
Section titled “앱 구성에 키 저장”npx @capgo/cli key save
선택적으로 다음을 제공할 수 있습니다.
--key [/path/to/my/public_key] 공개 키 파일의 경로입니다.
--key-data [publicKey] 공개 키 데이터(인라인을 사용하려는 경우) 이 명령은 권장 사항을 따르고 앱 구성에서 키를 커밋하지 않은 경우에 유용합니다.
작업을 자동화하려면 GitHub 작업이 서버에 푸시하는 작업을 수행하도록 하는 것이 좋습니다.
API 키로 CI 환경 변수를 구성하는 것을 잊지 마세요.