메인 콘텐츠로 건너뛰기
CI/CD

자동 Capacitor IOS 빌드와 GitHub 액션을 사용하는 match

5분 이내에 fastlane 및 GitHub 액션을 사용하여 IOS Ionic 앱에 CI/CD PIPELINE을 설정하는 방법 (2022)

Martin Donadieu

Martin Donadieu

콘텐츠 마케터

자동 Capacitor IOS 빌드와 GitHub 액션을 사용하는 match

iOS GitHub 자동 빌드

CI/CD를 위한 Capacitor 앱 설정은 복잡하고 시간이 많이 걸립니다. 알아야 할 사항은 다음과 같습니다.

__CAPGO_KEEP_0__ Build를 사용하는 것을 추천합니다. Capgo 빌드와 Capgo CLI 자연 Capacitor 빌드에 사용됩니다. 이 Fastlane Match 가이드는 기존 GitHub Actions pipeline 유지 관리하는 팀을 위해 유지되지만, 새로운 iOS 빌드는 Capgo CLI를 사용하여 Fastlane, Match 저장소, Xcode 러너, 인증서, 업로드 스크립트 유지 관리를 하지 않도록 하세요.

Capgo Build for CI/CD by Capgo

CI/CD pipeline에서 __CAPGO_KEEP_1__로 signed native iOS 빌드를 실행합니다. Capgo Build __CAPGO_KEEP_0__ 빌드

  • 자연 iOS 빌드를 실행합니다. existing CI/CD pipeline에서 signed 빌드를 실행합니다.:: Capgo 빌드 GitHub 액션, GitLab CI, Jenkins, 또는 로컬 스크립트 후 웹 빌드 npx cap sync.
  • CI 비밀에서 서명: 앱 스토어 연결 키, 인증서, 배포 프로파일, 비밀번호 및 팀 ID를 CI 비밀에서 유지하세요.
  • 로컬 러너 유지 관리가 필요하지 않습니다: Capgo 빌드는 유지 관리되는 애플 빌드 환경을 제공하므로 macOS 러너, Xcode 이미지, Fastlane, 또는 Match 저장소 관리가 필요하지 않습니다.
  • 아티팩트 및 제출: QA에 서명된 아티팩트를 다운로드하거나 Capgo CLI를 통해 릴리스 빌드를 제출하세요.

가격

  • Capgo 빌드 플랜은 $12/월부터 시작됩니다.
  • OTA 업데이트 및 매월 약 15개의 네이티브 빌드가 포함됩니다.
  • 추가 빌드 분량은 분당 크레딧으로 청구됩니다.

Capgo 빌드를 CI/CD에 설정하세요.

설치 가이드

다음과 같은 단계를 수행해야 합니다:

iOS에 대한 지속적인 배포를 위해 Fastlane 및 GitHub 액션을 사용하여 match

사전 조건

이 튜토리얼을 계속하기 전에…

__CAPGO_KEEP_0__ 가격에 관해 중요합니다.

GitHub 가격 액션

https://github.com/features/actions

서비스는 제한에 따라 선택한 기계에 따라 '무료'입니다.
우리는 다음을 사용할 것입니다. macOS 기계, 스크린샷에 보이는 가격과 제한 (튜토리얼 생성 시 가격, 미래에 변경될 수 있음)을 확인할 수 있습니다.

🔴 요구 사항과 가격에 대해 경고된 후, 만약 좋다면, 계속… 하겠습니다.

📣 포스트에서 우리는 iTunes Connect에서 앱을 생성했으며, Apple 생태계의 인증서를 가지고 있다고 가정합니다. Fastlane!으로 모든 것이 복사될 것입니다.

들어가 봅시다 🤿

포스트에서 따르면의 단계

  1. App Store Connect를 사용하는 Fastlane Match API
  2. 요구 사항
  3. App Store Connect API 키를 만드는 방법
  4. App Store Connect API 키를 사용하는 방법
  5. Fastlane 파일 복사
  6. Fastlane match 구성

