메인 콘텐츠로 건너뛰기

빌드 종류에 대한 설명: 로컬에서 프로덕션까지

모든 빌드 종류에 대해 혼란스러우신가요? 로컬, CI, 디버그, 릴리즈 빌드부터 서명, 배포, 롤백 전략까지 이 안내서에서는 모든 것을 설명합니다.

빌드 종류에 대한 설명: 로컬에서 프로덕션까지

프로젝트를 열면 build:ios:dev, build:android:qa, build:staging, build:release, build:prodplus 몇 개의 셸 스크립트 nobody wants to touch. 그런 다음 alguien says, “지금까지 클라이언트에게 스테이징 빌드를 만들 수 있나요?” 만약 당신이 중급 모바일 개발자라면, 그 요청은 종종 불편하게 모호합니다. 어떤 설정을 사용해야 하나요? 어떤 서명 식별자를 사용해야 하나요? 어떤 백엔드를 사용해야 하나요? 어떤 배포 경로를 사용해야 하나요?

그것은 일반적으로 빌드 유형을 평평한 목록으로 다루는 데서 오는 혼란입니다. 그것은 아니다. 그것은 워크플로입니다. 각 빌드는 사용자의 장치와 laptop 사이의 특정 문제를 해결하기 위해 존재합니다.

빌드는 단순히 컴파일된 앱이 아닙니다. 그것은 특정 목적, 대상 audience, 및 환경을 위해 assembly 된 앱 버전입니다. 일부 빌드는 디버깅을 도와주기 위해 존재합니다. 일부 빌드는 QA가 안전하게 깨지도록 도와줍니다. 일부 빌드는 릴리스 엔지니어링이 신뢰할 수 있는 artifact를 생성할 수 있도록 도와줍니다. 일부 빌드는 제품 팀이 변경 사항을 덜 위험하게 배포할 수 있도록 도와줍니다.

지금까지 시작하기 전에 로컬 설정이 아직 불안정하게 느껴진다면, 첫 번째로 올바른 Capacitor 로컬 환경 설정을 구축하세요. 빌드 복잡성이 예측 가능한 툴링이 있는 경우에만 쉽게 이해할 수 있습니다.

목차

__CAPGO_KEEP_0__ 소프트웨어 빌드의 세계를 단순화하는 방법

__CAPGO_KEEP_0__ 가장 일반적인 실수는 빌드 이름이 모든 이야기를 전달한다고 가정하는 것입니다. 그렇지 않습니다. staging __CAPGO_KEEP_0__ 다른 저장소에서는 “스테이징 API를 향한 릴리스 맛집”을 의미할 수 있습니다. 다른 저장소에서는 “모의 결제를 포함한 디버그 가능한 QA 아티팩트”를 의미할 수 있습니다. 세 번째 저장소에서는 “privately 배포되는 프로덕션에 서명된 빌드”를 의미할 수 있습니다.

__CAPGO_KEEP_0__ 그 이유는 팀이 엉켜있는 것입니다. 레이블은 빌드가 수행하는 작업을 이해하는 경우에만 유용합니다.

__CAPGO_KEEP_0__ 빌드의 유형에 대한 유용한 방법은 다음과 같습니다:

  • __CAPGO_KEEP_0__ 로컬 빌드는 개인 개발자가 빠르게 움직일 수 있도록 도와줍니다. __CAPGO_KEEP_0__ CI 빌드는 팀의 공유된 소스 오브 트루스를 생성합니다.
  • __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
  • Debug 및 릴리즈 플래버 앱이 컴파일되고 측정되는 방식을 정의합니다.
  • 배포 빌드 앱을 받고 어떻게 받는지 정의합니다.
  • 서명 빌드 플랫폼이 아티팩트를 신뢰할지 결정합니다.
  • 채널 기반 업데이트 변경 사항이 설치 후 어떻게 이동하는지 결정합니다.

이것들은 경쟁하는 카테고리가 아닙니다. 그들은 쌓입니다.

‘스테이징 빌드’는 거의 단일한 것이 아닙니다. 일반적으로 플래버, 환경, 서명, 배포 선택의 combination입니다.

