본문으로 바로가기
Case Study

Rapido Cloud에서 Capgo CapacitorUpdater를 사용하여 의미론적 릴리스 관리하는 방법

이 글에서는 Capgo CapacitorUpdater를 사용하는 애플리케이션의 릴리스를 관리하기 위해 의미론적 릴리스를 설정하는 방법을 설명합니다.

류퍼트 바로

류퍼트 바로

컨텐츠 마케터

How Rapido Cloud manage Semantic Release with Capgo CapacitorUpdater

Rapido Cloud에서 __CAPGO_KEEP_0__ CapacitorUpdater를 사용하여 의미론적 릴리스 관리하는 방법

1. 소개Rapido Cloud(), I am developing a mobile application for Salesforce clients to easily deploy their own branded mobile application without having to go through the difficult loops of using the Salesforce Mobile SDK or the Salesforce Mobile Publisher.

이러한 모바일 앱은 현대적인 '표준' 플랫폼에 널리 사용되는 컴포넌트와 도구를 사용하여 Ionic 8, Angular 18, TypeScript, Capacitor 및 현재 Capgo CapacitorUpdater를 개발했습니다. 이러한 것은 Salesforce 플랫폼의 Lightning Web Components와 같은 특정한 관리를 원하지 않는 클라이언트에게 더 간단하게 관리되며, Ionic + Angular 모바일 앱의 개발자와 유지관리자 채용 및 유지보수에 더 쉽고 저렴하게 мене에게 도움이 됩니다.

이 기사에서는 Capgo와 관련된 내 설계, 선택 및 구현을 설명합니다. semantic-release 자동화된 모든 배포를 관리하기 위한 Github Actions의 Github의 성공적인 방법입니다. 이 모든 것이 Capgo CapacitorUpdater의 14일 무료试用 기간 동안 설계, 테스트 및 문서화되었습니다.

2. Capgo를 사용하는 이유는 무엇입니까? Capgo semantic-release를 사용하는 이유는 무엇입니까?

Capgo CapacitorUpdater는 앱 배포를 더 간단하고 빠르게 만들 수 있는 약속으로 나를 끌어들였습니다. 앱 스토어(Apple AppStore/Google PlayStore) 배포 프로세스를 통해 앱을 배포하는 것보다 더 빠르고 유연하게 앱을 배포할 수 있었습니다.

이것이 나의 첫 번째 모바일 앱입니다. 이전에는 웹 앱에 집중했으며 Salesforce Experience Cloud에서 개발했습니다. 배포를 위해 앱 스토어에 푸시하는 것은 처음이었는데, 배포를 더 빠르게 하기 위해 Capgo CapacitorUpdater를 사용했습니다.

My first requirement and test case was to deploy for myself to test my app as a real mobile app on my own phone, instead of testing in a mobile emulator or in a simulator via the Nexus mobile browser suggested by IIonic. That’s because my app uses native features such as Geolocation or accessing the Photo Gallery and Camera. Not having the past experience of testing a Capacitor mobile app, I wasn’t sure if everything was going to work properly : nothing better than to test the real app, in real conditions !

So Capgo CapacitorUpdater helped me update my application on my mobile, live, 1 minute after saving a new feature or fix in my source code : so relieving, and so flexible, and easy to set up !

3. 내 브랜칭 및 릴리즈 모델, 그리고 semantic-release의 위치

이제 나의 배포를 Capgo 서버에 올리는데 성공했으니, 이 과정을 자동화하고 CI/CD pipeline에 통합해야 합니다.

이것은 제가 Capgo와 Capacitor Updater를 사용하여 의미 릴리스를 관리하는 방법입니다.

모바일, 웹 또는 Salesforce 애플리케이션 모두에 대해

  • 개발 __CAPGO_KEEP_0__은 Capgo Capacitor Updater에서 수행됩니다. feature/... branch(es) off main그리고 그들은 통합됩니다. main 개발 Branch의 대부분은 유지보수 및 특정 기능 이외에 이 참조를 사용합니다.
  • 배포는 트리거링됩니다. Capgo를 사용하여 Capacitor Updater와 함께 semantic release를 관리하는 방법 릴리스 branch에서 production릴리스 branch가 될 수 있습니다 :alpha, beta, nightly, prerelease branch (
  • , etc.) 및 고객 또는 컨텍스트에 맞는 branch를 사용하여 커스텀 배포를 위한 배포는 deployment branch로 pull request가 병합될 때 트리거됩니다. 태그 트리거 배포를 사용하지 않습니다. semantic release는 태그와 모든 것을 관리하기 때문에.