1. App Store Connect를 사용하는 Fastlane Match API

2021년 2월부터 모든 사용자가 App Store Connect에 로그인하기 위해 2단계 인증 또는 2단계 인증이 필요합니다. Apple ID에 대한 추가 보안层는 계정에 대한 액세스를 제한하여 계정에 대한 액세스를 보장합니다.
From Apple Support

match를 시작하려면 기존 인증서를 취소해야 하지만 걱정하지 마세요. 새로운 인증서를 직접 받을 수 있습니다.

요구 사항

App Store Connect API을 사용하기 위해서는 Fastlane이 API을 사용할 수 있어야 합니다. 세 가지 것을 필요로 합니다. 발급자 ID.

  1. 키 ID.
  2. 키 파일 또는 키 내용.
  3. App Store Connect __CAPGO_KEEP_0__ 키를 생성하는 방법

Creating an App Store Connect API Key

1 — App Store Connect에 로그인하세요.

2 — 사용자 및 액세스 3 — 사용자 및 액세스에서 해당 사용자를 찾고, 권한을 부여하세요..

3 — 사용자 및 액세스에서 해당 사용자를 찾고, 권한을 부여하세요. 4 — App Store Connect에서 키를 생성하세요..

App Store Connect 사용자 접근

3 — 통합 탭을 선택하세요.

App Store Connect API 통합

4 — Generate API 키 또는 (+) 버튼을 클릭하세요.

App Store Connect API 키 생성

5 — 키 이름을 입력하세요. 키 이름은 키 자체의 일부가 아니며, 참고용으로만 사용됩니다.

App Store Connect API 키 이름 설정

6 — 액세스 아래에서 키에 대한 역할을 선택하세요. 키에 적용되는 역할은 팀 내 사용자에 대한 역할과 동일합니다. 자세한 내용은 역할 권한을 참조하세요. 우리는 App manager.

를 추천합니다. 7 — Generate 버튼을 클릭하세요.

어떤 앱에 한정된 접근 권한이 API 키에 부여될 수 없습니다.

__CAPGO_KEEP_0__ 키의 이름, 키 ID, 다운로드 링크 및 기타 정보가 페이지에 나타납니다.

앱 스토어 연결 다운로드 키

__CAPGO_KEEP_0__ 키의 세 가지 필요한 정보를 모두 여기서 가져올 수 있습니다.
<1> 이슈 ID.
<2> 키 ID.
<3> API 키를 다운로드하려면 "API 개인 키 다운로드"를 클릭하세요. 개인 키가 다운로드되지 않은 경우 다운로드 링크만 나타납니다. 애플은 개인 키의 복사본을 유지하지 않습니다. 따라서 개인 키를 한 번만 다운로드할 수 있습니다.

🔴 개인 키를 안전한 곳에 저장하세요. 키를 공유하지 않도록 하며, code 저장소에 키를 저장하거나 code에 키를 포함하지 마세요.

앱 스토어 연결 API 키 사용

API 키 파일(다운로드한 p8 파일), 키 ID, 발급자 ID가 인증을 위한 JWT 토큰을 생성하기 위해 필요합니다. Fastlane의 새로운 액션을 사용하여 이러한 정보를 Fastlane에 입력하는 방법은 여러 가지가 있습니다. app_store_connect_api_keyFastlane 문서에서 다른 방법을 알아보세요. Fastlane 문서. CI 환경에서 가장 쉽게 환경 변수를 설정할 수 있는 방법을 보여주고 싶었습니다.

App Store Connect API 키를 사용하여 Fastlane을 관리할 수 있습니다. 정말 좋습니다!

2. Fastlane 파일 복사