이것이 두 팀이 모두 ‘베타 빌드’가 필요하다고 말할 수 있는 이유입니다. 그리고 완전히 다른 아티팩트를 의미합니다.

이것은 모바일에서 가장 중요합니다. 왜냐하면 모든 단계가 마찰을 증가시기 때문입니다. 네이티브 컴파일, 비밀, 배포, 앱 스토어 트랙, 테스터 접근, 환경 설정, 롤백 모두가 일치해야 합니다. 만약 하나가 느슨하면 릴리즈 프로세스가 민감한 지식이 됩니다. 그리고 한 엔지니어가 휴가에 가면 nobody가 깨끗하게 배포할 수 없습니다.

이 팀들은 잘 처리하는 팀들이 더 많은 스크립트를 기억하지 않는다. 그들은 빌드 유형을 품질 게이트로 정의한다. 각 게이트는 다음과 같은 다른 종류의 위험을 낮춘다: code이 깨진 경우, 잘못된 구성, 잘못된 서명, 잘못된 롤아웃, 또는 잘못된 복구.

빌드 스펙트럼: 로컬 빌드 vs CI 빌드

로컬 빌드와 CI 빌드의 차이를 분명히 구분하지 않으면 많은 빌드의 고통이 시작된다. alguien이 "내 컴퓨터에서 작동한다"고 증명한 후 branch가 CI에서 실패하는 것은 로컬 환경이 암시적으로 캐시된 의존성, 수동으로 편집된 파일, 또는 서명 자산이 자동화에 포함되지 않은 경우이다.

로컬 빌드와 CI 개발의 차이를 공부하는 현대 사무실에서 일하는 집중된 남자.

로컬 빌드

로컬 빌드는 개인적인, 빠른, 그리고 버려질 수 있는 빌드이다. 즉시 질문에 대한 답변을 위해 사용한다.

화면이 렌더링되나요? 네이티브 플러그인이 초기화되나요? Gradle 또는 Xcode 변경이 컴파일을 깨트리나요? 로깅을 높인 상태로 재현 가능한 오류가 발생하나요?

좋은 로컬 빌드는 속도보다 의식에 우선한다. 일반적으로 느슨한 검사, 자세한 로그, 개발자 토글, 그리고 임시 인스트루멘테이션을 포함한다. 그건 괜찮다. 그 JOB은 빠른 feedback를 제공한다.

그러나 로컬 빌드를 더 중요한 것으로 승격시키는 것은 잘못된 것이다. 로컬 빌드는 컴파일이 성공적으로 한 로컬 컴퓨터에서만 성공한 경우 release artifact가 될 수 없다.

CI 빌드

이미지: 로컬 빌드와 CI 개발의 차이를 공부하는 현대 사무실에서 일하는 집중된 남자.

CI 빌드는 느린 이유가 있습니다. CI는 개인 컴퓨터의 상태를 제거하고 빌드 프로세스를 반복 가능하게 만듭니다.

CI가 건강할 때, CI는 세 가지 일을 잘합니다:

  • 새로부터 다시 빌드합니다: 프로젝트가 숨겨진 지역 가정 없이 컴파일 될 수 있는지 증명합니다.
  • 팀 수준의 체크를 실행합니다: 유닛 테스트, linting, 패키징 규칙이 항상 같은 장소에서 발생합니다.
  • 추적 가능한 아티팩트를 생성합니다: 팀은 빌드를 커밋, branch, pipeline 실행과 연결할 수 있습니다.

이것이 저에게 워크샵-공장 analogy가 마음에 드는 이유입니다. 랩탑은 반복을 위해 작업대입니다. CI는 프로세스가 실제인지 증명하는 assembly line입니다.

만약 팀이 여전히 자동화에서 스크립트의 위치를 수동으로 결정하고 있다면, 그 논리를 중앙화하세요. 실제 참고 자료는 __CAPGO_KEEP_0__ Actions를 사용하여 개발 및 프로덕션 빌드를 관리하는 이 안내서입니다. managing dev and prod builds with GitHub Actions.

