GitHub 액션을 사용하여 매치로 iOS 빌드를 자동화하는 방법
Capacitor 앱에 대한 CI/CD 설정은 복잡하고 시간이 많이 걸립니다. 여기서 필요한 정보를 알려드리겠습니다.
새로운 빌드에 권장: Capgo 빌드를 사용하세요.
__CAPGO_KEEP_0__ 빌드와 __CAPGO_KEEP_1__ __CAPGO_KEEP_2__를 사용하여 __CAPGO_KEEP_0__ 빌드를 위한 네이티브 빌드를 추천합니다. Capgo Build with the Capgo CLI Capacitor 앱에 대한 CI/CD 설정을 자동화하는 방법을 알려드리겠습니다. This Fastlane Match guide is kept for teams maintaining existing GitHub Actions pipelines, but new iOS builds should use the Capgo CLI so you do not have to maintain Fastlane, Match repositories, Xcode runners, certificates, and upload scripts yourself.
Capgo Build for CI/CD by Capgo
Skip the Fastlane Match, Xcode runner, certificate, provisioning profile, and upload-script maintenance. Capgo Build __CAPGO_KEEP_0__ Build runs signed native iOS builds from your existing CI/CD pipeline:
- __CAPGO_KEEP_0__ Build works with your pipeline: Capgo Build를 GitHub Actions, GitLab CI, Jenkins, 또는 로컬 스크립트에서 트리거하세요. 웹 빌드 후에
npx cap sync. - __CAPGO_KEEP_0__ Build에서 CI 비밀을 통해 서명: 앱 스토어 연결 키, 인증서, 프로비전 프로파일, 비밀번호, 및 팀 ID를 CI 비밀에서 유지하세요.
- __CAPGO_KEEP_0__ Build는 macOS 러너, Xcode 이미지, Fastlane, 또는 Match 저장소 관리를 위해 macOS 러너 관리를 하지 않습니다.Capgo Build는 유지 관리 된 애플 빌드 환경을 제공하므로 macOS 러너, Xcode 이미지, Fastlane, 또는 Match 저장소 관리를 하지 않습니다.
- __CAPGO_KEEP_0__ Build Artifacts and submission: Download signed artifacts for QA or submit release builds through the Capgo CLI.
가격
- Capgo 플랜은 월 $12부터 시작합니다.
- __CAPGO_KEEP_0__에서 OTA 업데이트와 월 15개 이상의 네이티브 빌드를 포함합니다.
- __CAPGO_KEEP_0__ 빌드의 추가 분량은 분당 크레딧으로 청구됩니다.
수동 설정 안내서
다음과 같은 작업을 수행하세요:
iOS에 대한 지속적인 배포를 Fastlane과 GitHub 액션을 사용하여 수행합니다.
사전 조건
이 튜토리얼을 계속하기 전에...
- Fastlane이 설치되어 있어야 합니다. 설치된 개발 머신에 설치되어 있습니다.
- iOS 개발자 프로그램 회원 가입.
- 읽고 싶은 마음이 생기셨나요 😆…
- 많은 개발자 팀이 있는 경우, 그럴 수 있지만, 우리는 fastlane cert 더 간단한 워크플로우를 위해.
가격에 대한 중요한 점

https://github.com/features/actions
서비스는 제한에 따라 선택한 머신에 따라 '무료'입니다.
__CAPGO_KEEP_0__을 사용할 예정입니다. macOS __CAPGO_KEEP_0__ 가격과 제한 (이 가격은 튜토리얼이 생성된 시점의 가격이며 미래에 변경될 수 있습니다.)
🔴 요구 사항과 가격에 대한 경고를 받은 후, 만약에 좋다면 계속…
📣 애플 에코시스템의 인증서를 가지고 iTunes Connect 에서 앱을 생성한 것으로 가정하고, Fastlane! 에서 모든 것을 복사합니다.
🤿 이제 시작해 보겠습니다.
포스트에서 따르야 하는 단계
- Fastlane Match와 함께 App Store Connect API 사용하기
- 요구 사항
- App Store Connect API 키 생성
- App Store Connect API 키 사용
- Fastlane 파일 복사
- Fastlane match 설정
1. App Store Connect API을 사용하는 Fastlane Match
2021년 2월부터 모든 사용자가 App Store Connect에 로그인하기 위해 2단계 인증 또는 2단계 인증이 필요합니다. Apple ID에 대한 추가 보안层는 계정에 대한 액세스를 제한하여 계정에 대한 액세스를 보장합니다.
From 애플 지원
match를 시작하려면 기존 인증서를 취소해야 하지만 걱정하지 마십시오. 새로운 인증서를 직접 받을 것입니다.
요구 사항
App Store Connect API을 사용하려면 Fastlane이 필요로 하는 세 가지 것입니다. 3 발급자 ID.
- 키 ID.
- 키 파일 또는 키 내용.
- Issuer ID.
앱 스토어 연결 API 키 생성
앱 스토어 연결에 관리자 권한이 있어야 키를 생성할 수 있습니다. 관리자 권한이 없다면, 이 문서를 관련 사람에게 알려주고 다음 단계를 따라야 합니다.
1 — 앱 스토어 연결에 로그인하세요. 앱 스토어 연결.
2 — 사용자 및 액세스 앱 스토어 연결 사용자 액세스.

