GitHub 액션을 사용하여 매치로 iOS 빌드를 자동화하는 방법
Capacitor 앱의 CI/CD 설정은 복잡하고 시간이 많이 걸립니다. 필요한 정보는 다음과 같습니다.
Capgo 빌드에 권장 사항: Capgo 빌드를 사용하세요
현재 __CAPGO_KEEP_0__를 사용하는 것을 추천합니다. Capgo Build with the Capgo CLI native Capacitor builds. 이 Fastlane Match 가이드는 기존 GitHub Actions pipeline을 유지 관리하는 팀을 위해 보존되지만, 새로운 iOS 빌드는 Fastlane, Match 저장소, Xcode 러너, 인증서, 업로드 스크립트를 유지 관리하지 않도록 Capgo CLI를 사용하여야 합니다.
Capgo Build for CI/CD by Capgo
Fastlane Match, Xcode 러너, 인증서, 프로비전 프로파일, 업로드 스크립트 유지 관리를 생략하세요. Capgo Build __CAPGO_KEEP_0__ Build는 기존 CI/CD pipeline에서 실행되는 signed native iOS 빌드입니다.
- __CAPGO_KEEP_0__ Build는 기존 pipeline과 함께 작동합니다.: Capgo Build를 GitHub Actions, GitLab CI, Jenkins, 또는 로컬 스크립트에서 웹 빌드 후 트리거하세요.
npx cap sync. - : CI 비밀을 사용하여 서명: App Store Connect 키, 인증서, 프로비전 프로파일, 비밀번호, 팀 ID를 CI 비밀에 저장하세요.
- native 러너 유지 관리를 생략하세요.: Capgo 빌드 환경은 유지 관리되므로 macOS 실행자, Xcode 이미지, Fastlane, 또는 Match 저장소 관리가 필요하지 않습니다.
- artifact 및 제출: QA에서 서명된 artifact를 다운로드하거나 Capgo CLI를 통해 릴리스 빌드를 제출하세요.
가격
- Capgo 빌드 플랜은 $12/월부터 시작됩니다.
- OTA 업데이트 및 매월 약 15건의 네이티브 빌드 포함
- 추가 빌드 분량은 분당 크레딧으로 청구됩니다.
수동 설정 안내서
다음과 같은 단계를 수행하세요:
iOS에 대한 지속적인 배포를 위해 Fastlane 및 GitHub 액션을 사용하여 Match를 사용합니다.
사전 요구 사항
이 튜토리얼을 계속하기 전에…
- 개발 환경에 Fastlane이 설치되어 있는지 확인하세요. 설치된 개발 머신에.
- iOS 개발자 프로그램 회원입니다.
- 읽고 싶은 마음이 생기셨나요 😆…
- 많은 개발자 팀이 있습니다. 그렇다면 더 간단한 워크플로우를 위해 fastlane cert 를 사용하는 것을 추천합니다.
가격에 대한 중요한 정보

https://github.com/features/actions
서비스는 제한에 따라 선택한 기기에 따라 '무료'입니다.
우리는 macOS 기기를 사용할 것입니다. 스크린샷에 가격과 제한을 볼 수 있습니다 (가격은 튜토리얼이 생성된 시점의 가격이며 미래에 변경될 수 있습니다).
🔴 요구 사항과 가격에 대해 경고한 후, 만약에 좋다면, 계속하겠습니다.
📣 포스트에서는 iTunes Connect에 앱이 생성되어 있다고 가정하고, 애플 생태계의 인증서를 가지고 있다고 가정합니다. 모든 것이 Fastlane!에 의해 복사될 것입니다.
들어가볼까요 🤿
포스트에서 따르는 단계
- App Store Connect API을 사용하는 방법
- 요구 사항
- App Store Connect API 키를 생성하는 방법
- App Store Connect API 키를 사용하는 방법
- Copy Fastlane 파일을 복사하세요
- Fastlane match를 구성하세요
1. App Store Connect API를 Fastlane Match와 함께 사용하세요
2021년 2월 이후로 모든 사용자가 App Store Connect에 로그인하기 위해 2단계 인증 또는 2단계 인증이 필요합니다. Apple ID에 추가 보안을 제공하여 계정에 접근할 수 있는 사람을 단일화합니다.
From Apple Support
match를 사용하기 위해 시작하는 것은 기존 인증서를 취소해야 하는데, 걱정하지 마세요. 새로운 인증서를 직접 받을 수 있습니다.
Requirements
App Store Connect API를 사용하기 위해 Fastlane이 필요로 하는 것은 세 가지입니다. Issuer ID. three
- Issuer ID.
- Key ID.
- Key file or Key content.
애플 스토어 연결 API 키 생성
애플 스토어 연결에서 키를 생성하려면 Admin 권한이 필요합니다. 권한이 없다면 해당 문서를 공유하고 다음 지침을 따라야 합니다.
1 — 로그인 애플 스토어 연결.
2 — 사용자 및 액세스 애플 스토어 연결 사용자 액세스.

