본문으로 건너뛰기

Continuous Integration Setup for Capacitor and Electron Apps

Master your continuous integration setup for CapacitorJS and Electron apps. Learn pipeline configs, signing, artifact management, and Capgo live updates.

마틴 도나디우

마틴 도나디우

콘텐츠 마케터

Continuous Integration Setup for Capacitor and Electron Apps

하이브리드 앱 팀이 빌드 프로세스를 초과했을 때 일반적으로 알 수 있습니다. Someone은 여전히 Mac에 로그인하고 Xcode를 클릭하고 Android artifact를 내보내고 Electron 패키지를 수동으로 서명하고 업로드한 브랜치와 일치하는지 기억하는 사람입니다. 릴리스는 작동하지만, 단지 한두 명의 사람만이 모든 단계를 기억하고 있기 때문에, 그들이 바쁠 때 스케일링이 멈추게 됩니다.

적절한 통합 빌드 설정 fragile한 의식의 반복을 반복 가능한 pipe라인으로 대체합니다. Martin Fowler의 CI 정의는 핵심 아이디어를 여전히 포착하고 있습니다. 팀원들은 매일 최소한으로 변경 사항을 공유 코드베이스에 병합하고, 자동 빌드에 의해 검증되는 통합이 발생할 때 오류가 빠르게 표면화됩니다. Fowler의 원래 통합 빌드 에세이. 그 дисцип린은 Capacitor 및 Electron 앱에 더 중요합니다. 하나의 빌드는 웹 자산, 네이티브 래퍼, 서명 자격증명 및 실시간 업데이트 배포를 같은 실행에서 처리할 수 있습니다.

목차

Capacitor와 Electron 앱이 진짜 CI 파이프라인이 필요하다

일반적인 시작점은 익숙하다. 개발자는 웹 빌드를 로컬에서 실행하고 Capacitor를同步하고 Xcode 또는 Android Studio를 열고 서명된 바이너리를 내고 공유 드라이브나 채팅 쓰레드에 패키지를 넣는다. 속도가 느껴질 때까지. 하지만 첫 번째 빌드가 한 기계에서만 작동하는 경우, 인증서가 경고 없이 만료되는 경우, 팀원이 스테일 브랜치에서 배포하는 경우가 있다. 그 이유는 매뉴얼 단계가 기록되지 않았기 때문이다.

속도만이 아니다. 반복 가능성도 문제다

Fowler의 기본 규칙이 여전히 이 과정을 왜곡하는 이유를 설명한다. 신뢰할 수 있는 CI 설정은 모든 것을 버전 관리에 넣고 빌드를 자동화하고 빌드를 자체 테스트로 만든다. 메인 라인에 푸시가 트리거되면 즉시 고장난 빌드를 고친다. 그리고 빌드 속도를 유지한다. Fowler의 CI 지침그것은 '테스트를 실행하는 것'에 더關係하지 않고 릴리스 작업을 투명하게, 지루하게, 실수하기 어렵게 만드는 것에 더關係한다.

실용적인 규칙: 릴리스가 somebody가 로컬 명령어를 기억해야만 하는 경우, 그것은 아직 파이프라인이 아니다.

Capacitor 팀은 3가지 장소에서 파이프라인이 깨진다. 네이티브 프로젝트 파일은 웹 앱과 다르다. 서명 인증서는 민간 지식이 되고 업데이트 경로는 엉망이 된다. 왜냐하면 nobody가 테스터에게 어떤 버전의 패키지가 도달했는지 신뢰하지 않기 때문이다. Electron 팀도 패키징이 로컬 OS 상태, 네이티브 의존성, 개발자의 ad-hoc 서명 설정에 의존할 때 벽에 부딪힌다.

실제 pipeline은 공유된 진실의 원천을 제공합니다. 동일한 검사를 실행하고 깨끗한 실행자에서 실행하며, 변경 사항을 알려주는 artifact 및 로그를 남깁니다. 그게 '우리가 만들었다'와 '우리가 정확히 무엇을 만들었는지 증명할 수 있다'의 차이입니다.

라이브 업데이트 워크플로가 자연스럽게 여기 맞는 이유는 무엇인가요?

