본문으로 건너뛰기
CI/CD 지속 통합

금요일 오후 4:47에 개발자가 한 줄의 CSS 수정을 푸시합니다. 변경 사항은 무해해 보이지만 빨간 pipeline 검사 결과는 그렇지 않습니다. 팀은 저녁에 깨진 모바일 빌드를 추적하거나 자동화가 변경이 아직 свеж한 동안 실패를 식별하는 데 의존할 수 있습니다.

CI/CD 지속 통합의 실제 의미는 CI/CD 지속 통합. 개발자들은 작은 변경 사항을 자주 병합하고 자동화 pipeline은 모든 변경 사항을 빌드하고 테스트하고 유효한 artifact는 사용자에게 이동하는 데 수동 영웅주의에 의존하지 않고, CapacitorJS 앱의 동일한 모델은 JavaScript, 네이티브 iOS 및 Android 프로젝트, 서명 자격 증명, 스토어 워크플로우 및 장치 동작을 고려해야 합니다.

목차

CI/CD, 연속 통합이 실제로 의미하는 바는 무엇인가?

연속 통합 개발자들이 공유하는 Git 저장소에 작업을 정기적으로 합치면 연속 통합이 됩니다. 각 푸시 또는 pull 요청은 자동화된 검증을 시작하며, 일반적으로 의존성 설치, linting, 단위 테스트, 빌드가 포함됩니다. 목적은 애플리케이션이 버그가 없는지 증명하는 것이 아닙니다. 애플리케이션의 깨진 가정들을 찾는 것입니다. 변경이 여전히 이해하기 쉬운 상태에서.

CapacitorJS 프로젝트의 경우, 검증은 npm ci, 웹 테스트와 프로덕션 빌드가 끝난 후 pipeline이 실행됩니다. npx cap sync 연속 제공

검증 과정을 넘어서 연속 제공은 pipeline이 버전화된 아티팩트를 생성하고 출시를 위해 준비합니다. 사람의 승인이 필요할 수 있습니다. 특히 팀이 규정 검토, 스토어 조정, 또는 제어된 출시 시간이 필요할 때입니다. 연속 배포

승인 단계를 제거합니다. 정의된 검증을 통과한 모든 변경이 자동으로 출시됩니다. 이 모델은 테스트, 자격 증명, 롤아웃 제어, 모니터링, 롤백 절차가 신뢰할 수 있는 수준으로 오류를 흡수할 수 있는 경우에만 작동합니다. CI/CD

모바일 개발은 배포 문제를 더 복잡하게 만듭니다. 웹 배포에는 하나의 런타임 목표가 있지만 Capacitor 앱은 iOS 아카이브, Android 앱 번들, 인증서, 프로비전 프로파일, 스토어 메타데이터 및 물리적 장치 간의 호환성 검사 등이 필요할 수 있습니다. Capgo의 지속적 통합의 이점에 대한 안내서.

실용적인 규칙: CI는 나쁜 변경 사항을 빠르게 표시해야 합니다. CD는 좋은 변경 사항을 반복할 수 있도록 해야 합니다.

pipeline은 엔지니어링 판단을 대체하지 않습니다. 반복 가능한 작업을 사람들의 손에서 빼내고, 무슨 일이 일어났는지 기록하고, 커밋부터 릴리즈까지 일관된 경로를 제공합니다.

CI/CD pipeline의 5대 요소

pipeline은 시퀀스에 대한 책임을 다루기보다는 단일 YAML 파일로 다루면 설계하기가 더 어렵습니다. 각 블록은 다른 질문에 답합니다.

1. 트리거

트리거는 문구입니다. A git push 는 특징 branch에서 빠른 체크를 시작할 수 있으면서 pull request는 병합 게이트를 실행할 수 있습니다. 태그 또는 릴리즈 이벤트는 패키징을 시작하고, 일정은 보다 광범위한 장치 검사를 실행할 수 있습니다.

위험에 따라 트리거를 선택하십시오. pull request는 병합되기 전에 빠른 feedback가 필요합니다. A main push는 배포 가능한 artifact를 빌드할 수 있습니다. 릴리즈 태그는 의도적인 배송 이벤트를 나타내야 하며, 부작용이 아닌 branch 업데이트가 아닙니다.