이것은 Gitlab Flow의 기본입니다 :

Gitlab Flow

Gitlab Flow - source https://faun.dev/c/stories/manuelherrera/git-branching-strategies-in-2022

semantic-release의 동작에 대한 한 가지 주의사항 :

배포 branch에서 semantic-release가 트리거될 때, semantic-release는 branch의 이전 태그의 버전 번호와 배포된修정 또는 기능에 따라 branch에서 자동으로 새로운 버전 번호를 계산합니다.修정은 새로운 패치 버전을 만들며, 기능은 새로운 마이너 버전을 만듭니다. 또한 prerelease를 자동으로 포함합니다. alpha, beta버전 번호에 등호 기호 등이 포함되어 있습니다.

Semantic release는 커밋에서 변경 로그를 생성하고, conventional commits ( conventionalcommits.org/en/about 참조)에서 정의된修정 및 기능을 그룹화합니다. semantic release에서 구성됩니다. https://www.conventionalcommits.org/en/about또한, __CAPGO_KEEP_0__ (내 경우에는 git)에서 병합된 pull request 및 관련 이슈를 업데이트하고, 태그 및 릴리즈에 대한 링크를 포함하는 댓글을 달 것입니다. 마지막으로, 이 __CAPGO_KEEP_1__ 릴리즈에서는 소스 __CAPGO_KEEP_2__, 바이너리 등이 포함될 수 있습니다.

It will also update all your git (Github, in my case) merged pull requests and related issues with comments linking them to the tag and release. Finally, in this Github release, it will attach assets such as source code, binaries if necessary, CHANGELOG.md4. semantic release 및 __CAPGO_KEEP_0__에서 branch, release/prerelease, channel에 대한 설명

따라서, Capgo 배포에 대해 semantic release가 수행해야 하는 작업은 다음과 같습니다.

So what I want semantic release to do for Capgo deployments is the following.

__CAPGO_KEEP_0__는 conventional commits의 버전을 개발하고 문서화했습니다.

Capgo.com/Cap-go/standard-version (forked repo) standard-version https://__CAPGO_KEEP_0__.com/Cap-go/standard-version standard-version (https://github.com/Cap-go/standard-version), 그리고 그들의 capacitor-standard-version (https://github.com/Cap-go/capacitor-standard-version)도 capacitor-plugin-standard-version (https://github.com/Cap-go/capacitor-plugin-standard-version) 리포지토리도 있습니다. 그들은 블로그에 Capgo의 배포에서 사용하는 버전 체계에 대해 문서화했습니다 (https://capgo.app/blog/how-version-work-in-capgo/) 자바스크립트 번들은 'Semantic Versioning' ('https://semver.org')을 따릅니다. 이것도obviously! semantic-release 그것은 나에게 큰 도움이 되었습니다.

나는 그것을 semantic-release extensively.

Capgo를 사용하여 Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capgo를 사용하여 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는 중입니다. Capacitor Updater와 함께 의미있는 릴리스를 관리하는 방법에 대해 블로그 글을 작성하는

위 버전을 배포해야 하는 branch 들이 있습니다. alpha, beta, nightly etc., 그러나 고객별 버전도 branch 형태로 관리할 수 있습니다. production-customer-jones, production-customer-doeCapacitor Updater를 사용하여 Semantic Release를 관리하는 방법

Capgo은 "채널" 기능을 제공하는데, 이 기능은 semantic release도 지원하는 기능이기 때문에 두 기능을 함께 사용할 수 있는 것을 알게되어 매우 기대가 됩니다. 이 기능은 또한 XCode Cloud가 관리하는 다양한 branch 빌드와도 잘 맞습니다.

Semantic release에서 prerelease에서 생성한 Semver 버전 번호는 다음 형식으로 보입니다: __CAPGO_KEEP_0__ 1.0.0-alpha.1이 branch의 연속적인 빌드는 빌드 번호를 증가시킵니다. 1.0.0-alpha.2, etc. Although not explicitly documented, 이 버전 번호들은 Capgo에 의해 지원됩니다. 이는 나에게 좋은 소식입니다 : 나는 semantic release 채널과 prerelease를 사용하여 Capgo 채널을 가진 앱의 버전을 생성할 것입니다.