pipeline이 재현 가능해지면 라이브 업데이트 배포가 동일한 릴리스 규칙에 포함되기 시작합니다. 그곳에서 별도의 스크립트를 실행할 때 기억하는 사람들에 의해 실행되는 것이 아니라. 혼합된 팀의 경우, 웹 자산, 자바스크립트 수정, 구성 변경이 완전한 앱 스토어 사이클을 기다리지 않고 진행할 수 있습니다. 구조화된 CI 흐름은 한 번 빌드하고, 한 번 검증하고, 그리고 추적 가능성을 유지하면서 동일한 출력을 올바른 채널에 푸시할 수 있게 합니다.

그것이 __CAPGO_KEEP_0__의 CI 이점 개요가 그림에 들어맞는 이유입니다. 그 가치는 추상적이지 않습니다. 그것은 수동 패키징에서 제어된, 반복 가능한 배달로 이동할 수 있는 능력입니다. 변경 사항에 대한 가시성을 잃지 않고. Capgo’s CI benefits overview 혼합 앱의 경우, 제공자 선택이 순수 웹 작업에 비해 더 중요합니다. Linux 실행자만 필요하고, macOS를 iOS 서명에 필요로 하는 pipeline, Docker를 Electron 패키징에 필요로 하는 pipeline, 로그에 절대 유출되지 않도록 비밀을 보호해야 하는 pipeline은 더 강력한 실행자 제어, 더 명확한 분리, 더 안전한 권한 모델이 필요합니다.

hybrid 앱의 경우, 제공자 선택이 순수 웹 작업에 비해 더 중요합니다. Linux 실행자만 필요하고, macOS를 iOS 서명에 필요로 하는 pipeline, Docker를 Electron 패키징에 필요로 하는 pipeline은 더 강력한 실행자 제어, 더 명확한 분리, 더 안전한 권한 모델이 필요합니다.

hybrid 앱의 경우, 제공자 선택이 순수 웹 작업에 비해 더 중요합니다. npm install hybrid 앱의 경우, 제공자 선택이 순수 웹 작업에 비해 더 중요합니다.

A 좋은 제공자도 릴리스 경로에 맞아야 하며, 빌드 단계만 고려하는 것이 아니다. Capacitor 및 Electron 팀은 종종 native 앱 서명, 아티팩트 프로모션 및 라이브 업데이트 발행과 같은 pipeline에서 처리해야 하며, CI 시스템은 이 단계를 분리해야 하며 workflow를 감사하기 어려운 workflow를 만들지 않아야 한다. 만약 runner 모델이 약하다면 서명 자료가 자유롭게 복사된다. 만약 아티팩트 처리가 느슨하다면 shipped한 제품에 대한 신뢰를 잃게 된다. generic CI 지침은 일반적으로 이 부분을 생략한다.

GitHub Actions은 GitHub에서 이미 생활하는 팀에 적합하다.

GitHub Actions은 소스가 이미 GitHub에 존재할 경우 가장 낮은 저항 선택이다. 워크플로는 앱 code 옆에 위치하며, 리뷰 및 소유권이 명확하며, CI 도구 비교에서 설명한 소스 제어 및 runner 모델에서 Linux, Windows, macOS runner를 지원한다. GitHub Actions runner 모델 및 SCM 결합. 하이브리드 팀에게는 중요하다. iOS 빌드는 macOS가 필요하며, Electron 패키징은 종종 Linux 또는 Windows 작업에 더 잘 맞는다. 또한 서명 비밀을 workflow에만 제한할 수 있다.

GitHub 작업이 모든 작업을 동일하게 처리할 경우 GitHub 작업이 소음이 많아질 수 있습니다. GitHub을 사용하는 팀이 이미 code 검토, branch 보호 및 릴리스 소유권을 사용하고 있다면 잘 작동합니다. 빌드, 레지스트리 및 배포 제어가 다른 곳에 살고 있고 CI 시스템이 릴리스 프로세스에 더 많은 소유권을 원한다면 이 옵션은 덜 매력적입니다. 많은 모바일 팀에서는 편리함이 여전히 이길 수 있습니다. 워크플로 파일과 code 검토가 같은 장소에서 발생하기 때문입니다.

