__CAPGO_KEEP_0__ 메인 콘텐츠로 바로가기
CI/CD

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

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

Martin Donadieu

Martin Donadieu

콘텐츠 마케터

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

iOS GitHub 빌드 자동화

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

우리는 __CAPGO_KEEP_0__ 빌드 Capgo 빌드와 Capgo CLI 자연스러운 Capacitor 빌드 이 Fastlane Match 가이드는 기존 GitHub 액션 PIPELINE을 유지 관리하는 팀을 위해 유지됩니다. 그러나 새로운 iOS 빌드는 Fastlane, Match 저장소, Xcode 러너, 인증서, 업로드 스크립트를 유지 관리하지 않도록 Capgo CLI를 사용해야 합니다.

Capgo Build for CI/CD by Capgo

__CAPGO_KEEP_1__에서 CI/CD를 위한 __CAPGO_KEEP_0__ 빌드 Capgo Build __CAPGO_KEEP_0__ 빌드

  • __CAPGO_KEEP_0__ 빌드는 CI/CD PIPELINE에서 이미 존재하는 signed native iOS 빌드를 실행합니다: : 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 가격 GitHub

https://github.com/features/actions

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

🔴 요구 사항과 가격에 대해 경고된 후, 좋으면 계속…

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

Let’s dive in 🤿

포스트에서 따르면의 단계

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

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

2021년 2월 이후로 모든 사용자는 App Store Connect에 로그인하기 위해 2단계 인증 또는 2단계 인증이 필요합니다. 이 추가 보안 layer는 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 — Admin 권한이 있는 사용자를 선택합니다..

4 — Admin 권한을 부여합니다. 5 — App Store Connect에서 키 생성을 클릭합니다..

애플 스토어 연결 사용자 접근

3 — 통합 탭을 선택하십시오.

애플 스토어 연결 API 통합

4 — Generate API Key 또는 (+) 버튼을 클릭하십시오.

애플 스토어 연결 API 키 생성

5 — 키 이름을 입력하십시오. 키 이름은 키 자체의 일부가 아니며, 사용자만의 참조용입니다.

애플 스토어 연결 API 키 이름

6 — 액세스 아래에서 키에 대한 역할을 선택하십시오. 키에 대한 역할은 팀 내 사용자에 대한 역할과 동일합니다. 자세한 내용은 역할 권한을 참조하십시오. 우리는 애플 매니저.

를 추천합니다. 7 — Generate 버튼을 클릭하십시오.

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 문서. CI 환경에서 가장 쉽게 환경 변수를 설정할 수 있는 방법을 보여주고 싶었습니다.

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

2. Fastlane 파일 복사

Fastlane은 안드로이드 스튜디오를 사용하여 모바일 개발을 자동화하는 Ruby 라이브러리입니다. 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 match 설정

Fastlane match iOS의 __CAPGO_KEEP_0__ 인증서 관리를 위한 새로운 접근 방식입니다. Fastlane match은 팀이 iOS 앱의 필요한 인증서와 프로비전 프로파일을 관리하는 것을 쉽게 해줍니다. is a new approach to iOS’s code signing. Fastlane match makes it easy for teams to manage the required certificates and provisioning profiles for your iOS apps.

, 예를 들어, __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 have used for running your CI/CD workflow. From experience, it takes about 10–15 minutes before a build can be processed in App Store Connect.

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

가격에 대한 걱정은 제가 개인 프로젝트에 대해 하는 것과 같습니다. 가격에 대한 걱정과 같습니다. 가격에 대한 걱정은 제가 개인 프로젝트에 대해 하는 것과 같습니다. skip_waiting_for_build_processing 이것은 무엇입니까? 빌드가 처리된 후에 앱 스토어 연결에 대한 준수성을 수동으로 업데이트해야 하며, 사용자에게 빌드를 배포하기 위해. true.

이것은 빌드 분량을 절약하기 위해 개인 프로젝트에만 사용할 수 있는 선택적 매개변수입니다. 무료 프로젝트의 경우, 이 문제는 전혀 없습니다.

