Xcode Builder

July 18, 2026 · View on GitHub

English | 简体中文

Xcode Builder supports iOS and macOS projects and runs only on macOS with the Xcode command-line tools installed.

Current Integration

PlatformBuild resultSubsequent packaging
iOS.xcarchive, IPAIPA packager
macOS.appDMG, PKG, and ZIP packagers

Xcode Builder is connected to the package process, but the top-level fastforge package command does not yet expose required arguments such as project and scheme. Use it through a local workflow's build-args for now.

macOS

- name: Package macOS app
  uses: fastforge/package
  with:
    platform: macos
    target: zip
    output: artifacts/
    build-args: '{"project":"macos/MyApp.xcodeproj","scheme":"MyApp","configuration":"Release","product-name":"MyApp"}'

The builder runs xcodebuild, then searches the build products directory for an .app.

ArgumentRequiredDescription
projectYesPath to .xcodeproj
schemeYesXcode scheme
configurationNoDefaults to Release
derived-data-pathNoDerived Data output directory
product-nameNo.app name to match
sdkNoPassed to xcodebuild -sdk
xcconfig-overrideNoAdditional xcconfig file
extra-flagsNoArray of additional arguments

iOS

- name: Package iOS app
  uses: fastforge/package
  with:
    platform: ios
    target: ipa
    output: artifacts/
    build-args: '{"project":"ios/MyApp.xcodeproj","scheme":"MyApp","configuration":"Release","export-options-plist":"ios/ExportOptions.plist"}'

An iOS build has two stages:

  1. Run xcodebuild archive to produce an .xcarchive.
  2. Run xcodebuild -exportArchive to export the IPA.
ArgumentRequiredDescription
projectYesPath to .xcodeproj
schemeYesXcode scheme
configurationNoDefaults to Release
export-options-plistOne requiredPath to an ExportOptions plist
export-methodOne requiredGenerate temporary export configuration when no plist is supplied
archive-pathNoDefaults to ios/build/Runner.xcarchive
export-pathNoDefaults to ios/build/ipa
derived-data-pathNoDerived Data output directory
xcconfig-overrideNoAdditional xcconfig file
extra-flagsNoArray of additional arguments

Provide at least one of export-options-plist and export-method.