__CAPGO_KEEP_0__ QA, 제품, 또는 지원이 아티팩트를 필요로 한다면, CI에서 가져와야 합니다. 개발자의 머신에서 가져와서는 안됩니다.

그것을 받아들이면, 나머지 빌드 라이프 사이클이 더 쉬워집니다. 맛집 선택, 서명, 환경 주입, 배포는 모두 팀의 누구도 검토할 수 있는 pipe라인에 속해야 합니다.

Core Build Flavors Debug vs Release

빌드에 사용되는 여러 레이블이 있지만, 그 이름 아래에 있는 두 맛집이 가장 중요합니다: debugrelease.

그들은 개발자와 사용자가 반대되는 것을 필요로하기 때문입니다.

Debug builds

Debug 빌드는 인간이 행동을 검사하는 것을 도와줍니다. 일반적으로 더 많은 메타데이터를 유지하고, 문제를 해결하는 것이 더 쉬우며, 문제를 숨기지 않는 공격적인 최적화가 일반적으로 피합니다.

건설 규격에서 유용한 비유가 있습니다. 규격은 일반적으로

There’s a useful analogy from construction specs. Specifications commonly fall into 구성 유형, 성능, 사유, 그리고 참조 표준 구성 유형, 그리고 debug 구성은 편리하게 참조 표준으로 매핑됩니다. 구성 유형 성능 성능 구성 유형의 구분 실제로 debug 구성은 다음 것과 같은 것을 원합니다:.

__CAPGO_KEEP_0__

  • Readable diagnostics: 에러를 찾는데 도움이 되는 스택 추적, 콘솔 출력 및 Symbol.
  • Developer affordances: 개발자에게만 적합하지 않은 사용자에게 표시되지 않는 mock 토글, 테스트 메뉴 및 기능 Switch.
  • Low-friction iteration: 빠른 설치 및 실행 주기를 더 중요하게 여기는 패키지의 미장미보다.

Debug builds are not “bad.” They’re purpose-built.

Debug 빌드는 "나쁜 건 아니야." "특수 목적을 위해 만들어진 건".

Release builds

Release 빌드

Release builds are made for devices in the wild. That changes the priorities immediately.

Release 빌드는 실제 장치에 배포되기 때문에 우선순위가 즉시 바뀐다.

추천 최적화하는 항목
디버그 개발, 로컬 테스트, 문제 재현 可視성 및 반복 속도
릴리즈 베타 배포, 스토어 제출, 프로덕션 롤아웃 안정성, 성능 및 신뢰

팀이 여전히 잘못하는 이유

가장 큰 혼란의 원인은 '환경'과 '맛'을 혼용하는 것입니다.

빌드는 배포 맛집이 스테이징 서비스를 향해 포인트를 찍습니다.그것은 QA에서 일반적입니다. 비프로덕션 데이터와 프로덕션과 같은 동작을 원하기 때문입니다. 빌드는 또한 개발 서비스를 향해 포인트를 찍은 디버그 맛집이 될 수 있습니다. 일상적인 코딩을 위해 사용합니다. 그것은 다른 축입니다.

스크립트의 많은 난잡성은 팀이 패키지 이름에 모든 가능한 combination을 인코딩하는 대신 매트릭스를 문서화하지 않기 때문에 발생합니다.

사용자 인터페이스 동작을 테스트하는 비개발자들이 배포를 할 때 배포 맛집을 배포하세요. 디버그 맛집은 엔지니어링 작업과 의도적인 디버깅을 위해 유지하세요.

그것은 많은 부차적인 복잡성을 제거합니다.

빌드 유형을 매핑하는 배포 환경

빌드 유형에 대한 많은 토론은 너무 일찍 끝나게 됩니다. 그들은 로컬, 디버그, 배포를 설명하고 더 어려운 질문인 이 빌드가 어디로 가는지에 대한 질문을 무시합니다.

그것은 빌드의 목적지로 가는 곳이 빌드가 포함해야 하는 내용, 빌드가 어떻게 서명되어야 하는지, 그리고 빌드가 누구에게 전달되어야 하는지에 영향을 줍니다.