GitLab CI는 리포지토리와 배달이 함께 있을 때 강력합니다.

GitLab CI는 리포지토리, pipeline 및 환경 추적이 하나의 장소에서 이루어지는 팀에 적합합니다. 공유 또는 자체 관리된 러너를 지원하며 플랫폼 모델에서 배포 단계를 포함하여, 같은 팀이 빌드, 스테이징 및 릴리스 오케스트레이션을 소유할 때 실용적입니다. GitLab CI 플랫폼 모델이 설정은 서명, 패키징 및 릴리스 승인 결정이 다른 시스템에 분산되지 않도록 분리할 때 도움이 됩니다.

팀이 이미 GitLab를 사용하여 소스 코드 관리 및 레지스트리 저장소를 사용하고 있다면 pipeline이 통합되고 감사하기 쉬우며, macOS 러너를 iOS 서명에 사용하거나 live 업데이트 배포를 릴리스 프로세스와 동기화하는 경우 설정 비용이 편리함보다 더 커질 수 있습니다. GitLab 패턴을 구체화하는 팀에게는 Capgo의 GitLab 빌드 및 릴리스 가이드 이것은 유용한 참고 자료입니다. 그것은 빌드 및 릴리스 단계가 pipeline을 수동 체크리스트로 변환하지 않고도 함께 묶일 수 있는 방법을 보여줍니다.

CircleCI는 호스팅된 유연성을 원하는 팀에 적합합니다.

CircleCI는 일반적으로 패키징 및 빌드 자동화에 강력한 생태계가 있는 팀이 관리된 실행을 원할 때 의미가 있습니다. Cloudflare, GitLab, Bitbucket 리포지토리에 대한 클라우드 실행자 및 자체 호스팅 옵션으로써 CircleCI는 GitHub 및 Electron 작업에 유용합니다. 이 포트 ability은 고객 또는 코드베이스 간에 혼합된 팀이 이동할 때 도움이 됩니다. CircleCI 실행 모델CircleCI의 장점은 Capacitor 및 Electron 작업에서 빌드 논리를 compact하게 유지하면서 제공자 기능을 사용하여 실행자 선택 및 작업 격리에 사용할 수 있다는 것입니다.

단점은 포트 ability이 복잡성을 숨길 수 있다는 것입니다. macOS 서명, 아티팩트 프로모션 및 업데이트 발행을 추가하면 여전히 엄격한 비밀 처리 및 명확한 작업 경계가 필요합니다. CircleCI는 호스팅된 러너를 원하고 제공자-특정 워크플로 모델을 조금 더 배우려는 팀에 적합합니다.

기준 GitHub Actions GitLab CI CircleCI
Capacitor/Electron 빌드 지원 macOS, Linux, Windows 러너를 지원하는 GitHub-첫 번째 팀에 적합합니다. 팀이 이미 GitLab에서 공유 또는 자체 관리된 실행자와 함께 작업 중인 경우 강력합니다. 다중 SCM에서 호스팅 된 지원이 강력합니다.
구성의 용이성 이미 code에 GitHub이 있는 경우 낮은 마찰 GitLab의 전체 스택이 있는 경우 가장 좋지만 플랫폼 통합이 강력합니다. 제공자에 따라 더 많은 설정을 학습해야 하는 유연한 옵션
Free Tier 제한 작은 프로젝트에 특히 적합한 공개 GitHub 저장소에 가장 적합합니다. GitLab이 이미 시스템 레코드일 때 가장 좋은 가치 관리된 실행 대신 최소 설정 비용보다 관리된 실행을 선택하는 경우 종종 선택됩니다.

하이브리드 애플리케이션을 빌드하기 위한 GitHub 액션, GitLab CI, CircleCI 기능을 비교하는 차트입니다.