1. 빌드

2. 빌드는 소스 code가 다른 시스템에서 소비할 수 있는 것으로 변환되는 кух이다. CapacitorJS 애플리케이션에서, 이 작업은 일반적으로 lockfile 정의된 의존성을 설치하고, 웹 빌드를 실행하고, 플랫폼 도구를 실행한다. npx cap syncThe iOS 경로는 macOS 실행자를 통해 호출할 수 있다. Android 경로는 Gradle을 사용하여 HTML을 생성한다.

The Android 경로는 Gradle을 사용하여 HTML을 생성한다. xcodebuild 또는 .aab or .apk. 빌드가 깨끗한 체크아웃에서 재현되지 못한다면 pipeline은 누군가의 로컬 머신에 의존하는 것을 숨기고 있다.

3. 테스트

테스트는 건강 검사관과 같은 역할을 한다. 단위 테스트는孤立된 자바스크립트 또는 타입스크립트 동작을 검사한다. 통합 테스트는 저장소, 네비게이션, API 클라이언트와 같은 경계를 검사한다. 장치 또는 에뮬레이터 검사는 네이티브 플러그인, 권한, 깊이 링크, 라이프 사이클 동작을 검사한다.

테스트 영향 분석은 이 단계를 실용적으로 유지할 수 있다. 2021년 실증 연구에서 매일 커밋은 종종 3에서 28개의 파일만 변경되었지만 의존성 관계는 약 20개의 파일을 변경했다. 3에서 28파일 50% 이상의 테스트 케이스 중연구에서 50% 이상의 20% 시간 절약 시스템 중 가장 효율이 낮은 시스템에서 20% 50% 중간 절약 시스템을 선택할 때, 연속 테스트 연구.

4. 패키지

패키징은 배송 상자입니다. pipeline은 버전을 assign하고, metadata를 collect하고, artifact를 signed하고, 결과를 저장합니다. iOS는 IPA를 produce할 수 있고, Android는 Play Console에 AAB를 produce할 수 있습니다.

5. 배포

배포는 배송 트럭입니다. iOS 빌드를 TestFlight에 업로드할 수 있고, Android 버전을 내부 Play 트랙에 전송할 수 있고, 웹 버전을 제어된 Live Update 채널에 배포할 수 있습니다. 배포 자동화는 패키지가 신뢰할 수 있고, 목적지가 명확할 때만 도움이 됩니다. 배포 자동화 지침 Capacitor 프로젝트 CI/CD pipeline에 대한 유용한 참고 자료를 제공합니다.

CI/CD pipeline의 5가지 필수 구성 요소인 소스, 빌드, 테스트, 배포, 모니터링을 보여주는 다이어그램입니다.

트리거가 없으면 변경 사항이 수동 액션을 기다리게 되며, 테스트가 없으면 자동화가 더 빠르게 회귀를 제공할 수 있습니다. 패키징이 없으면 제어된 아티팩트를 승진시키지 못합니다. 배포 제어가 없으면 성공적인 빌드는 사람의 약한 단계를 반복하는 것을 의존합니다.

CI/CD pipeline의 지속적인 배포와 지속적인 배포

CI/CD pipeline의 차이점은 승인 경계가 하나 더 있지만, 그 경계는 조직의 위험 프로파일을 변경합니다.

With CI/CD pipeline이 빌드, 테스트, 패키징, 릴리스 준비를 수행합니다. 사람의 승인이 프로덕션 액션을 허용합니다. 규제된 금융 기술 팀은 자동으로 스테이징으로 모든 승인된 커밋을 보내고, 앱 스토어 또는 플레이 스토어 제출을 승인하기 위해 릴리스 매니저에게 승인을 요청할 수 있습니다.CI/CD pipeline의 지속적인 배포

With CI/CD pipeline이 정책이 통과하면 자동으로 최종 릴리스를 수행합니다. 소비자 앱에 강력한 자동화된 체크가 있는 경우 JavaScript 번들을 제한된 대상에게 릴리스하고, 건강 신호가 유지되는 경우 롤아웃을 확장할 수 있습니다.Dimension