실용적인 빌드 워크플로는 여러 환경을 거쳐야 하며, 각 환경은 다른 청중과 위험에 대한 용납을 위한 다른 청중을 가지고 있습니다. Capacitor 앱을 개발하고 있다면, 개발과 프로덕션 앱 동작을 분리하는 청산한 정신적 분리를 유지하는 것이 도움이 됩니다. development and production app behavior in Capacitor이러한 "빌드 버그"는 실제로 환경 매핑 오류일 때가 많습니다.

Nightly 및 canary

이러한 빌드는 엔지니어, QA, 또는 내부 팀의 일부만이 rough edges를 tolerate할 수 있는 사람들에게 제공됩니다.

Nightly 빌드는 일반적으로 일정에 따라 생성되거나 최신 메인 branch 상태에서 생성됩니다. Canary 빌드는 더 넓은 롤아웃 전에 좁은 대상을 노출시키기 위해 의도적으로 생성됩니다. 나는 그들을 학습 도구로 다루며 안정성에 대한 약속으로는 다릅니다.

이러한 빌드는 다음 질문에 답할 때 유용합니다.

  • branch가 모듈 간에 깨끗하게 통합되나요?
  • native dependency 업그레이드가 특정 장치 패밀리의 특정 장치에 영향을 미쳤나요?
  • 내부 테스터가 더 넓은 베타 노출 이전에 리그레션을 감지할 수 있나요?

어떤 것이 작동하지 않는지

Staging 및 beta

이 시점에서 제품 품질이 엔지니어링의 편의보다 더 중요합니다.

Staging 또는 beta 빌드는 실제 사용자가 받을 것과 유사해야 합니다. 일반적으로 이는 릴리스 맛, 가능한 경우 프로덕션과 같은 구성, 플랫폼 도구인 TestFlight 또는 Google Play 테스트 트랙을 통해 제어된 배포를 의미합니다.

관중이 여기로 이동합니다:

  • QA는 회귀, 워크플로우 및 수락 기준을 검증합니다.
  • 제품 관리자는 실제 셸에서 동작을 검토합니다.
  • 외부 테스터는 사용성, 장치 커버리지 및 경계 사례를 검증합니다.
  • 지원 또는 성공 팀은 미래의 변경 사항을 미리 보아야 합니다.

이곳의 실수는 베타를 “디버그 빌드만”으로 간주하는 것입니다. 만약 테스터가 실제 사용자 흐름을 평가하고 있다면, 그들은 릴리즈와 같은 조건이 필요합니다.

개인 분배 빌드

어떤 앱은 전혀 공공 스토어 사용자에게 가지지 않거나 narrower 그룹에 먼저 도달해야 하는 빌드가 필요합니다.

그것은 클라이언트 특정 빌드, 내부 직원 앱, 규제 워크플로우, field 운영 도구 및 기업 전용 분배를 포함합니다. 이들은 설치할 수 있는 사람과 백엔드에 접속할 수 있는 사람에 대한 엄격한 제어가 필요합니다.

이것도 이름이 위험합니다. 팀들은 종종 “기업 빌드”라고 말하지만 실제로는 여러 가지 다른 것을 의미합니다:

  • privately 서명된 내부 앱
  • 스토어에 배포된 앱에 내부 전용 접근 제어를 사용합니다.
  • 고객 전용 브랜딩된 아티팩트
  • 제품 출시 전 검토를 위한 스테이크 홀더 대상으로 출시候補

운영 모델이 다르니 pipeline과 이름을 분리해 둬.

운영

운영 빌드는 사용자에게 공개된 채널(App Store, Play Store 등)에 배포된다.

이제 빌드는 재미없어야 한다. 그게 칭찬이다.

운영 빌드는 재현 가능해야 하며, 올바르게 서명되어야 하며, 릴리즈 조건에서 테스트되어야 하며, 롤백 계획과 연결되어야 한다. 마지막 순간의 수동 편집, 기계에 특화된 HACK, '다음 빌드에서 고쳐줄게'라는 compromis를 원하지 않는다.

간단하게 요약해 보자.

소프트웨어 빌드 유형과 그 특성