일반적으로 올바른 선택은 code가 이미 어디에 존재하고 가장 자주 필요한 실행자 유형이 어디인지에 따라 결정됩니다. iOS 배포 압박을 받는 Capacitor 앱은 macOS에 쉽게 접근할 수 있습니다. 예측 가능한 패키징을 가진 Electron-heavy 제품은 Docker 친화적인 작업과 아티팩트 처리를 우선시할 수 있습니다. 또한 동일한 pipeline에서 라이브 업데이트를 게시하는 경우, 릴리스 권한과 서명 단계를 분리하기 가장 쉬운 제공자를 선택하세요.

A __CAPGO_KEEP_0__ platform을 비교하는 유용한 방법은 각 플랫폼에 대한 하나의 질문을 물어보는 것입니다. 그것은 필요로하는 네이티브 작업을 무리없이 실행할 수 있나요? 그것은 비밀을 제어할 수 있나요? 그리고 팀은 두 번째 위키 페이지를 열지 않고도 구성 파일을 읽을 수 있나요?

Pipeline 구성 빌드

합성 파이프라인은 가장 저렴한 체크가 실패할 때 먼저 실패하고 비싼 러너가 필요할 때까지 기다리도록 구성해야 합니다. linting, 단위 테스트 및 웹 빌드는 macOS가 iOS를 컴파일하기 시작하거나 Electron 패키징이 서명된 아티팩트를 생성하기 전에 완료되어야 합니다. 이 순서는 깨진 변경 사항이 러너 시간을 소모하지 않도록하고 빠른 체크가 먼저, 더 무거운 스위트가 나중에, 그리고 같은 아티팩트를 나중에 단계를 통해 승격하기 전에 한 번만 빌드하는 CI 패턴을 따릅니다. JetBrains CI/CD 최적화.

실제로 유지할 수 있는 GitHub Actions 형태

실용적인 레이아웃은 단순하고 예측 가능합니다:

  1. 체크아웃
  2. 의존성 설치
  3. lint 및 단위 테스트
  4. 웹 자산 빌드
  5. 네이티브 프로젝트 동기화
  6. 플랫폼 아티팩트 패키징
  7. 업로드 아티팩트

그런 시퀀스는 비용이 많이 드는 네이티브 작업으로부터 code을 멀리하고, 캐시 동작을 더 쉽게 이해할 수 있게 한다. 또한 npm, Gradle, 패키지 매니저 캐시가 의존성 그래프가 이미 유효한 경우에만 중요하다는 것을 의미한다.

일반적인 GitHub Actions 작업은 다음과 같은 구조를 따르며, 프로젝트 세부 사항이 변경되더라도:

  • 한 번만 설치: Node 및 패키지 캐시를 복원하기 전에 npm ci.
  • EARLY VALIDATION: lint 및 단위 테스트를 네이티브 빌드 전에 실행한다.
  • 웹 출력 빌드: Capacitor과 Electron이 모두 사용하는 자산 번들을 생성한다.
  • 플랫폼 작업으로 분기: iOS, Android, Electron 패키징이 공유 단계가 통과한 후에만 실행된다.
  • 아티팩트를 게시: __CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

code

__CAPGO_KEEP_0__

Capacitor Capgo __CAPGO_KEEP_0__

A diagram illustrating a five-step continuous integration pipeline for building Capacitor and Electron applications using GitHub Actions.

Code 서명 및 아티팩트 관리

__CAPGO_KEEP_0__ 서명은 좋은 pipeline이 실패하는 곳입니다. 빌드가 통과하고 패키지가 존재하고, 릴리스가 실패하는 이유는 인증서가 누락된 것, 키 체인에서 인증서를释放하지 못한 것, 올바른 아티팩트가 업로드되지 않은 것 등입니다. 해결책은 서명을 패키징의 부차적인 효과로 간주하는 대신, 서명을 제어된 단계로 다루는 것입니다.

iOS, Android, Electron은 각각 다른 처리가 필요합니다.

iOS signing usually means certificates, provisioning profiles, and macOS runner state. Android needs keystore management and whatever your Play release path requires. Electron adds code signing certificates and, on macOS, notarization for distributable desktop builds. Each of those should be handled by the pipeline, not by a human copying files onto a runner.