Dimension 지속적 배포 지속적 배포
릴리즈 결정 context 자동화는 정책으로부터 릴리즈 결정을 합니다.
Speed 정책에 따라 릴리즈 결정이 자동화된다 속도
context 승인은 명확한 검토 기록을 제공합니다. 빠르지만 명시적인 제어점이 있다
모든 전제 조건이 자동화될 때 가장 빠르다. A 리뷰어는 의심스러운 릴리스를 중단할 수 있습니다 진행 중인 롤아웃 및 롤백 제어는 더 많은 가중치를 지닙니다
최적 위험성이 높은 모바일 릴리스 강력한 테스트, 관찰성 및 복구 절차를 갖춘 팀

CapacitorJS 팀은 모든 네이티브 스토어 릴리스에 서명이 필요한 규제 그룹이 있을 때 일반적으로 배달을 선호합니다. PIPELINE은 IPA 및 AAB를 생성하고 적절한 검토 목적지로 전송하고 승인待ち 상태로 대기할 수 있습니다. 승인된 자바스크립트 및 CSS 변경 사항은 조직 정책이 허용하는 경우 별도의 라이브 업데이트 프로세스를 따를 수 있습니다.

경미한 웹层 변경에 대한 배포를 선택하는 비디오 게임 팀은 종종 네이티브 릴리스에 대해 배달을 선택합니다. 이 분리는 모든 아티팩트에 대해 하나의 정책을 강요하는 것보다 더 현실적입니다.

속도는 키 트레이드 오프가 아닙니다. 배달은 명시적인 인간 책임을 선호합니다, 배포는 테스트된 시스템의 일관된 결정을 내릴 수 있는 능력을 선호합니다.

CapacitorJS 모바일 앱의 실제 CI/CD PIPELINE

A useful GitHub Actions workflow makes the repository’s delivery map visible. The exact action versions and signing setup will vary, but the sequence should remain understandable.

새로운 저장소에서 시작하세요

푸시 main CI/CD는 워크플로우를 트리거할 수 있습니다. 첫 번째 작업은 커밋을 체크아웃하고 필요한 Node.js 버전을 선택합니다. npm ci 해당 버전의 Node.js를 선택한 후에

CI/CD(지속적 통합/지속적 전달) 과정에서 웹 검증 단계는 다음과 같은 명령어를 실행할 수 있습니다.

  • Lint: The web validation stage can then run commands such as:
  • 단위 테스트: Lint:
  • 웹 빌드: 생산 버블을 Capacitor가 패키징할 것입니다.
  • Capacitor 동기화: 실행 npx cap sync 생산 버블을 __CAPGO_KEEP_0__가 패키징할 것입니다.
  • so native 프로젝트는 웹 자산과 플러그인 변경을 받습니다. Capacitor 설정에서 기대하는 앱 식별자, 플랫폼 설정 및 환경 변수가 포함되어 있는지 확인합니다.

__CAPGO_KEEP_0__ 구성이 기대되는 앱 식별자, 플랫폼 설정 및 환경 값이 포함되어 있는지 확인합니다. package.json 프로젝트 명령어를 제어합니다. Capacitor의 설정은 동기화 동작을 제어합니다. 이러한 책임을 분리하면 오류를 진단하는 것이 더 쉬워집니다. Capgo 구성은 동기화 동작을 제어합니다. 이러한 책임을 분리하면 오류를 진단하기가 더 쉬워집니다. __CAPGO_KEEP_0__ 지속적인 통합 설정 가이드

자연적인 빌드

설계 xcodebuild 또는 Fastlane. 설정을 사용하는 fastlane match 인증서 및 빌드 프로세스 간의 관계를 관리할 수 있지만, 저장소에는 개인 인증서나 프로파일이 포함되지 않아야 합니다.

Android는 Linux 또는 macOS 실행자에서 실행할 수 있습니다. 작업은 Gradle을 호출하며, 명령어로 다음과 같이 호출할 수 있습니다. ./gradlew bundleRelease, 그리고 CI 비밀을 암호화하여 참조한 키스토어로 AAB를 암호화합니다.