애플 스토어 연결 __CAPGO_KEEP_0__ 통합

4 — Click Generate API Key or the Add (+) button.

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

6 — 액세스에서 키에 대한 역할을 선택하세요. 키에 적용되는 역할은 팀 내 사용자에 대한 역할과 동일합니다. 자세한 내용은 역할 권한을 참조하세요. App manager.
7 — 생성을 클릭하세요.
API 키의 액세스는 특정 앱에 제한할 수 없습니다.
새 키의 이름, 키 ID, 다운로드 링크 및 기타 정보가 페이지에 나타납니다.

여기서 필요한 세 가지 정보를 모두 가져올 수 있습니다.
<1> 문제 ID.
<2> 키 ID.
<3> "다운로드 API 키"를 클릭하여 API 개인 키를 다운로드하세요. 개인 키가 다운로드되지 않은 경우 다운로드 링크만 표시됩니다. 애플은 개인 키의 복사본을 유지하지 않습니다. 따라서 개인 키를 한 번만 다운로드할 수 있습니다.
🔴 개인 키를 안전한 장소에 저장하세요. 키를 공유하지 마세요. 키를 code 저장소에 저장하지 마세요. 또는 code에 키를 포함하지 마세요.
애플 스토어 연결 API 키 사용
API 키 파일(다운로드한 p8 파일), 키 ID, 발급자 ID가 필요하여 JWT 토큰을 생성하기 위해 인증을 위해 Fastlane에 입력할 수 있는 여러 가지 방법이 있습니다. app_store_connect_api_key. 다른 방법을 알아보려면 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를 설정하세요
Fastlane match code iOS의 인증서에 대한 새로운 접근 방식입니다. Fastlane match는 iOS 앱의 필요한 인증서와 배포 프로파일을 관리하는 팀을 쉽게 만듭니다.
iOS 앱에 대한 Fastlane match를 초기화하세요. certificates, for example on your GitHub personal account or organization.
새로 생성된 저장소의 URL을 Assign하세요.
fastlane match init
Fastlane 폴더 내에 파일이 생성되었습니다.
[01:00:00]: fastlane match supports multiple storage modes, please select the one you want to use:1. git2. google_cloud3. s3?
Create a new private repository named
[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>
, 예를 들어 __CAPGO_KEEP_0__ 개인 계정 또는 조직에 있습니다. Matchfile은 HTTPS URL의 인증서 저장소로 설정되어야 합니다. SSH를 사용할 수도 있지만, 다른 단계를 실행해야 합니다. 다음으로, 인증서를 생성하고 Fastlane Match에서 인증서 저장소에 암호화할 때 사용할 패스프레이즈를 입력할 때 사용자 인증을 입력하세요.
_git_url_패스프레이즈를 정확하게 기억하세요. __CAPGO_KEEP_0__ Actions가 인증서 저장소에 암호화된 인증서를 사용할 때 사용됩니다.
# ios/Matchfilegit_url("https://github.com/gitusername/certificates")storage_mode("git")type("appstore")
모든 것이 잘 진행되면 다음과 같은 화면을 볼 수 있습니다.
GitHub과 필요한 권한과 관련된 문제가 발생한 경우, 인증 토큰을 git에 생성하는 방법에 대한 포스트가 도움이 될 수 있습니다.
fastlane match appstore
인증서와 배포 프로파일은 인증서 저장소 리소스로 업로드됩니다.
[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 마지막으로, 인증서 저장소에 인증서와 배포 프로파일이 업로드된 후,
__CAPGO_KEEP_0__ Actions를 사용하여

인증서 저장소에 업로드합니다. project In Xcode에서 앱의 릴리스 구성에 대한 프로비저닝 프로파일을 업데이트하세요.

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

__CAPGO_KEEP_0__에서 생성한 개인 접근 토큰의 복사본을 준비하세요. 이 토큰은 환경 변수를 위해 나중에 사용됩니다. 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가 설정되며, 파일에 하드 코딩된 대신 사용됩니다.
빌드 처리
GitHub Actions에서, CI/CD 워크플로우를 실행하는 데 사용한 분의 수에 따라 요금이 청구됩니다. App Store Connect에서 빌드를 처리하는 데 10-15분이 걸립니다. 개인 프로젝트의 경우, 빌드당 예상 비용은 $0.08/분 x 15분 = $1.2, 또는 그 이상으로, 프로젝트의 구성 또는 의존성에 따라 달라집니다.
개인 프로젝트에 대한 비용에 대한 걱정과 마찬가지로, 가격에 대한 걱정도 하실 수 있습니다. 그 경우, 비용을 절약하기 위해 빌드를 유지할 수 있습니다. $0.08/min x 15 mins = $1.2Then replace your match file generated in Fastlane folder by Matchfile
This will be used by __CAPGO_KEEP_0__ Actions to import the certificates and provisioning profiles.
And var will be set in __CAPGO_KEEP_1__ Secrets, instead of hard-coding them in the file. skip_waiting_for_build_processing to true.
무엇이 문제일까? 앱을 App Store Connect에 배포하기 위해서는 빌드가 처리된 후에 수동으로 앱의 준수성을 업데이트해야 합니다.
이것은 옵션입니다. 빌드 분량을 절약하기 위해 private 프로젝트에만 사용할 수 있습니다. free 프로젝트라면 전혀 문제가 되지 않습니다. pricing.
3. GitHub 설정
GitHub 비밀번호 설정
값이 어디서 왔는지 궁금해? 그건 이제 비밀이 아니야 – 그것은 프로젝트의 비밀입니다. ENV __CAPGO_KEEP_0__ 비밀번호 설정

1. APP_STORE_CONNECT_TEAM_ID - App Store Connect에서 앱 →
2. DEVELOPER_APP_ID 앱 정보 App Information → 앱의 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를 초기화할 때 할당한 패스 프레이즈가 사용됩니다. 인증서와 배포 프로파일을 암호화할 때 사용됩니다.
8. PROVISIONING_PROFILE_SPECIFIER - match AppStore <YOUR_APP_BUNDLE_IDENTIFIER>, 예를 들어. match AppStore com.domain.blabla.demo.
9. TEMP_KEYCHAIN_USER & TEMP_KEYCHAIN_PASSWORD - 워크플로우에 임시 키 체인 사용자와 비밀번호를 assign하세요.
10. APPLE_KEY_ID — App Store Connect API Key 🔺Key ID.
11. APPLE_ISSUER_ID — App Store Connect API Key 🔺 발급자 ID.
12. APPLE_KEY_CONTENT — App Store Connect API Key 🔺 키 파일 또는 키 내용의 .p8, 확인하세요
13. CERTIFICATE_STORE_URL — Match 키의 저장소 URL (예: https://github.com/***/fastlane_match.git)
4. GitHub 워크플로 파일을 구성하십시오
GitHub 워크플로 폴더를 생성하십시오
cd .github/workflows
폴더 내에 파일을 생성하고 다음을 추가하십시오 workflow 이 워크플로는 각 __CAPGO_KEEP_0__ 후에 트리거되어야 합니다 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 태그, 자동화된 태그가 필요하다면, 참조하십시오. 자동화된 빌드 및 릴리스와 GitHub 작업 첫째.
그런 다음 워크플로가 NodeJS 의존성을 pulls, 설치하고 JavaScript 앱을 빌드합니다.
각각의 새로운 커밋을 보낼 때마다 테스트 플라이트에서 릴리스가 빌드됩니다.
앱은 Ionic을 사용하지 않아도 됩니다. 단, Capacitor 베이스만 필수입니다. 오래된 Cordova 모듈을 사용할 수 있지만 Capacitor JS 플러그인은 선호됩니다.
5. 워크플로 트리거
커밋 생성
커밋 , 저장소에서 활성화된 워크플로를 볼 수 있습니다.5. Trigger workflow
__CAPGO_KEEP_0__을 트리거합니다.
__CAPGO_KEEP_0__을 __CAPGO_KEEP_1__로 푸시합니다. main __CAPGO_KEEP_2__ development __CAPGO_KEEP_0__을 트리거합니다.

몇 분 후에 __CAPGO_KEEP_4__에서 __CAPGO_KEEP_5__에 빌드가 사용할 수 있습니다.

__CAPGO_KEEP_8__에서 로컬 머신으로 배포할 수 있나요?
네, 가능합니다. 그리고 그것은 매우 쉬워요.
개인 저장소가 있다고 가정해 보겠습니다. 그리고 무료 플랜의 __CAPGO_KEEP_9__을 모두 사용했으며 새로운 릴리스에 대해 지불하지 않으려는 경우, 또는 애플리케이션을 수동으로 제출하는 것을 선호하는 경우가 있습니다.
그럼 가보죠.
좋아요, __CAPGO_KEEP_10__을 먼저 만들어야 합니다. my_project_path/fastlane 파일 이름이 있는 경로 a .env, Capgo에서 제공하는 Fastfile과 동일한 경로에 Fastfile, Capgo에서 제공하는 Fastfile과 동일한 환경을 구성하기 위해 비밀 Capgo에서 제공하는 _GitHub 에서 찾을 수 있는 속성들입니다.
.env 파일을 로컬 머신에서 배포하기 위해
현재, 터미널 터미널에서 프로젝트를 실행하세요. 빠른 라인 __CAPGO_KEEP_0__에서
fastlane closed_beta
❌ Fastlane에 대한 중요한 것 .env 파일, 데이터를 노출하지 않으려면, __CAPGO_KEEP_0__에서 .gitignore , 다음과 같은 형식으로 추가합니다: ❌__CAPGO_KEEP_0__ Actions에서 동일한 동작을 하듯이, 로컬 머신에서 동작해야 합니다. 🍻
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 앱에 대한 완전 자동화 프로세스를 구축했습니다. 축하합니다.
If you have come this far, my congratulations, now you have a fully automated process for your iOS apps with Fastlane and GitHub Actions.
이 블로그를 개선하기 위해, 피드백을 기다립니다. 질문이나 제안이 있으시면, 이메일로 알려주세요. martin@capgo.app
__CAPGO_KEEP_1__
__CAPGO_KEEP_2__
__CAPGO_KEEP_4__
__CAPGO_KEEP_6__
fastlane register_new_device
__CAPGO_KEEP_7__

__CAPGO_KEEP_9__
__CAPGO_KEEP_10__
__CAPGO_KEEP_11__
fastlane match nuke development
fastlane match development
그런 다음 : 프로젝트를 정리하기 위해 Shift(⇧)+Command(⌘)+K를 눌러거나 Product > Clean (이것이 'Clean Build Folder'라고 표시될 수 있음)을 선택하십시오.
그런 다음 기기에서 앱을 다시 실행하십시오.
감사합니다.
이 블로그는 다음 기사에 기반하고 있습니다.
자동 Capacitor IOS 빌드에 GitHub 액션을 사용하여 계속 진행하십시오.
CI/CD 자동화 계획을 사용하는 경우 __CAPGO_KEEP_0__ CI/CD와 연결하십시오. 자동 Capacitor IOS 빌드에 GitHub 액션을 사용하여 계속 진행하십시오. 자동 __CAPGO_KEEP_0__ IOS 빌드에 __CAPGO_KEEP_1__ 액션을 사용하여 계속 진행하십시오. Capgo CI/CD Capgo CI/CD workflow을 위한 제품 워크플로우에 대해 Capgo 네이티브 빌드 Capgo 네이티브 빌드 워크플로우에 대해 제품을 위한 Capgo 통합 Capgo 통합 워크플로우에 대해 제품을 위한 CI/CD 통합 CI/CD 통합 구현 세부 사항에 대해 GitHub 액션 통합 GitHub 액션 통합 구현 세부 사항에 대해