Automatic iOS Builds with GitHub Actions using Match
Setting up CI/CD for Capacitor apps can be complex and time-consuming. Here’s what you need to know:
새로운 빌드에 권장: Capgo 빌드를 사용하세요
현재는 __CAPGO_KEEP_0__ 빌드를 사용하는 것을 권장합니다 Capgo Capgo CLI Capacitor Capacitor 이 Fastlane Match 가이드는 기존 GitHub Actions pipeline을 유지 관리하는 팀을 위해 보존되지만, 새로운 iOS 빌드는 Fastlane, Match 저장소, Xcode 러너, 인증서 및 업로드 스크립트를 유지 관리하지 않도록 Capgo CLI을 사용하여야 합니다.
Capgo Capgo
Fastlane Match, Xcode 러너, 인증서, 배포 프로파일 및 업로드 스크립트 유지 관리를 생략하세요. Capgo __CAPGO_KEEP_0__ __CAPGO_KEEP_1__
- __CAPGO_KEEP_0__ Build는 다음을 수행합니다:: Trigger Capgo Build from GitHub Actions, GitLab CI, Jenkins, or local scripts after your web build and
npx cap sync. - : __CAPGO_KEEP_0__ Build를 __CAPGO_KEEP_1__ Actions, GitLab CI, Jenkins, 또는 로컬 스크립트에서 웹 빌드 후에 트리거하세요.CI 비밀에서 서명
- : App Store Connect 키, 인증서, 배포 프로파일, 비밀번호 및 팀 ID를 CI 비밀에서 유지하세요. Capgo 빌드는 유지 관리되는 Apple 빌드 환경을 제공하므로 macOS 실행자, Xcode 이미지를 관리하거나 Fastlane, Match 저장소와 같은 것을 관리할 필요가 없습니다.
- Artifact 및 제출: Capgo CLI을 통해 다운로드 한 서명된 Artifact를 QA에 제출하거나 릴리스 빌드를 제출할 수 있습니다.
가격
- Capgo 플랜은 월 $12에 시작됩니다.
- __CAPGO_KEEP_0__ 플랜은 월 $12에 시작됩니다.
- 추가 빌드 분량은 분당 크레딧으로 청구됩니다.
수동 설정 안내서
다음과 같은 단계를 수행하세요:
iOS에 대한 지속적인 배포를 위해 Fastlane과 GitHub Actions을 사용하여 Match를 사용합니다.
사전 조건
이 튜토리얼을 계속하기 전에…
- 개발 환경에 Fastlane이 설치되어 있는지 확인하세요. 설치되어 개발 환경에 Fastlane이 설치되어 있는지 확인하세요.
- iOS 개발자 프로그램 회원입니다.
- 읽고 싶은 마음이 생기셨나요…
- 많은 개발자 팀이 있습니다. 그렇지 않다면 더 단순한 워크플로우를 위해 fastlane cert 을 사용하는 것을 추천합니다.
가격에 대한 중요한 정보

https://github.com/features/actions
서비스는 제한에 따라 선택한 기기에 따라 '무료'입니다.
우리는 다음을 사용할 것입니다 macOS 기기 가격과 제한을 볼 수 있습니다 (가격은 튜토리얼이 작성된 시점의 가격으로, 미래에 변경될 수 있습니다)
🔴 요구 사항과 가격에 대해 경고한 후, 계속하려면 좋습니다…
📣 애플 에코 시스템의 인증서가 있는 iTunes Connect 앱이 있다고 가정합니다. Fastlane이 모든 것을 복사합니다!
들어가 봅시다 🤿
포스트에서 따르는 단계
- App Store Connect API을 사용하는 Fastlane Match
- 요구 사항
- App Store Connect API 키 생성
- App Store Connect API 키 사용
- 파일 복사
- Fastlane match 설정
1. 2021년 2월 이후 App Store Connect API에 Fastlane Match를 사용하기 위해
2021년 2월 이후 App Store Connect에 로그인하는 모든 사용자는 2단계 인증 또는 2단계 인증이 필요합니다. 이 추가 보안 기능은 Apple ID에 대한 보안을 강화하여 계정에 대한 액세스를 제한합니다.
From Apple Support
match를 사용하기 위해 시작하는 것은 기존 인증서를 취소해야 하는데, 걱정하지 마세요. 새로운 인증서를 직접 받을 수 있습니다.
요구 사항
App Store Connect API를 사용하기 위해 Fastlane을 사용하려면 세 가지 인증서 발급자 ID.
- three
- API 키 ID.
- API 키 파일 또는 API 키 내용.
App Store Connect API 키 생성
App Store Connect API 키를 생성하려면 App Store Connect에서 Admin 권한이 필요합니다. 권한이 없다면 해당 권한을 가진 사람에게 이 글을 알려주고 다음 지침을 따라야 합니다.
1 — App Store Connect에 로그인합니다. App Store Connect.
2 — 사용자 및 액세스 App Store Connect 사용자 액세스.

