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

https://github.com/features/actions
서비스는 제한에 따라 '무료'입니다.
이번 튜토리얼에서 macOS 기기를 사용하겠습니다. 스크린샷에서 가격과 제한을 확인하실 수 있습니다. (가격은 튜토리얼이 생성된 시점의 가격이며, 미래에 변경될 수 있습니다.) 요구 사항과 가격에 대한 경고를 받은 후, 계속하기를 원하신다면... 애플 에코시스템의 인증서가 있는 앱이 iTunes Connect에 생성되어 있다고 가정합니다. Fastlane이 모든 것을 복사합니다.
🔴 앱이 iTunes Connect에 생성되어 있고, 애플 에코시스템의 인증서가 있는 경우...
📣 앱이 iTunes Connect에 생성되어 있고, 애플 에코시스템의 인증서가 있는 경우...
🤿 시작해 보세요.
이 글에서 따르는 단계
- 애플 스토어 커넥트 API를 사용하는 Fastlane Match
- 필요한 조건
- 애플 스토어 커넥트 API 키를 만드는 방법
- 애플 스토어 커넥트 API 키를 사용하는 방법
- Fastlane 파일 복사
- Fastlane match 구성
1. 애플 스토어 커넥트 API를 사용하는 Fastlane Match
2021년 2월부터, 모든 사용자가 애플 스토어 커넥트에 로그인하기 위해 2단계 인증 또는 2단계 인증이 필요합니다. 이 추가 보안 기능은 Apple ID에 대한 보안을 강화하여 계정에 대한 접근을 제한합니다.
출처 애플 지원
match를 사용하기 위해 시작하려면 기존 인증서를 취소해야 합니다. 그러나 걱정하지 마세요. 새로운 인증서를 직접 받을 것입니다.
요구 사항
App Store Connect API를 사용할 수 있도록 Fastlane이 API를 API해야 합니다. 세 가지 발급자 ID.
- 키 ID.
- 키 파일 또는 키 내용.
- App Store Connect __CAPGO_KEEP_0__ 키 생성
Creating an App Store Connect API Key
1 — App Store Connect에 로그인합니다.
__CAPGO_KEEP_0__ __CAPGO_KEEP_0__.
2 — 선택 사용자 및 액세스.

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

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

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

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

여기서 세 가지 필요한 정보를 모두 가져올 수 있습니다.
1. 이슈 ID.
2. 키 ID.
API 키 다운로드를 클릭하여 API 개인 키를 다운로드하세요. 다운로드 링크는 개인 키가 다운로드되지 않은 경우에만 나타납니다. 애플은 개인 키의 복사본을 유지하지 않습니다. 따라서 개인 키를 한번만 다운로드할 수 있습니다.
🔴 개인 키를 안전한 곳에 저장하세요. 키를 공유하지 마세요, 키를 code 저장소에 저장하지 마세요, 또는 code에 키를 포함하지 마세요.
API 키 사용
API 키 파일 (다운로드한 p8 파일), 키 ID, 발급자 ID가 JWT 토큰 인증을 위해 필요합니다. Fastlane의 새로운 액션을 사용하여 이러한 정보를 Fastlane에 입력하는 방법은 여러 가지가 있습니다. app_store_connect_api_key. 다른 방법을 배울 수 있습니다. Fastlane 문서. CI에서 가장 많은 환경 변수를 설정할 수 있는 가장 쉬운 방법으로 생각하기 때문에 이 방법을 보여줍니다.
App Store Connect API 키로 Fastlane을 관리할 수 있습니다. 정말 좋습니다!
2. Fastlane 파일 복사
Fastlane은 Android Studio를 사용하여 일반적인 모바일 개발 작업을 자동화하기 위해 만들어진 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"])
Fastlane match 구성
Fastlane match iOS의 code 인증에 대한 새로운 접근 방식입니다. Fastlane match는 팀이 iOS 앱의 필요한 인증서와 배포 프로파일을 관리하기 쉽게 해줍니다.
새로운 개인 저장소 이름을 생성하세요. certificates예를 들어 GitHub 개인 계정 또는 조직에서.
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이라는 파일이 생성되었습니다. 페이지/영역: Capgo 마케팅 웹사이트. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 보이는 곳: trust.astro 페이지. 메시지 키 `and` (And). Matchfile은 인증서 저장소의 HTTPS URL로 설정되어야 합니다. SSH를 사용할 수도 있지만, 다른 단계를 실행해야 합니다.
_git_url_다음으로 인증서를 생성하고 Fastlane Match에서 자격 증명을 입력하세요.
# ios/Matchfilegit_url("https://github.com/gitusername/certificates")storage_mode("git")type("appstore")
인증서 저장소에 암호를 입력하라는 메시지가 표시됩니다. 정확하게 기억하세요. __CAPGO_KEEP_0__ Actions가 암호를 사용하여 인증서 저장소의 암호를 해독할 것입니다.
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
__CAPGO_KEEP_0__
[01:40:52]: All required keys, certificates and provisioning profiles are installed 🙌
만약 GitHub와 필요한 권한과 관련된 문제가 발생한 경우, 이 포스트가 도움이 될 수 있습니다. 포스트 인증 토큰을 git에 생성하기 위해 도움이 될 것입니다.
인증서와 프로비저닝 프로파일이 인증서 저장소 리소스에 업로드됩니다.