CapacitorJS 모바일 앱 CI/CD PIPELINE의 개발부터 배포까지의 단계를 보여주는 종합 다이어그램입니다.

파일을 의도적으로 저장합니다.

워크플로우는 IPA 및 AAB를 이름이 지정된 파일로 업로드해야 하며, 이 파일은 커밋 또는 릴리스 식별자와 연결되어야 합니다. 나중에 작업은 정확히 같은 파일을 TestFlight 또는 내부 트랙의 Play Console에 제출해야 합니다. 이 분리된 파일은 검토자가 테스트한 파일과 다를 수 있으므로, 승인 후 재빌드가 생성하는 파일과 다를 수 있습니다.

매트릭스 전략은 iOS 및 Android 경로를 동시에 실행할 수 있습니다. 이 방법은 대기 시간을 줄이고 플랫폼별 오류를 혼합하지 않습니다. 또한, 웹 빌드가 성공했지만 Android 인증이 실패한 경우, 워크플로우는 이 차이를 명확하게 보여주어야 합니다.

비밀은 CI 제공자의 암호화된 비밀 저장소에 속해야 합니다. 작업은 필요한 최소한의 기간 동안만 자격 증명을 받해야 합니다. 로그는 실패한 빌드 중 명령줄 도구가 구성 출력을 프린트하는 경우에 의도치 않은 비밀 출력을 확인해야 합니다.

Adding Live Updates to Your CI/CD Flow With Capgo

디자이너는 금요일 오후 온보딩 텍스트를 변경합니다. 변경 사항은 자바스크립트와 CSS를 대상으로 하며, 네이티브 스위프트, 코틀린, 또는 Capacitor 플러그인을 대상으로 하지 않습니다. 개발자는 이를 커밋하고 pull 요청을 열어 웹 번들을 검증하는 일반적인 체크를 허용합니다.

그 후 npm ci, 웹 빌드, 테스트, npx cap sync 성공하면, 배포 작업이 선택한 Capgo 채널에 결과 웹 자산을 게시할 수 있습니다. 채널은 스테이징, 프로덕션, 베타 사용자, 또는 다른 제어된 그룹을 나타낼 수 있습니다. 사용자는 앱의 업데이트 메커니즘을 통해 번들을 받을 수 있으며, 새로운 스토어 바이너리를 기다리지 않습니다.

https://capgo.app/docs/img/dashboard.webp에서 스크린샷

중요한 경계는 네이티브 code입니다. 자바스크립트, CSS, 텍스트, 또는 호환되는 구성 변경은 라이브 업데이트 경로를 따를 수 있습니다. 네이티브 플러그인, 권한, 특권, 또는 플랫폼 code 변경은 새로운 iOS 또는 Android 바이너리와 관련된 스토어 프로세스가 필요합니다.

채널을 배포 제어로 다루세요

스테이징 채널은 팀이 프로덕션 승인 전에 제어된 аудiences와 번들을 검증할 수 있도록합니다. 버전 핌핑은 알려진 앱 버전을 호환되는 번들과 유지하면서 새로운 네이티브 바이너리가 다른 배포 경로를 사용하는 것을 방지합니다. 이 분리는 네이티브 런타임이 이해하지 못하는 웹 code를 보내는 것을 방지합니다.

A rollback should restore a known-good bundle, not require a developer to reconstruct the previous build manually. The operational value comes from connecting publication, version history, audience targeting, and delivery status to the same release process.

발행을 검증 후에 발행하십시오.

CI/CD pipeline의 Capgo CLI 단계는 일반적인 웹 빌드와 검사 후에 수행되어야 합니다. 인증은 CI secret 또는 보호된 환경 변수를 사용해야 하며, 프로덕션 발행은 branch, tag 또는 승인 정책에 의한 의도적인 릴리스를 나타내는 것에 제한되어야 합니다.

