iOS Build Action
May 23, 2026 ยท View on GitHub
This action build iOS project. (.xcodeproj, .xcworkspace)
And can export to ipa, so it can be continuously delivered to DeployGate and TestFlight.
self-hosted is also supported. If you use self-hosted, install Xcode.
Inputs
p12
You can add a single p12 key+cert file with p12-base64 (p12-path), or if you have key and cert in separate files you can add them with p12-key-base64 (p12-key-path) and p12-cer-base64 (p12-cer-path). One of the two options is required.
p12-base64
Required if single file: Base64 encoded p12 file (key + cert).
p12-key-base64
Required if split key/cert: Base64 encoded p12 key file.
p12-cer-base64
Required if split key/cert: Base64 encoded certificate for the p12 key.
p12-path
Required if single file: p12 path (key + cert).
p12-key-path
Required if split key/cert: p12 key path.
p12-cer-path
Required if split key/cert: Certificate path for the p12 key.
mobileprovision
mobileprovision-base64
Required: Base64 encoded mobileprovision file. If you want to specify multiple files, you need to input in multiple lines and then use export-options to specify the provisioning profile to use for each executable in your app.
- uses: yukiarrr/ios-build-action@v1.13.0
with:
mobileprovision-base64: |
${{ secrets.MY_MOBILEPROVISION_BASE64 }}
${{ secrets.YOUR_MOBILEPROVISION_BASE64 }}
Also note, when creating base64 encoded inputs, make sure they don't contain newlines, e.g.
openssl base64 -in MyAppProvisioning.mobileprovision -A
mobileprovision-path
Required: mobileprovision path. If you want to specify multiple files, you need to input in multiple lines and then use export-options to specify the provisioning profile to use for each executable in your app.
- uses: yukiarrr/ios-build-action@v1.13.0
with:
mobileprovision-path: |
ios-build-1.mobileprovision
ios-build-2.mobileprovision
project-path
Required: .xcodeproj path.
code-signing-identity
Required: For example, "iOS Distribution".
team-id
Required: Team id.
workspace-path
.xcworkspace path. Default "".
export-method
Choose "app-store", "ad-hoc", "package" "enterprise", "development", or "developer-id". Default "app-store".
configuration
For example, "Debug", "Release". Default "Release".
scheme
For example, "MyScheme".
certificate-password
Certificate password. Default "".
output-path
Output path of ipa. Default "output.ipa".
update-targets
Targets to be updated with mobileprovision, code signing identity, etc. Split on new lines. Default "". (default to all targets)
- uses: yukiarrr/ios-build-action@v1.13.0
with:
update-targets: |
MyApp
YourApp
disable-targets
Deprecated, use update-targets instead.
These targets will not use automatic code signing and instead use the identity specified in other inputs. Input targets separated by ",". For example, "MyApp,YourApp". Default "". (default to all targets)
export-options
Path to an export options plist. Default "".
cloned-source-packages-path
Path for Swift Package Manager dependencies. Default "".
entitlements-file-path
Path to your entitlements file. Default "".
build-sdk
The SDK that should be used for building the application. Default "". For example, "iOS 11.1".
build-destination
Use a custom destination for building the app. Default "". For example, "generic/platform=iOS".
build-path
Use a custom build path for building the app. Default "/Users/{user}/Library/Developer/Xcode/Archives/{date}". For example, "./archive".
increment-version-number
Increment the version number of your project. Supports "patch", "minor", "major" or a specific version number. Default "".
increment-build-number
Increment the build number before building the application. Default "".
true- automatically increment the project build number by onetestflight- increment the latest TestFlight build number by one. If this is specified you must also providebundle-identifier,app-store-connect-api-key-id,app-store-connect-api-key-issuer-idandapp-store-connect-api-key-base64- a specific build number e.g.
75
bundle-identifier
Application bundle identifier. Default "".
app-store-connect-api-key-id
App Store Connect API Key ID. Default "".
app-store-connect-api-key-issuer-id
App Store Connect API Key Issuer ID. Default "".
app-store-connect-api-key-base64
Base64 encoded App Store Connect API Key. Default "".
custom-keychain-name
Custom keychain name. Default ios-build.keychain
Contributions Welcome!
If you have any other inputs you'd like to add, feel free to create PR.
Welcome your contributions!
Example usage
single p12
- uses: yukiarrr/ios-build-action@v1.13.0
with:
project-path: Unity-iPhone.xcodeproj
p12-base64: ${{ secrets.P12_BASE64 }}
mobileprovision-base64: ${{ secrets.MOBILEPROVISION_BASE64 }}
code-signing-identity: ${{ secrets.CODE_SIGNING_IDENTITY }}
team-id: ${{ secrets.TEAM_ID }}
workspace-path: Unity-iPhone.xcworkspace # optional
key and cert
- uses: yukiarrr/ios-build-action@v1.13.0
with:
project-path: Unity-iPhone.xcodeproj
p12-key-base64: ${{ secrets.P12_KEY_BASE64 }}
p12-cer-base64: ${{ secrets.P12_CER_BASE64 }}
mobileprovision-base64: ${{ secrets.MOBILEPROVISION_BASE64 }}
code-signing-identity: ${{ secrets.CODE_SIGNING_IDENTITY }}
team-id: ${{ secrets.TEAM_ID }}
workspace-path: Unity-iPhone.xcworkspace # optional
custom keychain name
- uses: yukiarrr/ios-build-action@v1.13.0
with:
custom-keychain-name: my-ios-build.keychin # or {commit-hash}-ios-build.keychain
project-path: Unity-iPhone.xcodeproj
p12-key-base64: ${{ secrets.P12_KEY_BASE64 }}
p12-cer-base64: ${{ secrets.P12_CER_BASE64 }}
mobileprovision-base64: ${{ secrets.MOBILEPROVISION_BASE64 }}
code-signing-identity: ${{ secrets.CODE_SIGNING_IDENTITY }}
team-id: ${{ secrets.TEAM_ID }}
workspace-path: Unity-iPhone.xcworkspace # optional