가격 정보 3. __CAPGO_KEEP_0__ 액션 설정.

GitHub 비밀 설정

Configure GitHub secrets

그것은 비밀일 뿐입니다 – 그것은 프로젝트의 비밀에서 오는 것입니다. ENV 🤦

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를 초기화할 때 assign한 패스 프레이즈가 사용됩니다. 이 패스 프레이스로 인증서와 프로비전 프로파일을 암호화합니다.

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, 체크하세요

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

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

Create a GitHub workflow directory.

cd .github/workflows

Inside the 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 태그자동화 태그를 필요로 하신다면, 자동화 빌드 및 릴리즈와 GitHub 먼저.

이후 워크플로우는 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.

기반만 필요합니다. 오래된 Cordova 모듈을 사용할 수 있지만 __CAPGO_KEEP_1__ JS 플러그인을 선호합니다.

커밋을 생성하세요

작업을 커밋을 생성하면, 저장소 내의 활성 워크플로우를 볼 수 있습니다.워크플로우를 트리거하세요

브랜치에 새로운 커밋을 푸시하면

또는 main 워크플로우를 트리거하는 데 사용할 수 있습니다. development 커밋 시작

몇 분 후에, App Store Connect 대시보드에 빌드가 사용 가능합니다.

테스트 플라이트 대시보드

로컬 머신에서 배포할 수 있나요?

__CAPGO_KEEP_0__

Yes, you can, and it is effortless.

Imagine that you have a private repository, and you have used up the minutes of the free plan and you do not want to pay for new releases, or maybe you prefer to submit the application manually.

Let’s go for it

Ok, first we need to create in my_project_path/fastlane path a file called .env, just in the same path as Fastfile, to be able to create the same secret properties found in our _GitHub, a_s below:

__CAPGO_KEEP_0__ 로컬 머신에서 배포하기 위한 .env 파일

지금은 터미널 에서 로컬 머신에서 Fastlane 을 실행할 수 있습니다:

fastlane closed_beta

❌ .env 파일에 대한 필수 사항, 이 데이터를 공개하는 것을 피하기 위해, 우리는 .gitignore 에 추가해야 합니다. 예를 들어: ❌ 로컬 머신에서 __CAPGO_KEEP_0__ Actions와 동일하게 작동해야 합니다. 🍻 __CAPGO_KEEP_0__ 로컬 머신에서 배포하기 위한 .env 파일지금은

fastlane/*.env

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

로컬 Fastlane 실행

터미널 실행: $ Fastlane closed_beta

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

새로운 커밋을 보내면, Google Play 콘솔에서 베타 채널에서 릴리스가 빌드됩니다. 이 블로그를 개선하기 위해, 피드백이나 질문, 제안이 있으시면 이메일로 알려주세요. martin@capgo.app

장치에서 빌드

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

문제가 있으시면

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

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

fastlane match nuke development
fastlane match development

그 다음: 프로젝트를 정리하기 위해 Shift(⇧)+Command(⌘) 키를 누르거나 Product > Clean (이름이 'Clean Build Folder'로 표시될 수 있음)를 선택합니다.

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

감사합니다.

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

Keep going from Automatic Capacitor IOS build with GitHub actions using match

If you are using 자동 Capacitor IOS 빌드와 GitHub 액션을 사용하여 CI/CD 자동화 계획을 세우려면 __CAPGO_KEEP_0__ CI/CD와 연결하세요. Capgo CI/CD Capgo CI/CD에서 제품 워크플로우 Capgo Native Builds Capgo Native Builds에서 제품 워크플로우 Capgo Integrations Capgo Integrations에서 제품 워크플로우 CI/CD Integration CI/CD Integration의 구현 세부 사항 GitHub Actions Integration GitHub 액션 통합 구현 세부 사항에 대해.

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

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

시작하기

블로그에서 최신 뉴스

Capgo은 당신이 완벽한 전문가 모바일 앱을 만들기 위해 필요한 모든 통찰력을 제공합니다.