The Capgo GitHub Actions 통합 가이드 는 발행 단계가 자동화된 워크플로우에 어떻게 포함될 수 있는지 보여줍니다. 더 넓은 원칙은 제공자에 관계없이 적용됩니다: 빌드 한 번, artifact를 검증하고, 이름이 지정된 환경으로 발행하고, 사용자가 받은 것을 정확하게 식별할 수 있는 충분한 메타데이터를 유지하는 것입니다.

팀에게는 두 개의 연결된 레인드가 생성됩니다. 스토어 레인은 네이티브 기능을 분배합니다. 라이브 업데이트 레인은 승인된 웹 레이어 변경을 분배합니다. 레인드를 분리하는 것은, 모든 Capacitor 변경을 전체 스토어 릴리스 또는 무제어의 단축키로 다루는 일반적인 오류를 방지합니다.

CI/CD Pipeline에서 현재의 보안 및 인공지능

pipeline 속도는 약한 릴리스 제어가 있는 경우에는 보상되지 않습니다. 모바일 워크플로는 서명 자격 증명, 세 번째 의존성, 네이티브 빌드 도구 및 code를 사용자 기기에 도달하는 것을 처리합니다. 보안은 linting 및 테스트와 같은 자동화된 경로 내에 포함되어야 합니다.

CI/CD를 위한 지속적인 통합 npm audit 또는 Snyk와의 의존성 확인, gitleaks를 사용한 비밀 감지, SBOM 생성, 서명된 네이티브 아티팩트, 제한된 CI 권한, 보호된 운영 환경과 같은 유용한 제어를 포함합니다. Live-update 패키지도 서명 확인 및 채널 제어가 필요하며, 유효한 애플리케이션은 훼손되거나 호환되지 않은 콘텐츠를 거부할 수 있습니다.

2026년 GitHub 액션에 대한 연구에서 5개의 권장 보안 조치의 평균 구현률이 약 17.5%로 340,000개의 공개 저장소에서만 102명의 개발자에 대한 설문조사에서의식 부족과 운영 부담이 주요 장애물로 보고된 CircleCI 보안 결과에 따르면, Awareness와 Operational Burden 유용한 AI와 pipe line 시연을 분리하십시오 AI는 로그 요약, 반복되는 불안정한 테스트 실패 그룹화, 릴리스 노트 작성, 유의미한 구성 오류 제안을 도와줍니다. 사용자는 결정에 책임을 지고 출력을 쉽게 확인할 수 있습니다.

2026년 산업 조사에서 73%의 조직이 pipe line에 AI를 사용하지 않았다고 보고했습니다.

while

while whilewhile 60% 비사용자들의 의견은 불분명한 가치나 사용 사례에 대한 의견입니다. 36% 생성된 결과에 대한 신뢰를 잃었으며 33% 개인 정보 보호에 대한 우려를 언급한 팀 시티의 조사 보고서.

실천 적용률 숙련도
권장하는 GitHub 액션 보안 조치 17.5% 평균 지식과 운영 간격
CI/CD pipe라인에서 AI 27%의 채택73%의 사용자가 사용하지 않는다고 보고한 바에 따라 선택적 실험
AI의 가치 명확성 73%의 사용자가 사용하지 않는다고 보고한 바에 따라 60%는 불분명한 사용 사례 또는 가치
평가 문제 생성된 결과에 대한 신뢰 36%는 신뢰하지 않는다

인간의 검토가 중요합니다 Pipeline 보안 지침을 위한 Capacitor 앱 __CAPGO_KEEP_0__ 앱의 PIPELINE 보안 지침

모바일 관련 위험을 중심으로 제어를 둘 수 있도록 도와줍니다.

A 성숙한 pipeline은 가장 많은 작업을 가진 것이 아니라, 각 릴리스 경계마다 팀에게 신뢰할 수 있는 증거를 제공하는 것이다.

워크플로를 확인하라, YAML을 확인하지 마라.