5. 내 애플리케이션을 릴리스하기 위해 Capgo을 어떻게 사용할 수 있나요?

애플리케이션 번들을 Capgo로 자동 배포하기 위해서는 Capgo CLI 명령어를 사용해야 합니다. bundle upload. 타입 npx @capgo/cli@latest bundle upload --help 다양한 업로드 옵션을 얻기 위해. 그 중에서 사용할 옵션은 다음과 같습니다.

npx @capgo/cli bundle upload --channel $CHANNEL --apikey $CAPGO_APIKEY --bundle $VERSION --bundle-url $CAPGO_APPID
  • CHANNEL은 Capgo에 배포하고 싶은 채널입니다 (예) alpha)
  • VERSION은 semantic release가 생성한 버전입니다 (예) 1.0.0-alpha.1)
  • CAPGO_APIKEY는 Capgo에서 제공하는 CI/CD pipeline 로그인을 고유하게 식별하는 키입니다
  • CAPGO_APPID는 Capgo에서 제공하는 애플리케이션을 고유하게 식별하는 키입니다 (예) com.mystartup.mysuperapp)

6. semantic release + Capgo CapacitorUpdate 설정

마지막으로, 이것은 어떻게 모두 연결되는지 궁금하실 겁니다.

Github로 빌드된 semantic release 앱 버전

Github로 빌드된 semantic release 앱 버전

Semantic release automation with Github Actions

semantic release의 매력은 배포 자동화, Github Action 워크플로우의 형태로 매우 간단합니다. 다른 CI/CD 플랫폼에서도 매우 유사하게 보일 것입니다.

# ./github/workflows/release.yml

name: Release

on:
  workflow_dispatch:
  push:
    branches: [alpha, alpha-nocapgo, dev-rupert]    # <--- adapt this

env:
  CAPGO_APPID: com.mystartup.mysuperapp             # <--- adapt this
  CAPGO_APIKEY: ${{ secrets.CAPGO_APIKEY }}

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v6
        with:
          node-version: 24
          cache: "npm"
      - run: npm install
      - run: npx semantic-release
        env:
          DEBUG: true
          GITHUB_TOKEN: ${{ github.token }}

이것은 NodeJS 환경을 설치한 다음 semantic release를 호출합니다.

branch 목록에 있는 모든 머지에 대해 branchessemantic release는 자동 배포를 트리거합니다. 설정 CAPGO_APIKEY repository의 비밀을 설정합니다. 업데이트 CAPGO_APPID 여기.