마지막으로, 앱의 릴리즈 구성에 대한 프로비저닝 프로파일을 업데이트하기 위해 Xcode에서 열어보세요. project XCode 인증서

MATCH
CI/CD가 인증서와 프로비저닝 프로파일을 가져오기 위해 인증서 저장소에 접근할 수 있어야 합니다. 개인 액세스 토큰을 생성하여 (사용하기 전에) 사설 저장소에 접근하거나 읽을 수 있는 범위가 있는 토큰을 사용할 수 있습니다.
__CAPGO_KEEP_0__에서
In GitHub 설정 → 개발자 설정 → 개인 접근 토큰 → 클릭 Generate New Token → 체크박스에 체크 repo 권한 범위 → 다음 클릭 Generate token.

개인 접근 토큰을 생성한 후 복사해두세요. 나중에 환경 변수로 사용하겠습니다. 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에서 변수가 설정되며, 파일에 직접 하드 코딩하지 않도록 합니다.
빌드 처리
In GitHub Actions, 분당 요금에 따라 계산됩니다. CI/CD 워크플로우를 실행하는 데 사용한 분의 수에 따라 계산됩니다. 앱 스토어 연결에서 빌드를 처리하는 데 약 10-15분이 걸립니다.
개인 프로젝트의 경우 빌드당 예상 비용은 $0.08/분 x 15분 = $1.2또는 프로젝트의 구성 또는 의존성에 따라 더 높을 수 있습니다.
개인 프로젝트의 비용에 대한 가격 정책에 대해 걱정하는 경우, skip_waiting_for_build_processing 을 유지할 수 있습니다. true.
페이지/영역: Live updates 제품 페이지. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 메시지 키 `live_update_dynamic_label_to` (Live Update Dynamic Label To).
이게 무슨 문제야? 빌드가 처리된 후에 앱 스토어 연결에서 앱의 준수성을 수동으로 업데이트해야 합니다. 그럼 빌드를 사용자에게 배포할 수 있습니다. 이건 빌드 분을 절약하기 위해 개인 프로젝트에서만 업데이트할 수 있는 옵션입니다. 무료 프로젝트라면 이게 문제가 될 일은 없습니다. .
3. Setup GitHub Actions
Configure GitHub secrets
Ever wonder where the values of the ENV are coming from? Well, it’s not a secret anymore – it’s from your project’s secret.

1. APP_STORE_CONNECT_TEAM_ID - your App Store Connect 팀의 ID
2. DEVELOPER_APP_ID - App Store Connect에서 앱을 클릭하고 App Information → 앱 정보에서 아래로 스크롤하여 General Information section of your app Apple ID.
3. DEVELOPER_APP_IDENTIFIER 에서 찾으세요.
4. DEVELOPER_PORTAL_TEAM_ID - 앱의 번들 식별자
5. FASTLANE_APPLE_ID - Developer Portal 팀의 ID
6. GIT_USERNAME - 앱을 관리하는 Apple ID 또는 개발자 이메일 GIT_TOKEN - __CAPGO_KEEP_0__ git 사용자 이름과 __CAPGO_KEEP_0__ 개인 접근 토큰.
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 — 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, 인증서 및 배포 프로파일을 암호화하는 데 사용되는 패스 프레이즈입니다.
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이 워크플로우는 각 __CAPGO_KEEP_0__ 태그 이후에 트리거되어야 합니다. 만약 태그 자동화가 필요하다면, __CAPGO_KEEP_0__ 액션을 사용하여 자동 빌드 및 릴리즈를 참조하십시오.
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 액션을 먼저 참조하십시오. 그런 다음 이 워크플로우는 NodeJS 의존성을 pull 하여 설치하고 자바스크립트 앱을 빌드하십시오.각각의 새로운 커밋을 전송할 때마다 테스트 플라이트에서 릴리즈가 빌드되어야 합니다. GitHub __CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__
Your App은 Ionic을 사용하지 않아도 되며, Capacitor의 기본 버전만 필수입니다. 옛날 Cordova 모듈을 사용할 수 있지만 Capacitor JS 플러그인은 선호됩니다.
5. 워크플로우 트리거
커밋 생성
Make a 커밋커밋을 푸시하면, 저장소에서 활성화된 워크플로우를 볼 수 있습니다.
워크플로우 트리거
새로운 커밋을 브랜치에 푸시하거나 main 또는 development 워크플로우를 트리거합니다.