빌드 유형 대상 컨피그레이션 Distribution Method
Local developer 개인 개발자 일반적으로 디버깅, 빠른 반복, 로컬 환경 설정 직접 로컬 머신에서 설치
CI 검증 엔지니어링 팀 반복 가능한 자동 빌드, 공유 체크 CI 아티팩트 저장소
밤이나 카나리 내부 테스터, 선택된 팀원 초기 통합 상태, 제한된 롤아웃 내부 배포 도구
스테이징 또는 베타 QA, 제품, 외부 테스터 일반적으로 릴리즈와 같은 비공개 환경 매핑 테스트 플라이트, 플레이 테스트 트랙, 개인 링크
어드혹 또는 기업 내부 직원, 고객, 제한된 그룹 제어된 구성, 목적지별 서명 개인 배포 채널
제작 공개 사용자 최종 릴리즈 구성, 스토어 준비 서명 App Store 또는 Google Play

위험에 대한 관객의 tolerance에 맞는 build type이 가장 중요합니다. 대부분의 release 오류는 팀이 alignment을 생략했을 때 발생합니다.

Code 인증의 Critical 역할

모바일에서 build file 하나만으로는 의미가 없습니다. 플랫폼은 그것이 신뢰할 수 있는 출처에서 왔으며 생성 후 nobody가 그것을 변경하지 않았는지 증명해야합니다. 그 증명은 __CAPGO_KEEP_0__ 인증입니다. code 인증.

만약 당신이 이전에 컴파일이 완벽했지만 설치, 업로드, 또는 실행이 제대로 되지 않은 build가 있었다면, 인증이 문제였을 것입니다.

컴퓨터 화면에 Python 소스 code가 표시되고 Code 인증 overlay 텍스트가 있습니다.

인증이 실제로 증명하는 것

모바일 팀에게 code 인증은 세 가지 일을 합니다.

  • 인증성: 앱을 개발한 개발자 또는 조직과 연결합니다.
  • 완전성: 이것은 artifact가 서명된 이후에 손상되지 않았는지 증명하는 데 도움이 됩니다.
  • 인증: 특히 Apple 플랫폼에서, 이것은 앱이 실행되도록 허용되는 위치와 방법도 제어합니다.

그것은 개발자가 혼란스럽게 생각하는 세 번째 점입니다. 서명은 단순히 신분만이 아닙니다. 또한 허용도 포함됩니다.

따라서 code와 같은 동일한 앱은 개발자가 장치에서 실행하거나 테스터에게 배포하거나 내부 배포하거나 스토어에 제출하도록 원한다면, 다른 서명 재료가 필요할 수 있습니다.

서명이 목적지에 따라 어떻게 변하는지

이것이 프로세스를 지속적으로 유지하는 정신 모델입니다: 서명은 배포에 따라 진행됩니다..

개발자 설치를 위해 장비에서 실행하는 경우에는 하나의 신분과 허용이 필요합니다. 테스트 플라이트를 통해 배포된 베타 빌드는 다른 신분과 허용이 필요합니다. 내부 배포 경로에는 다시 다른 프로필이 필요할 수 있습니다. 공개 스토어 배포에는 자신의 서명 기대와 검토 가능한 패키징이 필요합니다.

그것이 '빌드를 다시 서명하라'는 작은 요청이 거의 될 수 없는 이유입니다. 서명이 변경되면, artifact의 허용된 목적지도 함께 변경될 수 있습니다.

엄격한 설정은 일반적으로 CI에서 저장된 서명 자산을 포함합니다:

  • Stored signing assets in CI: 개인 노트북이 아닌 곳에.
  • 목적에 따라 명확한 구분: 개발, 사내 테스트, 기업, 스토어 릴리즈.
  • 회전 및 접근 제어: 특히 계약자 또는 여러 제품 팀이 인프라를 공유할 때.
  • 감사성: pipeline이 사용한 signing identity를 알 필요가 있습니다.

팀이 웹 업데이트를 Capacitor 앱 내에 배포한다면, 두 번째 signing layer를 고려해야 합니다. 이 Capacitor 업데이터 __CAPGO_KEEP_1__ signing에 대한 종합적인 보안 개요는 Capacitor 업데이터 code signing에 대한 종합적인 보안 개요는 신뢰할 수 있는 native 바이너리와 업데이트 패키지 신뢰를 분리하는 것이 유용합니다.