Fastlane은 안드로이드 스튜디오를 사용하여 일반적인 모바일 개발 작업을 자동화하기 위해 만들어진 루비 라이브러리입니다. Fastlane을 사용하면 사용자 정의 '레인'을 구성할 수 있으며, 이 레인에는 '액션'이 포함되어 있습니다. 액션은 일반적으로 안드로이드 스튜디오를 사용하여 수행하는 작업을 수행합니다. Fastlane은 많은 기능을 제공하지만, 이 튜토리얼에서는 핵심 액션만 사용할 것입니다.

프로젝트의 루트 폴더에 Fastlane 폴더를 생성하고 다음 파일을 복사하세요: Fastfile

default_platform(:ios)

DEVELOPER_APP_IDENTIFIER = ENV["DEVELOPER_APP_IDENTIFIER"]
DEVELOPER_APP_ID = ENV["DEVELOPER_APP_ID"]
PROVISIONING_PROFILE_SPECIFIER = ENV["PROVISIONING_PROFILE_SPECIFIER"]
TEMP_KEYCHAIN_USER = ENV["TEMP_KEYCHAIN_USER"]
TEMP_KEYCHAIN_PASSWORD = ENV["TEMP_KEYCHAIN_PASSWORD"]
APPLE_ISSUER_ID = ENV["APPLE_ISSUER_ID"]
APPLE_KEY_ID = ENV["APPLE_KEY_ID"]
APPLE_KEY_CONTENT = ENV["APPLE_KEY_CONTENT"]
GIT_USERNAME = ENV["GIT_USERNAME"]
GIT_TOKEN = ENV["GIT_TOKEN"]

def delete_temp_keychain(name)
  delete_keychain(
    name: name
  ) if File.exist? File.expand_path("~/Library/Keychains/#{name}-db")
end

def create_temp_keychain(name, password)
  create_keychain(
    name: name,
    password: password,
    unlock: false,
    timeout: 0
  )
end

def ensure_temp_keychain(name, password)
  delete_temp_keychain(name)
  create_temp_keychain(name, password)
end

platform :ios do
  lane :build do
    build_app(
      configuration: "Release",
      workspace: "./ios/App/App.xcworkspace",
      scheme: "App",
      export_method: "app-store",
      export_options: {
        provisioningProfiles: { 
            DEVELOPER_APP_ID => "#{PROVISIONING_PROFILE_SPECIFIER}"
        }
      }
    )
  end
  lane :refresh_profiles do
    match(
      type: "development",
      force: true)
    match(
      type: "adhoc",
      force: true)
  end
  desc "Register new device"
  lane :register_new_device do  |options|
      device_name = prompt(text: "Enter the device name: ")
      device_udid = prompt(text: "Enter the device UDID: ")
      device_hash = {}
      device_hash[device_name] = device_udid
      register_devices(
                       devices: device_hash
                       )
    refresh_profiles
  end
  lane :closed_beta do
    keychain_name = TEMP_KEYCHAIN_USER
    keychain_password = TEMP_KEYCHAIN_PASSWORD
    ensure_temp_keychain(keychain_name, keychain_password)

    api_key = app_store_connect_api_key(
      key_id: APPLE_KEY_ID,
      issuer_id: APPLE_ISSUER_ID,
      key_content: APPLE_KEY_CONTENT,            
      duration: 1200,            
      in_house: false
    )

    match(
      type: 'appstore',
      git_basic_authorization: Base64.strict_encode64("#{GIT_USERNAME}:#{GIT_TOKEN}"),
      readonly: true,
      keychain_name: keychain_name,
      keychain_password: keychain_password,
      api_key: api_key
    )

    gym(
      configuration: "Release",
      workspace: "./ios/App/App.xcworkspace",
      scheme: "App",
      export_method: "app-store",
      export_options: {
        provisioningProfiles: { 
            DEVELOPER_APP_ID => "#{PROVISIONING_PROFILE_SPECIFIER}"
        }
      }
    )

    pilot(
      apple_id: "#{DEVELOPER_APP_ID}",
      app_identifier: "#{DEVELOPER_APP_IDENTIFIER}",
      skip_waiting_for_build_processing: true,
      skip_submission: true,
      distribute_external: false,
      notify_external_testers: false,
      ipa: "./App.ipa"
    )

    delete_temp_keychain(keychain_name)
  end
  lane :submit_review do
    version = ''
    Dir.chdir("..") do
      file = File.read("package.json")
      data = JSON.parse(file)
      version = data["version"]
    end
    deliver(
      app_version: version,
      submit_for_review: true,
      automatic_release: true,
      force: true, # Skip HTMl report verification
      skip_metadata: false,
      skip_screenshots: false,
      skip_binary_upload: true
    )
  end