앱 스토어 연결 __CAPGO_KEEP_0__ 통합

앱 스토어 연결 API 키 생성

1 — 로그인하세요.

6 — 액세스 아래에서 키에 대한 역할을 선택하세요. 키에 적용되는 역할은 팀 내 사용자에 대한 역할과 동일합니다. 자세한 내용은 역할 권한. 우리는 앱 매니저.
7 — Generate을 클릭하세요.
API 키의 액세스는 특정 앱에 제한되지 않습니다.
새 키의 이름, 키 ID, 다운로드 링크 및 기타 정보가 페이지에 나타납니다.

여기서 세 가지 필요한 정보를 모두 가져올 수 있습니다.
<1> 이슈 ID.
<2> 키 ID.
<3> API 다운로드를 클릭하여 API 개인 키를 다운로드하세요. 개인 키 다운로드 링크는 개인 키가 다운로드되지 않은 경우에만 나타납니다. 애플은 개인 키의 복사본을 유지하지 않습니다. 따라서 개인 키를 한번만 다운로드할 수 있습니다.
🔴 Store your private key in a safe place. You should never share your keys, store keys in a code repository, or include keys in client-side code.
App Store Connect API 키 사용
API 키 파일(p8 파일), 키 ID, 발급자 ID가 필요합니다. JWT 토큰 인증을 위해 필요한 정보를 Fastlane에 입력하는 방법은 여러 가지가 있습니다. Fastlane의 새로운 액션을 사용하여 이러한 정보를 입력하는 방법을 설명합니다. app_store_connect_api_key다른 방법을 알아보려면 Fastlane 문서이 방법을 설명하는 이유는 CI에서 가장 쉽게 작동할 수 있는 방법을 사용하기 때문입니다. 환경 변수를 설정할 수 있는 CI가 많기 때문입니다.
Fastlane을 App Store Connect API 키와 관리할 수 있게 되었습니다. 좋습니다!
2. Fastlane 파일 복사
Fastlane은 Ruby 라이브러리로 모바일 개발을 자동화하는 데 사용됩니다. Fastlane을 사용하여 사용자 정의 '레인'을 구성할 수 있으며, 이 레인에는 '액션'이 포함되어 있습니다. 액션은 일반적으로 Android Studio를 사용하여 수행하는 작업을 수행합니다. 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"])
__CAPGO_KEEP_0__ iOS 앱의 인증서와 배포 프로파일을 관리하는 새로운 방법입니다.
Fastlane match iOS 앱의 code 인증서에 대한 새로운 접근 방식입니다. Fastlane match는 팀이 iOS 앱에 필요한 인증서와 배포 프로파일을 관리하는 것을 쉽게 해줍니다.
새로운 개인 저장소 이름을 생성하세요. certificates예를 들어, GitHub 개인 계정 또는 조직에서.
iOS 앱에 Fastlane match를 초기화하세요.
fastlane match init
그런 다음 Git 저장소 옵션 #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이라는 파일이 생성됩니다. Matchfile __CAPGO_KEEP_0__
_git_url_HTTPS URL을 인증서 저장소로 설정해야 합니다. SSH를 사용할 수도 있지만, SSH를 사용하려면 인증서 저장소에 접근하기 위한 별도의 단계가 필요합니다.
# ios/Matchfilegit_url("https://github.com/gitusername/certificates")storage_mode("git")type("appstore")
다음으로, Fastlane Match를 사용하여 인증서를 생성하고 인증서 저장소에 접근할 때 필요한 자격 증명을 입력하세요.
비밀번호를 입력할 때 주의하십시오. GitHub Actions가 인증서 저장소에 접근할 때 사용할 비밀번호입니다.
fastlane match appstore
정상적으로 진행되면 다음과 같은 화면을 볼 수 있습니다.
[01:40:52]: All required keys, certificates and provisioning profiles are installed 🙌
GitHub과 관련된 문제가 발생하거나 권한이 부족한 경우, 인증 토큰을 git에 생성하는 방법에 대한 포스트를 참고하세요. post 인증서와 배포 프로파일은 인증서 저장소에 업로드됩니다.
App Store Connect 인증서

