본문으로 바로가기
CI/CD

자동 Capacitor IOS 빌드에 GitHub 액션을 사용하여 매치

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

Martin Donadieu

Martin Donadieu

콘텐츠 마케터

자동 Capacitor IOS 빌드에 GitHub 액션을 사용하여 매치

GitHub 액션을 사용하여 매치로 iOS 빌드를 자동화하는 방법

Capacitor 앱에 대한 CI/CD 설정은 복잡하고 시간이 많이 걸립니다. 여기서 필요한 정보를 알려드리겠습니다.

__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__ 빌드의 추가 분량은 분당 크레딧으로 청구됩니다.

CI/CD에서 Capgo 빌드를 설정하세요.

수동 설정 안내서

다음과 같은 작업을 수행하세요:

iOS에 대한 지속적인 배포를 Fastlane과 GitHub 액션을 사용하여 수행합니다.

사전 조건

이 튜토리얼을 계속하기 전에...

  • Fastlane이 설치되어 있어야 합니다. 설치된 개발 머신에 설치되어 있습니다.
  • iOS 개발자 프로그램 회원 가입.
  • 읽고 싶은 마음이 생기셨나요 😆…
  • 많은 개발자 팀이 있는 경우, 그럴 수 있지만, 우리는 fastlane cert 더 간단한 워크플로우를 위해.

가격에 대한 중요한 점

가격 GitHub 액션

https://github.com/features/actions

서비스는 제한에 따라 선택한 머신에 따라 '무료'입니다.
__CAPGO_KEEP_0__을 사용할 예정입니다. macOS __CAPGO_KEEP_0__ 가격과 제한 (이 가격은 튜토리얼이 생성된 시점의 가격이며 미래에 변경될 수 있습니다.)

🔴 요구 사항과 가격에 대한 경고를 받은 후, 만약에 좋다면 계속…

📣 애플 에코시스템의 인증서를 가지고 iTunes Connect 에서 앱을 생성한 것으로 가정하고, Fastlane! 에서 모든 것을 복사합니다.

🤿 이제 시작해 보겠습니다.

포스트에서 따르야 하는 단계

  1. Fastlane Match와 함께 App Store Connect API 사용하기
  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단계 인증이 필요합니다. Apple ID에 대한 추가 보안层는 계정에 대한 액세스를 제한하여 계정에 대한 액세스를 보장합니다.
From 애플 지원

match를 시작하려면 기존 인증서를 취소해야 하지만 걱정하지 마십시오. 새로운 인증서를 직접 받을 것입니다.

요구 사항

App Store Connect API을 사용하려면 Fastlane이 필요로 하는 세 가지 것입니다. 3 발급자 ID.

  1. 키 ID.
  2. 키 파일 또는 키 내용.
  3. Issuer ID.

앱 스토어 연결 API 키 생성

앱 스토어 연결에 관리자 권한이 있어야 키를 생성할 수 있습니다. 관리자 권한이 없다면, 이 문서를 관련 사람에게 알려주고 다음 단계를 따라야 합니다.

1 — 앱 스토어 연결에 로그인하세요. 앱 스토어 연결.

2 — 사용자 및 액세스 앱 스토어 연결 사용자 액세스.

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

앱 스토어 연결 __CAPGO_KEEP_0__ 통합

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

앱 스토어 연결 API 키 생성

App Store Connect API keys create

1 — 로그인하세요.

App Store Connect API 키 생성 이름

6 — 액세스 아래에서 키에 대한 역할을 선택하세요. 키에 적용되는 역할은 팀 내 사용자에 대한 역할과 동일합니다. 자세한 내용은 역할 권한. 우리는 앱 매니저.

7 — Generate을 클릭하세요.

API 키의 액세스는 특정 앱에 제한되지 않습니다.

새 키의 이름, 키 ID, 다운로드 링크 및 기타 정보가 페이지에 나타납니다.

App Store Connect 키 다운로드

여기서 세 가지 필요한 정보를 모두 가져올 수 있습니다.
<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에서 앱의 릴리스 구성에 대한 배포 프로파일을 업데이트하세요.

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__ 비밀 설정

Set GitHub secrets

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__

커밋으로 시작

몇 분 후에 빌드가 App Store Connect 대시보드에 표시되어야 합니다.

테스트 플라이트 대시보드

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

가능합니다. 그리고 그것은 매우 쉬워요.

개인 저장소가 있다고 가정해 보겠습니다. 그리고 무료 플랜의 분량을 모두 사용했으며 새로운 릴리즈에 대해 돈을 지불하지 않으려는 경우, 또는 애플리케이션을 수동으로 제출하는 것을 선호하는 경우.

그럼 가보죠 좋아요, 먼저 __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 closed_beta

Fastlane과 __CAPGO_KEEP_0__ Actions을 사용하여 iOS 앱에 대한 완전히 자동화된 프로세스를 구축했습니다. 축하합니다.

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

__CAPGO_KEEP_0__ 기기에서 빌드 capgo 기기에서 빌드

__CAPGO_KEEP_0__ 기기에서 빌드

만약 장치에서 빌드해야 한다면, 프로비전닝에 수동으로 추가해야 합니다. 장치를 맥에 연결하고 장치 메뉴를 열어보세요 장치 찾기 ios 메뉴 그런 다음 식별자를 복사하세요 식별자 찾기 ios 그 다음 명령어를 실행하세요: fastlane register_new_device 장치를 식별하고 이름을 설정하라고 묻습니다: 식별자 설정 ios

문제가 발생했다면

개발 장치와 관련된 문제가 발생하거나 테스트가 불가능한 경우, 일반적으로 이 방법이 해결됩니다.

테스트 장치와 관련된 문제를 해결하는 마법의 명령어가 있습니다:

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.

Capacitor 앱의 실시간 업데이트

웹层 버그가 활성화된 경우 Capgo를 통해修정 Ship 대기하는 앱 스토어 승인일을 대신하여. 사용자는 배경에서 업데이트를 받으면 native 변경 사항은 일반적인 검토 경로에 남아있다.

시작하기

블로그에서 최신 뉴스

Capgo는 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.