App Store Connect __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에 입력하는 방법은 여러 가지가 있습니다. Fastlane 문서를 참조하세요. app_store_connect_api_key. Fastlane 문서 .Fastlane을 App Store Connect __CAPGO_KEEP_0__ 키로 관리할 수 있습니다. 좋습니다!
Now we can manage Fastlane with the App Store Connect API key, great!
Fastlane은 Ruby 라이브러리로 모바일 개발을 자동화하는 데 사용됩니다. Fastlane을 사용하면 Android Studio에서 수행하는 일련의 작업을 자동화할 수 있습니다. Fastlane을 사용하면 여러 작업을 수행할 수 있지만, 이 튜토리얼에서는 Fastlane의 핵심 기능만 사용할 것입니다.
Fastlane은 Android Studio에서 수행하는 일련의 작업을 자동화하는 데 사용됩니다.
프로젝트의 루트 폴더에 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 앱에 필요한 인증서와 배포 프로파일을 관리하는 것을 쉽게 해줍니다.
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 및
_git_url_HTTPS URL로 된 인증서 저장소의 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에 대한 인증 토큰을 생성하는 데 도움이 될 수 있습니다. 인증서와 배포 프로파일은 인증서 저장소의 리소스로 업로드됩니다. 앱 스토어 연결 인증서
마지막으로,

인증 토큰을 git에 생성하는 방법에 대한 도움이 필요합니다. project Xcode에서, 앱의 릴리스 구성에 대한 프로비저닝 프로파일을 업데이트하세요.

💡 몇 가지 주의할 점이 있습니다.
MATCH
CI/CD가 인증서와 프로비저닝 프로파일을 가져올 수 있도록 인증서 저장소에 접근할 수 있어야 합니다. 개인 접근 토큰을 생성하여 (이전 사용) private 저장소에 접근하거나 읽기 권한이 있는 범위가 있는 토큰을 사용하세요.
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에서 var가 설정되며, 파일에 하드 코딩되지 않습니다.
빌드 처리
GitHub Actions에서 CI/CD 워크플로우를 실행하는 데 사용한 분의 수에 따라 요금이 청구됩니다. App Store Connect에서 빌드를 처리하는 데 10-15분 정도 걸립니다. 개인 프로젝트의 경우, 빌드당 예상 비용은 $0.08/분 x 15분 = $1.2
, 또는 프로젝트의 구성 또는 의존성에 따라 더 높을 수 있습니다. 가격에 대한 걱정과 마찬가지로 개인 프로젝트에 대한 걱정과 같은 경우, 빌드 비용을 줄이기 위해 __CAPGO_KEEP_0__ Actions를 유지할 수 있습니다.빌드 처리 시간
__CAPGO_KEEP_0__ Actions에서 요금은 분당 사용한 분의 수에 따라 청구됩니다. App Store Connect에서 빌드를 처리하는 데 10-15분 정도 걸립니다. 개인 프로젝트의 경우, 빌드당 예상 비용은 $0.08/분 x 15분 = $1.2, 또는 프로젝트의 구성 또는 의존성에 따라 더 높을 수 있습니다. skip_waiting_for_build_processing 까지 true.
무엇이 문제일까? 앱을 App Store Connect에 업데이트하려면 빌드가 처리된 후에 사용자에게 빌드를 배포할 수 있게 해줘야 하는데, 그건 수동으로 해야 한다.
이건 빌드 분량을 절약하기 위해 옵션입니다. 비공개 프로젝트에 대해 빌드 분량을 절약하고 싶다면, 이 옵션을 사용해도 좋습니다. 무료 프로젝트라면 전혀 문제가 되지 않을 것입니다. 가격.
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를 초기화할 때 assign한 패스 프레이즈가 사용됩니다. 인증서 및 배포 프로파일을 암호화하기 위해.
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 — 애플 스토어 연결 API 키 🔺 발급자 ID.
12. APPLE_KEY_CONTENT — 애플 스토어 연결 API 키 🔺 키 파일 또는 키 내용. .p8, 앱플로우 인증 정보를 비교하거나 이관할 때 사용하는 Capgo UI의 HTML 텍스트 조각 (부모 키 `appflow_credentials_capgo_li1`). 페이지/영역: 앱플로우 비교/이관 마케팅 복사본. 역할: 목록 항목. 본문에서: ionic-appflow.astro 페이지. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지. 메시지 키 `appflow_credentials_capgo_li1` (Appflow Credentials Capgo Li1). | 앱플로우 인증 정보를 비교하거나 이관할 때 사용하는 Capgo UI의 HTML 텍스트 조각 (부모 키 `appflow_credentials_desc`). 페이지/영역: 앱플로우 비교/이관 마케팅 복사본. 역할: 장문 마케팅 또는 법률 문단. 본문에서: ionic-appflow.astro 페이지. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지. 메시지 키 `appflow_credentials_desc` (Appflow Credentials Desc).
13. CERTIFICATE_STORE_URL 체크 하세요. https://github.com/***/fastlane_match.git)
https://GitHub.com/***/fastlane_match.git
Create a GitHub workflow directory.
cd .github/workflows
Capgo 워크플로우 디렉토리를 생성하세요. workflow 폴더 내에서 파일을 생성하고 다음을 추가하세요. build-upload-ios.yml이 워크플로우는 각 Capgo 빌드 후에 트리거되어야 합니다.
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 태그자동화된 태그를 필요로 하시면, 자동 빌드 및 릴리즈와 GitHub 액션 첫 번째 단계입니다.
그 다음 워크플로가 NodeJS 의존성을拉고, 설치하고 자바스크립트 앱을 빌드합니다.
새로운 커밋을 보내면 매번 테스트 플라이트에서 릴리즈가 빌드됩니다.
앱은 이오닉을 사용하지 않아도 됩니다. 단, Capacitor 베이스만 필수입니다. 오래된 코르도바 모듈을 사용할 수 있지만 Capacitor 자바스크립트 플러그인은 선호됩니다.
5. 워크플로 트리거
커밋 생성
작업 커밋커밋을 생성하면, 저장소에서 활성화된 워크플로를 볼 수 있습니다.
작업 흐름을 트리거하세요.
새로 업데이트된 커밋을 branch로 푸시하세요. main 또는 development Capacitor live-update alternatives 비교 페이지. 역할: 장기 마케팅 또는 법적 문단. Seen in: page alternatives.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 보존하세요. Message key `alternatives_cta_questions` (Alternatives CTA Questions).