XCode 인증서 project 인증서와 배포 프로파일이 성공적으로 업로드되었습니다.

주의할 점이 몇 가지 있습니다 💡
MATCH
CI/CD가 인증서와 배포 프로파일을 가져오려면 인증서 저장소에 접근할 수 있어야 합니다. 개인 접근 토큰을 생성하여 (이전 사용) 개인 저장소에 접근하거나 읽기 권한이 있는 범위가 있는 토큰을 사용할 수 있습니다.
In GitHub, 설정 → 개발자 설정 → 개인 접근 토큰 → 클릭 Generate New Token → 개인 접근 토큰 범위 → 클릭 repo 개인 접근 토큰 생성 Generate token.

For the CI/CD to import the certificates and provisioning profiles, it needs to have access to the certificates repository. GIT_TOKEN.
그런 다음 Fastlane 폴더에서 생성된 match 파일을 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가 설정되며, 파일에 하드 코딩된 대신에.
Build Processing
GitHub Actions에서 CI/CD 워크플로우를 실행하는 데 사용한 분의 수에 따라 요금이 청구됩니다. App Store Connect에서 빌드를 처리하는 데 약 10-15분이 걸립니다.
private 프로젝트의 경우, 추정 비용은 $0.08/분 x 15분 = $1.2 또는 더 많은 비용이 발생할 수 있습니다. 프로젝트의 구성 또는 의존성에 따라.private 프로젝트의 가격에 대한 걱정과 마찬가지로, 가격에 대한 걱정과 같습니다. 경우에, __CAPGO_KEEP_0__를 유지하세요.
What's the catch? skip_waiting_for_build_processing 빌드가 처리된 후에, 사용자에게 빌드를 배포하기 위해 앱의 준수성을 수동으로 업데이트해야 합니다. true.
__CAPGO_KEEP_1__
이 매개 변수는 옵션입니다. 만약 빌드 시간을 줄이고 싶다면 개인 프로젝트에 대해 업데이트할 수 있습니다. 무료 프로젝트의 경우 전혀 문제가되지 않습니다. 가격.
3. GitHub 설정
GitHub 비밀 설정
값이 어디서 오는지 궁금했나요? 그건 더 이상 비밀이 아니에요 - 그것은 당신의 프로젝트의 비밀에서 오는 것입니다. ENV __CAPGO_KEEP_0__ 비밀 설정