end

Appfile

app_identifier(ENV["DEVELOPER_APP_IDENTIFIER"])
apple_id(ENV["FASTLANE_APPLE_ID"])
itc_team_id(ENV["APP_STORE_CONNECT_TEAM_ID"])
team_id(ENV["DEVELOPER_PORTAL_TEAM_ID"])

Fastlane을 구성하는 방법

Fastlane match iOS 앱의 code 인증서를 관리하는 새로운 방법입니다. Fastlane match는 팀이 iOS 앱의 필요한 인증서와 프로비전 프로파일을 관리하는 것을 쉽게 해줍니다.

새로운 개인 저장소 이름을 생성하세요, 예를 들어, __CAPGO_KEEP_0__ 개인 계정 또는 조직 certificates, for example on your GitHub personal account or organization.

iOS 앱에 대해 Fastlane match를 초기화하세요.

fastlane match init

그 다음 Git Storage 옵션 #1을 선택하세요.

[01:00:00]: fastlane match supports multiple storage modes, please select the one you want to use:1. git2. google_cloud3. s3?

새로 생성된 저장소의 URL을 Assign하세요.

[01:00:00]: Please create a new, private git repository to store the certificates and profiles there[01:00:00]: URL of the Git Repo: <YOUR_CERTIFICATES_REPO_URL>

Fastlane 폴더 내부에 Matchfile이라는 파일이 생성되었습니다. 이 파일은 인증서 저장소의 HTTPS URL로 설정되어야 합니다. SSH를 사용할 수도 있지만, SSH를 사용하려면 추가 단계를 수행해야 합니다. 다음으로 인증서를 생성하고 Fastlane Match에서 인증서를 생성할 때 사용할 수 있는 인증서를 입력하세요. 인증서를 생성할 때 패스워드를 입력하실 때, 패스워드를 정확하게 기억해두세요. 이 패스워드는 __CAPGO_KEEP_0__ Actions가 인증서 저장소의 암호화를 위해 사용합니다. _git_url_인증서 생성이 성공적으로 완료되었습니다. 다음과 같은 화면을 볼 수 있습니다.

# ios/Matchfilegit_url("https://github.com/gitusername/certificates")storage_mode("git")type("appstore")

__CAPGO_KEEP_0__와 관련된 문제가 발생하거나 권한이 부족한 경우, 이 포스트를 참조하세요.

You will be prompted to enter a passphrase. Remember it correctly because it will be used later by GitHub Actions to decrypt your certificates repository.

fastlane match appstore

Then select option #1 (Git Storage).

[01:40:52]: All required keys, certificates and provisioning profiles are installed 🙌

If you experienced any problem with GitHub and the necessary permissions, maybe this Now you have inside Fastlane folder a file named git에 인증 토큰을 생성하는 데 도움이 될 것입니다.

생성된 인증서와 배포 프로파일은 인증서 저장소 리소스에 업로드됩니다.

앱 스토어 연결 인증서

마지막으로, 앱의 릴리스 구성에 대한 배포 프로파일을 업데이트하기 위해 project Xcode에서 열고

XCode 인증서