이 점검을 통해 운영하는 시스템을 평가하라.

  1. 트리거 구성: 모든 pull request 및 관련된 push는 예상되는 워크플로를 시작한다. 신호는 커밋에 첨부된 가시적인 실행이 아니라, 문서화된 의도이다.
  2. 자동화된 테스트가 머지에 대한 게이트를 차단한다: lint 및 단위 테스트는 머지 전에 통과해야 한다. GitHub에서, 필수 상태 확인은 작업이 실패할 때 머지를 방지해야 한다.
  3. 서명된 아티팩트가 저장된다: 워크플로가 서명된 IPA 및 AAB 파일을 생성하고, 식별 가능한 빌드 메타데이터와 함께 보존한다. 후속 릴리스는 저장된 아티팩트를 사용하여 다시 빌드하지 말라.
  4. 분리된 환경: 스테이징 및 프로덕션은 별도의 자격증명, 채널, 승인 규칙을 사용한다. 스테이징 배포는 의도치 않게 프로덕션으로 배포하지 못해야 한다.
  5. 자동화된 배포 경로: pipeline은 승인된 artifact를 기대하는 목적지로 보내기 위해 someone이 파일을 기계 사이에 복사하지 않아도 됩니다.
  6. 롤백 준비: 팀은 이전의 네이티브 또는 웹 레이어 버전을 문서화된 작업을 통해 복원할 수 있습니다. 단, 롤백 절차가 단 한 명의 엔지니어의 노트에만 존재하는 경우에는 운영 준비가 되지 않은 것입니다.
  7. 모니터링 및 경보: 팀은 pipeline 지속 시간, 실패한 실행, 배포 결과 및 애플리케이션 상태를 추적합니다. 성공적인 작업은 사용자가 업데이트를 받았는지 또는 이를 tolerate했는지 증명하지 않습니다.

CI/CD 설정을 위한 7단계 성숙도 체크리스트, 소프트웨어 개발 및 자동화의 최선의 관행을 상세히 설명합니다.

가장 고통스러운 결핍을 먼저 고치세요.

체크리스트를 연장된 플랫폼 프로젝트로 만들지 마십시오. 가장 자주 고통스러운 결핍을 차단하는 능력을 선택하고, 그 능력을 한 스프린트 내에 고치고, 체크리스트를 다시 실행하세요.

개발자들이 수동 빌드를 기다리게 되면 빌드를 자동화하십시오. 병합이 실패하는 이유는 테스트가 너무 늦게 실행되는 때문이면 테스트를 필수적으로 하십시오. 나쁜 자바스크립트 릴리스로 인해 스토어 제출이 강제되는 경우, 제품 및 규정 정책이 허용하는 경우에만 live-update 경로를 문서화하고 보호하십시오.

senior 엔지니어의 규칙: pipeline은 운영 중에 발생하는 사고 시 다른 엔지니어가 안전하게 운영할 수 있는 상태가 되면 성숙한 것으로 간주합니다.

그것은 표준이 약한 지점을 빠르게 드러내는 것입니다. 녹색 체크가 의미하는 바는 팀이 그것이 검증한 것을 알고, artifact가 어디로 가고, 사용자가 그것을 받았는지, 그리고 출시가 잘못되면 어떻게 복구할 수 있는지 알 때에만 중요합니다.


Capgo는 CapacitorJS CI/CD 워크플로를 제어된 라이브 업데이트로 연결하고, 서명된 웹 번들, 채널, 버전 기록, 그리고 롤백 지원을 제공합니다. Capgo를 방문하여 Capgo GitHub와 함께 있는 기존 액션, 저장소, 및 릴리스 프로세스를 함께 사용할 수 있는 방법을 보려면

Capacitor 앱에 대한 즉시 업데이트

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

웹层 버그가 라이브일 때, 앱 스토어 승인 대기 없이 __CAPGO_KEEP_0__를 통해 픽스를 배포하세요. 사용자는 배경에서 업데이트를 받으며 네이티브 변경은 일반적인 검토 경로에 남아 있습니다.

페이지/영역: Capgo 마케팅 웹사이트. 역할: 지원 설명 문단 또는 메타 설명 문단. 보는 곳: 컴포넌트 GetStarted.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하세요. 메시지 키 `instant_updates_for_capacitor_apps_description` (Capacitor 앱에 대한 즉시 업데이트 설명)

마틴의 인간 지원

Capgo은 전문적인 모바일 앱을 만들기 위해 꼭 필요한 모든 통찰력을 제공합니다.