신호 문제는 일반적으로 암호화에서 오지 않습니다. unclear ownership, manual handling, 그리고 pipeline이 적용된 identity를 숨기는 것이 문제입니다.

신호 재료를 프로덕션 인프라와 다루듯이 다루세요. 그게 사실입니다.

CI/CD와 업데이트 채널을 이용한 릴리스 조정

팀이 성숙할 때, 빌드의 종류를 알기 위한 문제는 아니다. 그것은 인간의 추측 없이 그들을 조정하는 것이다.

그것은 CI/CD에 속한다.

https://capgo.app에서 스크린샷

pipeline은 빌드 계약이다.

신뢰할 수 있는 pipeline은 매번 동일한 질문에 답해야 한다:

  • 이 빌드는 무엇을 위해?
  • 사용하는 맛은?
  • 받는 환경 변수는?
  • 통과해야 하는 테스트는?
  • 적용되는 서명 식별자는?
  • 아티팩트가 어디로 전달되는가?

그 구조는 좋은 기술 사양을 반영합니다. 잘 구성된 사양에는 목적과 범위, 기능 요구 사항, 설계 요구 사항, 기술 표준, 테스트 요구 사항, 배달 요구 사항 및 지원 또는 유지 관리 요구 사항이 포함되어야 합니다., 기술 사양 설명서 에서 설명한 것과 같습니다. 같은 discipline은 CI/CD가 더 쉽게 이해할 수 있게 만듭니다. pipe line은 스크립트의 바구니에서 벗어나 실행 가능한 릴리스 정책이 됩니다.실제로 pipeline은, 엔지니어가 수동으로 실행하는 것이 아닌, pipeline이 결정해야 합니다. branch 규칙, 태그, 승인 단계, 서명 컨텍스트 및 배포 대상이 모두 인코딩되어야 합니다.

작동하는 것:

Branch-Driven Intent:

  • main, release branch 및 태그는 다른 워크플로우를 트리거합니다. Explicit Artifact Naming:
  • 맛, 환경 및 대상은 출력에서 표시됩니다. Promotion 대신 rebuild-by-hand:
  • Promotion instead of rebuild-by-hand: __CAPGO_KEEP_0__

한 번에 여러 플래그를 전달하는 '한 개의 유연한 스크립트' 접근 방식은 모든 사용자가 스토어 또는 테스터가 필요로 하는 것과 일치하는지 여부를 확인하기 위해 사용자 지정 플래그를 전달하는 경우에만 실패한다.

채널은 바이너리 배포 후에 제어를 추가한다.

네이티브 빌드는 여전히 coarse-grained이다. 한 번 배포된 릴리스를 변경하는 웹 콘텐츠는 Capacitor 앱 내에서 항상 새로운 바이너리를 다시 빌드할 필요가 없다.

업데이트 채널은 유용하다. 채널을 통해 팀은 설치된 프로덕션 바이너리 내부의 사용자에게 웹 자산 업데이트를 대상으로 할 수 있다. Capgo 팀에게는 하나의 옵션은 Capacitor Capgo__CAPGO_KEEP_0__은 대상 채널에 서명된 웹 번들을 배포하여 자바스크립트, CSS, 복사본, 구성, 및 자산 변경을 푸시할 수 있는 방법을 제공한다.

실용적인 패턴은 다음과 같다.

  • CI/CD에서 바이너리 빌드: 생성, 서명, 및 배포된 네이티브 앱.
  • 채널 assignments: 사용자 또는 환경을 베타, 스테이징, 프로덕션, 또는 고객 특정 스트림으로 매핑한다.
  • 선택적 배포: 웹 변경 사항을 한 그룹에 먼저 넓은 노출 전에 보내세요.
  • 롤백 경로: 스토어 리뷰를 기다리지 않고 나쁜 업데이트를 비활성화하거나 되돌리세요.