iOS의 경우, 팀은 fastlane match 또는 macOS 런너에 인증서를 수동으로 설치하는 것을 사용합니다. 중요한 것은 일관성, 특정 도우미가 아닌 것입니다. 개발자가 키 체인에 인터랙티브로 접근하는 workflow가 있다면, 최악의 시점에 결국 실패할 것입니다.

Android의 경우, 키 스토어를 저장소 외부에 유지하고 빌드 시에 비밀로 주입하는 것이 좋습니다. Electron의 경우, 서명 단계를 패키징 단계와 가깝게 유지하여, 오작동한 아티팩트를 우연히 서명하지 않도록 합니다.

실용적인 규칙: 릴리스할 아티팩트를 정확하게 서명하고, 서명된 아티팩트를 불변으로 유지하는 것이 좋습니다.

아티팩트 관리는 추적 가능성을 유지해야 합니다.

Artifact 관리는 단순히 저장소만 아니다. 특정 커밋에서 어떤 바이너리가 왔는지, 어떤 채널로 전송되었는지 알 수 있기 때문이다. Fowler의 이전 지침에 따르면 버전 정보를 표시하는 것이 여전히 중요하다. CI 시스템에서 빌드 ID, 배포 메타데이터, 릴리스 추적성은 나중에 지원 질문에 대한 답변을 도와준다. Fowler의 버전 정보 표시.

롤백, 감사, 지원 재현을 위해 서명된 출력을 유지할 수 있지만, 컨텍스트가 없는 오래된 릴리스를 남겨두지 말라. 정리된 이름 스키마, 커밋 SHA, 플랫폼 태그는 큰 도움이 된다. TestFlight, Google Play 내부 테스트, 또는 Electron 배포 버킷에 PIPELINE이 업로드되면 업로드 단계를 명확하게 하여 CI에서 남겨진 것을 검사할 수 있도록 하라.

Capgo의 인증서 관리 지침 인증서 관리 지침은 네이티브 서명과 업데이트 공유에 적용되는 동일한 discipline에 관련이 있다. 자격 증명은 안전하게 저장되어야 하며, 깨끗하게 회전되어야 하며, 로그에 반영되지 않아야 한다.

pipeline에서 Capgo Live Updates를 자동화하는 방법

빌드가 안정화되면, Live Update 공유가 시간을 가장 많이 절약하는 부분이다. 하이브리드 팀은 스토어 리뷰를 기다리지 않고 복사본을 수정하거나 웹 버그를 수정하거나 플래그를 전환할 수 있다. CI-드라이븐 Capgo 공유 단계는 네이티브 릴리스 프로세스를 병목 현상으로 만들지 않고 업데이트 경로를 빌드와 동일한 제어를 사용하여 연결한다.

채널 기반 배포는 릴리스를 제어합니다

배포는 가장 깨끗한 패턴입니다 준비 개발 branch에 merge하고 생산 only on tagged releases. That keeps testers on a predictable channel while making production pushes deliberate and reviewable. The pipeline should store the Capgo API key as a secret, install the CLI, bundle the latest web assets, and publish the update as part of the job.

생산

  • 만들기 테스터는 예측 가능한 채널에 있도록 하며, 생산 푸시를 의도적이고 검토 가능한 것으로 유지합니다. pipeline은 __CAPGO_KEEP_0__ __CAPGO_KEEP_1__ 키를 비밀로 저장하고, __CAPGO_KEEP_2__를 설치하고, 최신 웹 자산을 패키지하고, 업데이트를 작업의 일부로 배포합니다.
  • 실제 운영에서 잘 작동하는 간단한 정책이 있습니다: 개발 branch:
  • 준비 채널에 푸시합니다. CI와 실시간 업데이트 서로 강화되며 pipeline이 이미 어떤 커밋을 빌드하고 있는지 알기 때문에 그 메타데이터를 __CAPGO_KEEP_0__ 배포 단계에서 사용하여 업데이트 기록을 읽기 쉽게 유지할 수 있습니다. 특히 특정 네이티브 빌드와 어떤 웹 페이로드가 함께 갔는지 알려야 할 때 especialmente.