💡 몇 가지 사항을 주의해 주세요.

MATCH

CI/CD가 인증서와 배포 프로파일을 가져오려면 인증서 저장소에 접근할 수 있어야 합니다. 개인 접근 토큰을 생성하여 (이전 사용) 사설 저장소에 접근하거나 읽기 권한이 있는 범위가 있는 토큰을 사용할 수 있습니다.

GitHub에서 설정개발자 설정개인 접근 토큰 → 클릭 Generate New Token → 체크박스에 체크 repo 권한 → 그 다음 클릭 Generate token.

개인 접근 토큰 생성

개인 접근 토큰이 생성되었습니다. 환경 변수를 위해 나중에 사용할 것입니다. GIT_TOKEN.

Fastlane 폴더 내에서 생성된 매치 파일을 대체하세요. Matchfile

CERTIFICATE_STORE_URL = ENV["CERTIFICATE_STORE_URL"]
GIT_USERNAME = ENV["GIT_USERNAME"]
GIT_TOKEN = ENV["GIT_TOKEN"]
FASTLANE_APPLE_ID = ENV["FASTLANE_APPLE_ID"]

git_url(CERTIFICATE_STORE_URL)
storage_mode("git")
type("appstore")
git_basic_authorization(Base64.strict_encode64("#{GIT_USERNAME}:#{GIT_TOKEN}"))
username(FASTLANE_APPLE_ID)

이것은 GitHub Actions에 의해 인증서 및 배포 프로파일을 가져오기 위해 사용됩니다. 그리고 GitHub Secrets에서 var가 설정되며, 파일에 하드 코딩된 대신 사용됩니다.

빌드 처리

GitHub Actions에서 당신은 CI/CD 워크플로우를 실행하는 데 사용한 분의 수에 따라 요금이 청구됩니다. App Store Connect에서 빌드를 처리하는 데 10-15분 정도 소요됩니다. you are billed based on the minutes

개인 프로젝트의 경우, 빌드에 대한 예상 비용은 $0.08/min x 15 mins = $1.2, 또는 더 비용이 들 수 있습니다. 이는 프로젝트의 구성 또는 의존성에 따라 달라집니다.

가격에 대한 걱정은 제가 개인 프로젝트에 대해 하는 것과 같습니다. skip_waiting_for_build_processing to true.

이런 가격에 대해 걱정하는 경우, 개인 프로젝트와 같이

를 사용하세요. 이게 무슨 문제야? 빌드가 처리된 후에, 앱을 사용자에게 배포하기 위해서는, App Store Connect에서 앱의 준수성을 수동으로 업데이트해야 합니다..

3. Setup GitHub Actions

Configure GitHub secrets

3. __CAPGO_KEEP_0__ 액션 설정 ENV __CAPGO_KEEP_0__ 비밀 설정하기

GitHub 비밀번호를 설정하세요

1. APP_STORE_CONNECT_TEAM_ID - 앱 스토어 연결 팀의 ID를 입력하세요 (여러 팀에 속해 있다면).

2. DEVELOPER_APP_ID - 앱 스토어 연결에서 앱 → 앱 정보 → 앱의 정보를 아래로 스크롤하여 General Information 앱의 정보에서 Apple ID.

3. DEVELOPER_APP_IDENTIFIER - 앱의 번들 식별자.

4. DEVELOPER_PORTAL_TEAM_ID - 개발자 포털 팀의 ID를 입력하세요 (여러 팀에 속해 있다면).

5. FASTLANE_APPLE_ID - 앱을 관리하는 데 사용하는 애플 ID 또는 개발자 이메일.

6. GIT_USERNAME & GIT_TOKEN - Git 사용자 이름과 개인 액세스 토큰.

7. MATCH_PASSWORD - match를 초기화할 때 할당한 패스 프레이즈를 입력하세요. 이 패스 프레이스로 암호화된 인증서와 프로비전 프로파일을 복호화할 것입니다.