그 모델을 설정하지 않은 경우, __CAPGO_KEEP_0__에서 업데이트 채널을 만들고 삭제하는 walkthrough에 대해 이 안내서를 참조하세요. Capacitor에서 업데이트 채널을 만들고 삭제하는 방법을 구체적으로 설명하는 이 안내서를 참조하세요. 만약에 채널의 동작을 본 적이 없다면, 이 짧은 데모를 참조하세요.

모바일 팀이 필요로 하는 전략적 shift입니다. 빌드 유형은 단순한 artifact가 아닙니다. 빌드 유형은 제어점입니다. CI/CD는 바이너리가 생성되는 방법을 제어합니다. 채널은 설치 후 변경 사항이 노출되는 방법을 제어합니다.

현대 빌드 워크플로의最佳 관행

건전한 빌드 시스템은 의견이 있습니다. 개발자가 릴리스 동작을 임의로 변경할 수 없습니다.

강력한 설정 중에서 가장 강력한 설정은 몇 가지 습관을 공유합니다:

__CAPGO_KEEP_0__

  • 분리된 축을 명확하게: 맛, 환경, 서명 대상 및 배포 대상이 하나의 모호한 레이블에 섞여 있지 않도록 하세요.
  • CI가 팀에 대면하는 artifact를 생성하도록 해주세요: 개발용 빌드는 이해 당사자에 대한 신뢰를 위한 것이 아닙니다.
  • 릴리즈와 같은 조건에서 테스트하십시오: QA 및 베타 테스터는 실제 앱과 가능한 한 가깝게 동작하는 것을 볼 수 있어야 합니다.
  • 서명 자산을 노트북에서 분리하세요: 비밀은 제어된 인프라에 narrow 접근이 있는 곳에 속해야 합니다.
  • 인간이 읽을 수 있는 artifact 이름을 사용하세요: 파일이 어떤 용도로 사용되는지 몇 초 안에 식별할 수 없다면 이름이 나쁘다.
  • 승진보다는 재생을 선호하세요: artifact가 유효화되면 workflow를 통해 이동시키는 것이 재생을 수동으로 다시 빌드하는 것보다 낫습니다.
  • 설계 롤백 전: 스토어 롤백은 느리고 운영 비용이 많이 듭니다. 웹层 롤백은 Capacitor 업데이트가 훨씬 빠를 수 있지만, 채널과 정책을 미리 계획해야 합니다.

가장 큰 사고 방식의 변화는 이렇습니다: '어떤 빌드 스크립트를 실행해야 하나?' 라고 물어보지 말고 '이 단계에서 어떤 위험을 관리해야 하나?' 라고 물어보세요. 이 질문은 더 나은 빌드 시스템을 만듭니다.

워크플로가 그 질문에 명확하게 답한다면, 릴리즈 프로세스는 더 쉽게 운영할 수 있고, 감사할 수 있고, 한 명의 고급 엔지니어가 올바른 주문言葉를 기억해야 하는 것에 의존하지 않습니다.


팀이 Capacitor 앱을 배포하고 릴리즈 워크플로에 대한 더 chặt한 제어가 필요하다면 Capgo 릴리즈 워크플로에 대한 더 chặt한 제어가 필요하다면 Capacitor을 평가하는 것이 좋습니다. 이 제품은 웹 자산 내부의 Capacitor 앱에 대한 목표 라이브 업데이트를 처리하고, 서명된 번들을 지원하며, 채널 기반 롤아웃 및 롤백 제어를 제공하여, 더 빠른 수정이 필요할 때 원본 빌드 PIPELINE을 교체하지 않고도 유용합니다.

Capacitor 앱에 대한 즉각적인 업데이트

웹层 버그가 활성화된 상태에서, 앱 스토어 승인까지 며칠 기다리지 않고 Capgo를 통해 버그를 수정하여 배포하세요. 사용자는 배경에서 업데이트를 받으며, 네이티브 변경 사항은 일반적인 검토 경로를 유지합니다.

__CAPGO_KEEP_0__에서 최고의 통찰력을 제공하여 완벽한 전문가 모바일 앱을 만들 수 있도록 도와줍니다.

시작하기

최신 블로그

Capgo 앱에서 2방향 통신을 제공합니다.