CI and live updates reinforce each other because the pipeline already knows which commit it is building. Use that metadata in the Capgo publish step so the update history stays readable, especially when you need to answer which web payload went with a given native build.

__CAPGO_KEEP_0__의 업데이트 모델은 변경된 파일만 보내고 롤백이 안전하게 이루어질 수 있도록 하여 CI-드라이븐 릴리즈 플로우에 자연스럽게 맞춰져 있습니다. 따라서 pipeline은 단순히 자산을 전달하는 것이 아니라, 그 자산이 어떤 채널과 관중에게 전달되는지 결정하는 것입니다. 자주 릴리스하는 팀에게는 이러한 제어가 수동으로 한 번의 배포 스크립트보다 유용합니다.

https://Capgo.app에서 가져온 스크린샷

Screenshot from https://capgo.app

정확한 __CAPGO_KEEP_0__ Actions 패턴에 대해

GitHub의 __CAPGO_KEEP_1__ Actions 통합 안내서 Capgo’s GitHub Actions integration guide CI pipeline을 보호하는 방법

CI pipeline을 보호하는 방법

A pipeline이 성공적으로 빌드되더라도 여전히 안전하지 않을 수 있습니다. NSA와 CISA의 정부 지침은 CI/CD 보안을 우선 문제로 다루며, 보안 스캔을 통합하고, 감사 로그를 유지하고, CI/CD 구성에 서명하고, SBOM 및 SCA를 사용하고, 비밀을 평문으로 전송하지 않도록 보호하고, 재해 복구 테스트와 함께 고가용성을 위해 빌드하는 것을 권장합니다. NSA와 CISA의 CI/CD 강화 지침. 이 프레임은 실제 팀에서 잘못된 것을 설명하는 데 유용합니다. 유출된 토큰, 조작된 구성, 너무 광범위한 배포 접근 권한.

pipeline을 강화하는 것은 앱을 강화하는 것과 다릅니다.

많은 지침이 의존성 스캔에 대해 이야기하지만 CI 시스템 자체를 무시합니다. 그건 실수입니다. 만약 컴프라미드된 러너가 비밀을 출력하거나 서명 단계를 조작하거나 업로드하기 전에 아티팩트를 교체할 수 있다면, 앱은 code이 완벽히 깨끗하고 여전히 안전하지 않은 제품을 배달할 수 있습니다. Secure pipeline design는 러너, 구성, 자격 증명을 프로덕션 자산으로 다루는 것을 의미합니다.

실제 제어는 간단합니다:

  • pipeline 구성에 서명: 비인가된 워크플로 편집을 명확하게 하세요.
  • 비밀을 로그에서 제거: shell 출력을 통해 평문으로 자격 증명을 전송하지 마세요.
  • 배포 권한을 제한: 제한된 branch 또는 tag만 프로덕션에 도달해야 합니다.
  • 실행 기록 감사: 충분한 로그 세부 정보를 유지하여 발생한 일들을 재구성할 수 있도록 하세요.
  • 빌드 이미지를 및 의존성을 스캔하십시오: 특히 Electron 작업이 컨테이너화된 패키징을 사용하는 경우.

인증 및 환경 격리에는 discipline이 필요합니다

OIDC 기반 클라우드 인증은 많은 현대 CI 설정에서 오래된 자격 증명을 사용하는 것보다 더 적합합니다. 이는 도난당한 토큰의 폭파 반경을 좁히는 것이며, 분리된 환경 계정 및 제한된 프로덕션 액세스도 실수로 승격하는 것을 방지합니다. 이러한 패턴은 특히 하이브리드 팀에 잘 맞습니다. 왜냐하면 모바일 릴리스 PIPELINE이 시간이 지남에 따라 의도치 않게 더 많은 권한을 accrete하는 경향이 있기 때문입니다.

CI PIPELINE을 보안하는 4가지 방법에 대한 인포그래픽.

작업 중인 PIPELINE은 쉽게 조작할 수 있기 때문에 여전히 위험이 될 수 있습니다. 보안 CI는 앱을 배포하는 것과 같은 설계 작업이 필요하며, 규제 환경에서는 선택이 아닙니다.

PIPELINE의 일반적인 실패와 해결 방법