8. PROVISIONING_PROFILE_SPECIFIER - match AppStore <YOUR_APP_BUNDLE_IDENTIFIER>, eg. match AppStore com.domain.blabla.demo.

9. TEMP_KEYCHAIN_USER &#x26; TEMP_KEYCHAIN_PASSWORD - workflow에 임시 키체인 사용자 및 비밀번호를 assign합니다.

10. APPLE_KEY_ID — App Store Connect API Key 🔺Key ID.

11. APPLE_ISSUER_ID — App Store Connect API Key 🔺Issuer ID.

12. APPLE_KEY_CONTENT — App Store Connect API Key 🔺 Key file or Key content of .p8, check it

13. CERTIFICATE_STORE_URL — Match 키의 repo url (ex: https://github.com/***/fastlane_match.git)

4. GitHub workflow 파일을 configure합니다.

Create a GitHub workflow directory.

cd .github/workflows

내부 폴더에서 파일을 만들고 이름을 workflow 에 추가하세요. build-upload-ios.yml이 워크플로우는 각

name: Build source code on ios

on:
  push:
    tags:
      - '*'

jobs:
  build_ios:
    runs-on: macOS-latest
    steps:
      - uses: actions/checkout@v6
      - name: set Node.js
        uses: actions/setup-node@v6
        with:
          node-version: '24'
          cache: npm
      - name: Install dependencies
        id: install_code
        run: npm ci
      - name: Build
        id: build_code
        run: npm run build
      - uses: actions/cache@v5
        with:
          path: ios/App/Pods
          key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-pods-
      - name: Sync
        id: sync_code
        run: npx cap sync
      - uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7.2
      - uses: maierj/fastlane-action@v2.3.0
        env:
          DEVELOPER_APP_IDENTIFIER: ${{ secrets.DEVELOPER_APP_IDENTIFIER }}
          DEVELOPER_APP_ID: ${{ secrets.DEVELOPER_APP_ID }}
          PROVISIONING_PROFILE_SPECIFIER: match AppStore ${{ secrets.DEVELOPER_APP_IDENTIFIER }}
          TEMP_KEYCHAIN_USER: ${{ secrets.TEMP_KEYCHAIN_USER }}
          TEMP_KEYCHAIN_PASSWORD: ${{ secrets.TEMP_KEYCHAIN_PASSWORD }}
          APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
          APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
          APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }}
          CERTIFICATE_STORE_URL: https://github.com/${{ secrets.CERTIFICATE_STORE_REPO }}.git
          GIT_USERNAME: ${{ secrets.GIT_USERNAME }}
          GIT_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
          FASTLANE_APPLE_ID: ${{ secrets.FASTLANE_APPLE_ID }}
          MATCH_USERNAME: ${{ secrets.FASTLANE_APPLE_ID }}
          MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
          APP_STORE_CONNECT_TEAM_ID: ${{ secrets.APP_STORE_CONNECT_TEAM_ID }}
          DEVELOPER_PORTAL_TEAM_ID: ${{ secrets.DEVELOPER_PORTAL_TEAM_ID }}
        with:
          lane: closed_beta
      - name: Upload release bundle
        uses: actions/upload-artifact@v2
        with:
          name: ios-release
          path: ./App.ipa
          retention-days: 60

This workflow should be triggered after each GitHub 뒤에 트리거되야 합니다. 태그를 자동화하려면 을 참조하세요. Automatic build and release with GitHub actions 을 사용하세요.

첫 번째로.

이 워크플로우는 NodeJS 의 종속성을 pull 하여 설치하고 JavaScript 앱을 빌드합니다.

Your App doesn’t need to use Ionic, only Capacitor base is mandatory., it can have old Cordova module, but Capacitor JS plugin should be preferred.

앱은 Ionic 을 사용하지 않아도 되며,

Create a Commit

