iOS Build Action
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/[email protected]
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/[email protected]
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/[email protected]
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-id
andapp-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/[email protected]
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/[email protected]
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/[email protected]
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