semantic release의 동작은 설정 파일에서 결정됩니다. 아래는私の 설정입니다. .releaserc.json branches의 설정 (

// .releaserc.json

{
  "branches": [
    {
      "name": "release",
      "channel": "production"
    },
    {
      "name": "alpha",
      "channel": "alpha",
      "prerelease": "alpha"
    },
    {
      "name": "alpha-nocapgo",
      "channel": "alpha",
      "prerelease": "alpha-nocapgo"
    },
    {
      "name": "dev-rupert",
      "channel": "development",
      "prerelease": "development"
    },
    {
      "name": "dev-paul",
      "channel": "development",
      "prerelease": "development"
    }
  ],
  "ci": true,
  "debug": true,
  "dryRun": false,
  "repositoryUrl": "https://github.com/RupertBarrow/mysuperapp",

  "verifyConditions": ["@semantic-release/github"],

  "plugins": [
    [
      "@semantic-release/commit-analyzer",
      {
        "preset": "angular",
        "releaseRules": [
          { "type": "breaking", "release": "major" },
          { "type": "feat", "release": "minor" },
          { "type": "fix", "release": "patch" },
          { "type": "ci", "release": "patch" },
          { "type": "doc", "release": "patch" },
          { "type": "docs", "release": "patch" },
          { "type": "refactor", "scope": "core-*", "release": "minor" },
          { "type": "refactor", "release": "patch" },

          { "scope": "no-release", "release": false }
        ]
      }
    ],

    "@semantic-release/release-notes-generator",

    ["@semantic-release/changelog", { "changelogFile": "CHANGELOG.md" }],

    [
      "@semantic-release/git",
      {
        "assets": ["package.json", "CHANGELOG.md", "ios/App/App.xcodeproj/project.pbxproj"],
        "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
      }
    ],

    ["@semantic-release/github", { "assets": ["CHANGELOG.md"] }],

    [
      "@semantic-release/exec",
      {
        "prepareCmd": "npm run build",
        "publishCmd": "npm add -D @capgo/cli && npx @capgo/cli bundle upload --channel ${branch.channel} --apikey $CAPGO_APIKEY --bundle ${nextRelease.version} --bundle-url $CAPGO_APPID"
      }
    ]
  ]
}
  • branches :
    • branches ), __CAPGO_KEEP_0__ 채널 (name), mapped to the Capgo channel (channel)을 매핑합니다. 예를 들어, 만약 prereleasesemantic release가 생성한 버전 번호는 branch.prerelease = "development"자동 배포를 x.y.z-development.n
    • alphaand alpha-nocapgo branch는 모두 __CAPGO_KEEP_0__에 배포합니다. alpha버전 번호의 prerelease 이름이 다르지만
    • 개발자 branch에 배포합니다. dev-rupert또는 dev-paul branch는 모두 __CAPGO_KEEP_0__에 배포합니다. developmentchannel on Capgo, all with the same development개발자 branch에 배포합니다.
  • verifyConditions : in the first stage of semantic release, it checks that it has the correct access to Github. I hope to add an authentication check for the Capgo CLI here later
  • @semantic-release/commit-analyzer __CAPGO_KEEP_0__에 배포합니다.github에 배포합니다.)
  • @semantic-release/release-notes-generator __CAPGO_KEEP_0__에 배포합니다. CHANGELOG.md
  • @semantic-release/git __CAPGO_KEEP_0__에 배포합니다. __CAPGO_KEEP_1__ __CAPGO_KEEP_2__에 인증 확인을 추가할 예정입니다. __CAPGO_KEEP_0__에 대한 접근 권한이 있는지 확인합니다. __CAPGO_KEEP_0__의 문서를 참조하세요. https://__CAPGO_KEEP_0__.com/semantic-release/semantic-release?tab=readme-ov-file#commit-message-format __CAPGO_KEEP_0__에서 변경 로그 파일을 생성합니다. __CAPGO_KEEP_0__에서 업데이트된 파일을 커밋합니다. __CAPGO_KEEP_0__에서 업데이트된 파일을 커밋합니다.package.json, CHANGELOG.md 그리고 ios/App/App.xcodeproj/project.pbxproj - 안드로이드를 위한 빌드를 하지 않습니다)
  • @semantic-release/github : __CAPGO_KEEP_0__ 릴리스에 파일을 첨부합니다 CHANGELOG.md file to the Github release as an asset
  • @semantic-release/exec) 그리고 __CAPGO_KEEP_0__ 서버에 앱 번들을 효과적으로 빌드 배포합니다 (prepareCmd릴리스 버전 번호를 계산하고 증가시키는 방법, 변경 로그를 생성하는 방법, Capgo 태그 또는 릴리스와 같은 모든 것을 설명하는 데 시간을浪費하지 않습니다. : semantic release가 기본적으로 모든 것을 처리하며 최소한의 설정만 필요합니다.publishCmd)

You will notice that their is no fiddling around with explaining how we want the version number to be calculated and incremented, how we need to generate a changelog, a Github tag or release, etc. : everything is handled by default by semantic release, with minimal configuration.

XCode Cloud와의 통합을 위해 새로운 애플리케이션 바이너리의 버전을 빌드하는 것은 간단합니다 (Google Play에 배포하지 않지만, 그 빌드는 유사합니다) :