Make a __CAPGO_KEEP_0____CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__ main __CAPGO_KEEP_0__ development __CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

Yes, you can, and it is effortless.

개인 저장소가 있다고 가정해 보세요. 무료 플랜의 분량을 모두 사용했으며 새로운 릴리즈에 대해 지불하지 않으려는 경우, 또는 애플리케이션을 수동으로 제출하는 것을 선호하는 경우가 있습니다.

들어가 보세요

첫 번째로, my_project_path/fastlane 경로에 .env 파일을 생성해야 합니다. Fastfile 와 동일한 경로에 비밀 속성을 생성할 수 있도록 하기 위해, _GitHub의 아래와 같은 secret 속성을 복사해 넣어야 합니다.

.env 파일을 사용하여 로컬 머신에서 배포

현재, 로컬 머신에서 배포하기 위해 .env 파일을 사용할 수 있습니다. 터미널 로컬 머신에서 배포하기 위해 .env 파일을 사용할 수 있습니다. Fastlane을 사용하여 로컬 머신에서 배포하기 로컬 머신에서 배포하기 위해 Fastlane을 사용할 수 있습니다.

fastlane closed_beta

❌ .env 파일에 대한 필수 사항 .env 파일에 대한 필수 사항은 노출되지 않도록 하기 위해, .gitignore 파일에 추가해야 합니다. .env 파일에 대한 필수 사항.env 파일에 대한 필수 사항은 노출되지 않도록 하기 위해, .gitignore 파일에 추가해야 합니다.

fastlane/*.env

It should work the same as it happens from GitHub Actions on the remote machine but in our local machine.

Local Fastlane 실행

터미널 실행: $ Fastlane closed_beta

이까지 왔으면 축하합니다, 이제는 Fastlane과 GitHub Actions를 사용하여 iOS 앱에 대한 완전 자동화 프로세스를 갖게되었습니다.

각각의 새로운 커밋을 보내면, Google Play 콘솔에서 베타 채널에서 릴리즈가 빌드됩니다. martin@capgo.app

martin@__CAPGO_KEEP_0__.app

장치에서 빌드 장치에서 빌드가 필요하다면, 수동으로 프로비전닝에 추가해야합니다.
장치를 맥에 연결하고 장치 메뉴를 열어주세요. 장치 ios 메뉴 찾기 identifier를 복사해주세요. identifier ios 찾기 fastlane register_new_device 그리고 다음 명령어를 실행해주세요.: 아이디 설정 iOS

문제가 있으시면

개발 장치와 관련된 문제가 있으시면, 일반적으로 이 문제를 해결할 수 있습니다.

문제를 해결하는 마법의 명령어가 있습니다:

fastlane match nuke development
fastlane match development

그 다음: 프로젝트를 정리하기 위해 Shift(⇧)+Command(⌘)+K를 눌러보세요. 또는 Product > Clean(이름이 "Clean Build Folder"라고 표시될 수 있습니다.)를 선택하세요.

그 다음, 다시 장치에서 앱을 실행해 보세요.

감사합니다.

다음 기사에 기반한 이 블로그입니다:

자동 iOS 빌드와 GitHub 액션을 사용하여 Capacitor 액션으로 계속 진행하세요.

If you are using 자동 Capacitor IOS 빌드와 GitHub 액션을 사용하여 CI/CD 자동화 계획을 세우려면 Capgo CI/CD Capgo CI/CD에서 제품 워크플로우를 관리하려면 Capgo 네이티브 빌드 Capgo 네이티브 빌드에서 제품 워크플로우를 관리하려면 Capgo 통합 Capgo 통합에서 제품 워크플로우를 관리하려면 CI/CD 통합 CI/CD 통합 구현 세부 사항을 관리하려면 GitHub 액션 통합 GitHub 액션 통합 구현 세부 사항에 대해.

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

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

시작하기

블로그에서 최신 뉴스

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