Capawesome 비교 페이지. 역할: 장기 마케팅 또는 법적 문단. Seen in: page capwesome.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 보존하세요. Message key `capwesome_cta_questions` (Capwesome CTA Questions).

Appflow 비교/이동 마케팅 복사본. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. Seen in: page ionic-appflow.astro, page ionic-enterprise-plugins.astro, page solutions/ionic-enterprise-plugins.astro. Message key `appflow_plugins_or` (Appflow Plugins Or).
작업 흐름을 트리거하세요.
커밋 시작
몇 분 후에, 빌드는 App Store Connect 대시보드에 표시되어야 합니다.
테스트 플라이트 대시보드입니다. my_project_path/fastlane path a file called 파일 이름 just in the same path as Fastfile to be able to create the same secret 속성을 찾을 수 있는 _GitHub, a_s 아래에 있습니다.
.env 파일을 로컬 머신에서 배포하기 위해
Now, you can go to the 터미널 and launch the 빠른 라인 컴퓨터에서:
fastlane closed_beta
❌ .env 파일에 대한 필수 사항 파일, 데이터를 공개하지 않으려면, .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. 🍻

새로운 커밋을 보내면, Google Play 콘솔에서 베타 채널에 릴리스가 빌드됩니다. 이 블로그를 개선하기 위해, 피드백이나 질문이 있으시면 이메일로 알려주세요.
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
장치에서 빌드
장치에서 빌드가 필요하다면, 프로비전닝에 수동으로 추가해야 합니다.
Mac에 장치 연결하고 장치 메뉴 열기
그런 다음 식별자 복사
그 다음 명령어 시작:
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로 계속 진행하세요. Automatic Capacitor IOS build with GitHub actions using match 자동 __CAPGO_KEEP_0__ IOS 빌드를 __CAPGO_KEEP_1__ 액션을 사용하여 match로 계속 진행하세요. Capgo CI/CD와 연결하세요. Capgo 제품 워크플로우에서 CI/CD 에서 Capgo Capgo 네이티브 빌드 Capgo 제품 워크플로우에서 Capgo 네이티브 빌드에서 Capgo 통합 Capgo 제품 워크플로우에서 Capgo 통합에서 CI/CD 통합 Capgo 빌더 / 네이티브 클라우드 빌드 제품 페이지에서 implementation detail 에서 CI/CD 통합, 그리고 GitHub 액션 통합 Capgo 제품 워크플로우에서 implementation detail 에서 GitHub 액션 통합에서