Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yukiarrr/ios-build-action
Build iOS project (.xcodeproj, .xcworkspace), and export ipa
https://github.com/yukiarrr/ios-build-action
github-actions ios
Last synced: about 2 months ago
JSON representation
Build iOS project (.xcodeproj, .xcworkspace), and export ipa
- Host: GitHub
- URL: https://github.com/yukiarrr/ios-build-action
- Owner: yukiarrr
- License: mit
- Created: 2020-02-21T16:50:42.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-06-10T13:35:21.000Z (7 months ago)
- Last Synced: 2024-10-21T02:25:50.580Z (2 months ago)
- Topics: github-actions, ios
- Language: Ruby
- Homepage:
- Size: 3.32 MB
- Stars: 284
- Watchers: 4
- Forks: 137
- Open Issues: 40
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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`](#export-options) to specify the provisioning profile to use for each executable in your app.
```yaml
- 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`](#export-options) to specify the provisioning profile to use for each executable in your app.
```yaml
- 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)
```yaml
- uses: yukiarrr/[email protected]
with:
update-targets: |
MyApp
YourApp
```### `disable-targets`
Deprecated, use [`update-targets`](#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 one
- `testflight` - increment the latest TestFlight build number by one. If this is specified you must also provide `bundle-identifier`, `app-store-connect-api-key-id`, `app-store-connect-api-key-issuer-id` and `app-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
```yaml
- 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
```yaml
- 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
```yaml
- 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
```