몇 분 후에, App Store Connect 대시보드에서 빌드를 확인할 수 있습니다.

로컬 머신에서 배포할 수 있나요?
네, 가능합니다. 그리고 그것은 매우 간단합니다.
개인 저장소가 있다고 가정해 보겠습니다. 그리고 무료 플랜의 분량을 모두 사용했으며 새로운 릴리즈를 위해 돈을 지불하지 않으려는 경우, 또는 애플리케이션을 수동으로 제출하는 것을 선호하는 경우.
그럼 가보죠
좋아요, 먼저 my_project_path/fastlane 경로에 .env 파일을 생성해야 합니다. 그것은 Fastfile 비밀 properties found in our _GitHub, a_s below:
로컬 머신에서 배포하기 위한 .env 파일
이제, 에서 이동할 수 있습니다. 터미널 컴퓨터에서 을 실행할 수 있습니다:
fastlane closed_beta
❌ .env 파일에 대한 필수 사항, .env 파일에 포함된 데이터를 노출시키지 않으려면, .gitignore, something like that: ❌
fastlane/*.env
원격 머신의 GitHub Actions에서 발생하는 것과 동일하게 작동해야 합니다. 🍻

터미널 실행: $ Fastlane closed_beta
이까지 왔으면 축하합니다. 이제는 Fastlane과 GitHub Actions를 사용하여 iOS 앱에 대한 완전 자동화 프로세스를 갖게되었습니다.
새로운 커밋을 보내면, Google Play 콘솔에서 베타 채널에서 릴리즈가 빌드됩니다. 이 블로그를 개선하기 위해, 피드백이나 질문이 있으시면 martin@__CAPGO_KEEP_0__.app로 연락주세요. martin@capgo.app
장치에서 빌드가 필요하다면, 수동으로 프로비저닝에 추가해야 합니다. 맥에 장치를 연결하고 장치 메뉴를 열어보세요.
장치 ios 메뉴 찾기
식별자 ios 찾기
그 다음에 명령어를 시작하세요:
fastlane register_new_device
그것은 디바이스 이름과 식별자를 설정하라고 묻습니다:

문제가 생긴다면
개발 장치가 테스트할 수 없거나 등등의 문제가 생긴다면 일반적으로 이 문제를 해결할 수 있습니다.
문제가 생기는 것을 막아줄 마법의 명령어가 있습니다:
fastlane match nuke development
fastlane match development
그 다음으로: 프로젝트를 정리하기 위해 Shift(⇧)+Command(⌘)+K를 눌러거나 Product > Clean(프로젝트 폴더를 정리) 선택하세요 (이것이 Clean Build Folder라고 표시될 수 있습니다)
그 다음으로 다시 앱을 디바이스에 설치해 보세요.
감사합니다.
이 블로그는 다음 글을 기반으로 합니다:
자동 Capacitor IOS 빌드에 GitHub 액션을 사용하여 match를 계속하세요
자동 __CAPGO_KEEP_0__ IOS 빌드에 __CAPGO_KEEP_1__ 액션을 사용하여 match를 계속하세요 자동 Capacitor IOS 빌드에 GitHub 액션을 사용하여 match를 계속하세요 __CAPGO_KEEP_0__ CI/CD와 연결하세요 Capgo CI/CD Capgo Native Builds Capgo Native Builds Capgo Integrations Capgo Integrations for the product workflow in Capgo Integrations, CI/CD 통합 CI/CD 통합 구현 세부 사항과 GitHub 액션 통합 GitHub 액션 통합 구현 세부 사항과