Capacitor 및 Electron 프로젝트의 대부분의 CI 실패는 몇 가지 반복되는 범인들의 증상입니다. npm 설치가 불안정한 경우, 실행자 환경이 일반적으로 drift하고 있습니다. Xcode가 시간 초과하는 경우, 일반적으로 native 빌드가 시작되기 전에 너무 많은 일들을 수행하고 있습니다. Gradle이 메모리 부족을 발생시키는 경우, 패키징 단계가 일반적으로 하나의 실행자에서 너무 많은 일을 시도하고 있습니다.

증상에 따라 진단하십시오, 도구 이름에 따라 진단하지 마십시오

의존성 설치가 중간에 끊기는 경우 일반적으로 캐시 오염 또는 불안정한 lockfile 워크플로우를 의미합니다. 이 문제를 해결하려면 clean install 명령어에 의존하고 패키지 매니저 버전을 고정하고 실제 설치 단계와 캐시 복원 단계를 분리하세요.

Xcode 빌드 실패 일반적으로 실행자 설정, 미설치된 시뮬레이터 런타임, 또는 인증 상태와 관련이 있습니다. macOS 작업이 환경 확인과 시작되도록 하여 인증 단계를 분리하여 컴파일 시간 또는 인증 시간에 실패하는지 구별할 수 있도록 하세요.

Gradle 메모리 문제 Android 및 웹 작업이 동일한 작업을 공유할 때 발생하는 것입니다. 작업 중복을 줄이고 Android 빌드 단계를 집중하고 관련 없는 셸 명령어를 동일한 단계에 묻지 마세요.

Electron 패키징이 깨질 때 일반적으로 네이티브 모듈 불일치 또는 패키징 환경 내 시스템 의존성 누락으로부터 발생합니다. 빌드 컨테이너를 고정하고 네이티브 의존성 설치를 패키징 전에 확인하고 서명 후에 다시 빌드하지 마세요.

빠른 해결책이 영웅적인 디버깅보다 낫습니다.

Capgo 공개 오류가 나타날 때, 첫 번째로 확인해야 하는 것은 pipeline이 보낸 것으로 생각하는 버전과 채널 상태가 실제로 맞는지 여부입니다. 자동화된 라이브 업데이트 흐름에서 혼란의 근원인 불일치된 메타데이터입니다. 또한 빌드 단계가 최종 자산을 생성한 후에 공개 단계를 가까이 두세요. 그러면 부분 출력을 업로드하지 않도록 하세요.

일상적인 습관이 시간을 절약합니다:

  • 빠르게 실패하세요: lint 및 단위 테스트를 네이티브 패키징보다 앞에 두세요.
  • 병렬화 할 수 있을 때: iOS, Android, Electron 작업은 공유 웹 빌드 후에 기다릴 필요가 없습니다.
  • 아티팩트를 보이기 위해: 만약 출력을 검사할 수 없다면, 배포를 신뢰할 수 없습니다.
  • 각각의 작업을 줄이기 위해: 한 작업이 하나의 일만 잘 수행해야 합니다.

만약 여러분의 하이브리드 앱 PIPELINE이 아직 수동으로 서명, ad-hoc 업로드, 그리고 몇몇 사람들만이 문서화되지 않은 단계를 알고 있는 사람들에 의해 유지되고 있다면, 그 프로세스를 고치세요. Capgo는 Capacitor와 Electron 팀에게 서명된 라이브 업데이트를 자동화하고, 릴리즈를 채널을 통해 라우팅하고, 같은 워크플로우 내부에 추적성을 유지할 수 있는 방법을 제공합니다. Visit Capgo __CAPGO_KEEP_0__

실시간 업데이트 Capacitor 앱

실시간 업데이트 Capgo 앱

웹层 버그가 실시간으로 활성화되면 __CAPGO_KEEP_0__를 통해 수정을 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 말고, 사용자는 배경에서 업데이트를 받으면서 네이티브 변경 사항은 일반적인 검토 경로에 남겨둔다.

인간 지원 - Martin

시작하기

Capgo gives you the best insights you need to create a truly professional mobile app.