XCode Cloud 프로세스를 설정하여 특정 branch에서 변경이 발생할 때 빌드를 수행합니다 (예를 들어)

  • 이 branch에서, XCode Cloud를 사용하여 파일이 업데이트될 때만 빌드를 수행하도록 설정합니다. 이 파일은 semantic release가 생성한 각 버전 후에 업데이트됩니다. production)
  • I set up an XCode Cloud process to build when there is a change on the branch I wish to use for this (eg CHANGELOG.md on this branch, I set XCode Cloud to build only when the
  • 다양한 채널을 위해 배포를 시뮬레이션하기 위해 빌드 트리거를 다른 branch에서 실행할 수 있습니다. XCode Cloud에서 빌드의 각 구성에서 다른 branch에서 빌드하도록 설정한 후, 환경 변수를 수동으로 설정하여 __CAPGO_KEEP_0__의 값을 설정하고, 그 후에, 각 커스터마이즈된 릴리즈 branch에서 배포된 커스터마이즈된 고객 애플리케이션에 대해 다른 AppStore 애플리케이션을 배포할 수 있습니다. branch.channel 설정된 값 releaserc.json XCode Cloud에서 빌드하는 앱 바이너리

Building app binaries on XCode Cloud with Capgo channels

Building app binaries on XCode Cloud with Capgo channels

CapacitorUpdater를 내장된 의미론적 릴리즈 pipeline에 통합할 수 있었던 것에 대해 매우 만족합니다. 14일 무료试用 기간 내에 빠르게 통합할 수 있었고, 결과는 다음과 같습니다.

semantic release는 의미론적 릴리즈가 자동으로 Capgo 서버와 호환되는 버전 번호를 생성합니다.

  • semantic release는 Capgo 애플리케이션 번들을 자동으로 배포하고, __CAPGO_KEEP_1__ 채널도 사용합니다.
  • semantic release automatically deploys Capgo application bundles, also making use of Capgo channels
  • 다음 단계

현재 이 앱의 개발 단계에 있습니다. 테스트를 위해 TestFlight (iOS)에서 빠르게 앱을 제공할 예정입니다. __CAPGO_KEEP_0__의 힘을 고려하여, 테스트를 위해 AppStore에 무료 버전의 앱을 배포할 예정이며, __CAPGO_KEEP_1__으로 정기적으로 업데이트할 예정입니다. 그 후에, AppStore에 또 다른 (유료) 버전의 앱을 배포할 예정이며, __CAPGO_KEEP_2__으로 정기적으로 업데이트할 예정입니다.

I am currently in the development phase of this app. I will quickly make it available to testers through TestFlight (for iOS). Considering the power of Capgo, I will most certainly deploy a free version of the app to the AppStore for tests, which will be updated regularly with Capgo during tests. I will then deploy another (paid) version of the app on the AppStore, under another record, and also update that regularly with Capgo.

I Capgo를 더 나은 빌드 전 검증으로 개선하기를 바랍니다. bundle upload 내 semantic release 구성에 prerequisities를 추가하겠습니다.

내가 Ionic + Angular + Capacitor로 개발된 미래의 모바일 앱에 대해 정리된, 간단하고 reproducible한 semantic release pipeline을 갖게되었습니다.

작성자 - Rupert Barrow

22년 이상 Salesforce에 대한 경험을 보유하고 있습니다. Salesforce의 고객이자 사용자, 파트너이자 통합자, 아키텍트, 개발자, 비즈니스 분석가, 컨설턴트로 경험을 쌓았습니다. 또한 13년간 Altius Services의 COO와 CTO로 Altius Services라는 성공적인 Salesforce SI 파트너를 공동 설립하고 운영했습니다. 그리고 나서 Salesforce 솔로 프레너로서 새로운 모험을 시작했습니다. Rapido Cloud라는 제품을 제공하고 있습니다. LinkedIn에서 나를 찾으실 수 있습니다.

https://linkedin.com/in/rbarrow Rapido Companion의 Salesforce 서비스를 확인하실 수 있습니다..

https://www.rapido-companion.app 그리고 and https://www.rapido.cloud (개발 중입니다.)

Rapido Cloud에서 Capgo CapacitorUpdater를 사용하여 의미론적 릴리스 관리하는 방법

If you are using Rapido Cloud에서 Capgo CapacitorUpdater를 사용하여 의미론적 릴리스 관리하는 방법 __CAPGO_KEEP_0__ Live Updates와 연결하여 Capgo Live Updates for the product workflow in Capgo Live Updates, __CAPGO_KEEP_0__ Live Updates를 사용하여 제품 워크플로우 개요 __CAPGO_KEEP_0__ Live Updates의 구현 세부 사항 기능 업데이트 동작 업데이트 동작의 구현 세부 사항에 대해, 그리고 업데이트 유형 업데이트 유형의 구현 세부 사항에 대해.

Capacitor 앱에 대한 실시간 업데이트

웹-layer 버그가 실시간으로 작동 중일 때는 앱 스토어 승인 대기 없이 Capgo를 통해 수정을 배포하세요. 사용자는 배경에서 업데이트를 받으면서 네이티브 변경 사항은 일반적인 리뷰 경로를 유지합니다.

인간 지원을 위한 전문적인 도움을 받으세요.

시작하기

최신 블로그 소식

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.