1. APP_STORE_CONNECT_TEAM_ID - 앱 스토어 연결에서 앱 →
2. DEVELOPER_APP_ID 앱 정보 → 앱 정보 아래쪽으로 스크롤하고 앱 정보 General Information 설정 Apple ID.
3. DEVELOPER_APP_IDENTIFIER - 앱의 번들 식별자입니다.
4. DEVELOPER_PORTAL_TEAM_ID - 여러 팀에 속해 있다면 개발자 포털 팀의 ID입니다.
5. FASTLANE_APPLE_ID - 앱을 관리하는 데 사용하는 Apple ID 또는 개발자 이메일입니다.
6. GIT_USERNAME & GIT_TOKEN - Git 사용자 이름과 개인 액세스 토큰이 필요합니다.
7. MATCH_PASSWORD - match를 초기화할 때 assign한 패스 프레이즈가 사용됩니다. 이 패스 프레이즈는 인증서와 배포 프로파일을 암호화하는 데 사용됩니다.
8. PROVISIONING_PROFILE_SPECIFIER - match AppStore <YOUR_APP_BUNDLE_IDENTIFIER>eg. match AppStore com.domain.blabla.demo.
9. TEMP_KEYCHAIN_USER & TEMP_KEYCHAIN_PASSWORD - 워크플로우에 임시 키 체인 사용자와 비밀번호를 assign해야 합니다.
10. APPLE_KEY_ID — 앱 스토어 연결 API 키 🔺키 ID.
11. APPLE_ISSUER_ID — 앱 스토어 연결 API 키 🔺발급자 ID.
12. APPLE_KEY_CONTENT — 앱 스토어 연결 API 키 🔺키 파일 또는 키 내용. .p8, 확인해 보세요
13. CERTIFICATE_STORE_URL — Match 키의 리포지토리 URL (예: https://github.com/***/fastlane_match.git)
4. GitHub 워크플로 파일을 구성하십시오
GitHub 워크플로 디렉토리를 생성하십시오.
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
GitHub 태그 이후에 이 워크플로가 트리거되어야 합니다. 태그를 자동화해야 하는 경우, 태그에 대한 참조를 참조하십시오.if you need to automatize tag please, refer to 자동 빌드 및 릴리즈와 GitHub 작업 첫 번째.
그런 다음 워크플로가 NodeJS 의존성을 pulls, 설치하고 JavaScript 앱을 빌드합니다.
매번 새로운 커밋을 보내면 테스트 플라이트에서 릴리즈가 빌드됩니다.
앱은 Ionic을 사용하지 않아도 되며, Capacitor 베이스만 필수입니다. 오래된 Cordova 모듈을 사용할 수 있지만 Capacitor JS 플러그인은 선호됩니다.
5. 워크플로 트리거
커밋 생성
커밋을 생성하면, 저장소에서 활성화된 워크플로를 볼 수 있습니다. 워크플로 트리거새로운 커밋을 브랜치에 푸시하면 워크플로가 활성화됩니다.
Create a Commit
Make a main 또는 워크플로우를 트리거합니다. development 로 트리거하는 워크플로우.

커밋으로 시작

테스트 플라이트 대시보드
로컬 머신에서 배포할 수 있나요?
가능합니다. 그리고 그것은 매우 쉬워요.
개인 저장소가 있다고 가정해 보겠습니다. 그리고 무료 플랜의 분량을 모두 사용했으며 새로운 릴리즈에 대해 돈을 지불하지 않으려는 경우, 또는 애플리케이션을 수동으로 제출하는 것을 선호하는 경우.
그럼 가보죠 좋아요, 먼저 __CAPGO_KEEP_0__ .env, just in the same path as Fastfile, to be able to create the same 비밀 속성을 찾을 수 있는 _GitHub, a_s 아래와 같은 것들:
local 머신에서 배포하기 위한 .env 파일
Now, you can go to the 터미널 and launch the Fastlane from your machine:
fastlane closed_beta
❌ Essential about the .env 파일을 노출시키고 싶지 않아 __CAPGO_KEEP_0__ 데이터를 추가해야 합니다. .gitignore , something like that: ❌__CAPGO_KEEP_0__ Actions이 remote 머신에서 발생하는 것과 동일하게 작동해야 합니다. 🍻
fastlane/*.env
It should work the same as it happens from GitHub Actions on the remote machine but in our local machine. 🍻

Fastlane과 __CAPGO_KEEP_0__ Actions을 사용하여 iOS 앱에 대한 완전히 자동화된 프로세스를 구축했습니다. 축하합니다.
각각의 새로운 커밋을 전송할 때마다 Google Play 콘솔에서 베타 채널에서 릴리스가 빌드됩니다. 이 블로그를 개선하기 위해 피드백을 기다리고 있습니다. 질문이나 제안이 있으시면 martin@GitHub.app로 이메일을 보내주세요.
__CAPGO_KEEP_0__ 기기에서 빌드 capgo 기기에서 빌드
__CAPGO_KEEP_0__ 기기에서 빌드
만약 장치에서 빌드해야 한다면, 프로비전닝에 수동으로 추가해야 합니다.
장치를 맥에 연결하고 장치 메뉴를 열어보세요
그런 다음 식별자를 복사하세요
그 다음 명령어를 실행하세요:
fastlane register_new_device
장치를 식별하고 이름을 설정하라고 묻습니다:

문제가 발생했다면
개발 장치와 관련된 문제가 발생하거나 테스트가 불가능한 경우, 일반적으로 이 방법이 해결됩니다.
테스트 장치와 관련된 문제를 해결하는 마법의 명령어가 있습니다:
fastlane match nuke development
fastlane match development
그런 다음: Shift(⇧)+Command(⌘)+K를 눌러 프로젝트를 정리하거나 Product > Clean(이름이 "Clean Build Folder"라고 표시될 수 있음)를 선택하세요
그런 다음 다시 장치에서 앱을 실행해 보세요.
감사합니다
다음 기사에 기반한 이 블로그입니다:
자동 Capacitor IOS 빌드와 GitHub 액션을 사용하여 계속 진행하세요
자동 __CAPGO_KEEP_0__ IOS 빌드와 __CAPGO_KEEP_1__ 액션을 사용하여 계속 진행하세요 Automatic Capacitor IOS build with GitHub actions using match 자동 __CAPGO_KEEP_0__ CI/CD 자동 Capgo CI/CD 자동 Capgo Native Builds 자동 Capgo 네이티브 빌드 제품 워크플로우에서 Capgo 네이티브 빌드를 위해 Capgo 통합 Capgo 통합을 위해 제품 워크플로우 CI/CD 통합 CI/CD 통합에 대한 구현 세부 정보, 그리고 GitHub 액션 통합에 대한 구현 세부 정보 for the implementation detail in GitHub Actions Integration.