This action will archive, export, and upload your project or workspace to App Store Connect (TestFlight). It is designed to run on a containerized VM, such as a GitHub Hosted Runner. If self-hosting, some of these steps may be unnecessary or redundant.
The version of XCode to use, in SemVer. Default is latest stable release: xcode-latest
. See also setup-xcode.
The configuration to archive. Default is Release
. See also xcodebuild
's -configuration
.
The scheme to archive. If left blank, the action will search the project or workspace file for a default scheme. See also xcodebuild
's -scheme
.
The path to the ExportOptions.plist
file, required for -exportArchive
. Will default to ExportOptions.plist
in the ${{ github.workspace }}
directory. See also xcodebuild
's -exportArchive
.
A boolean value that will set the version-number
to the commit depth. If false, nothing happens. See also agvtool
's -new-version
.
A boolean value that will run pod install
if true. If false, nothing happens.
A boolean value that will run xcodebuild -resolvePackageDependencies -clonedSourcePackagesDirPath .
if true. If false, nothing happens.
The base64
representation of your Apple/iOS Distribution Certificate and private key pair.
The password to unlock the Distribution Certificate and private key pair.
The base64
representation of your App Store Provisioning Profile.
The ID of the Authentication Key provided by App Store Connect.
The Issuer ID provided by App Store Connect.
The base64
representation of the private key provided by App Store Connect.
Additionally, an ExportOptions.plist
file must be included in the repository at the location and filename that matches path-to-export-options
.
You can generate one of these by doing a local export in XCode and then copy it into your repository, or use /usr/libexec/PlistBuddy
.
- name: Deploy
uses: vfrascello/[email protected]
with:
xcode-version: '14.0'
configuration: 'Release'
scheme: 'MyScheme'
path-to-export-options: 'ExportOptions.plist'
update-build: true
install-pods: false
resolve-package-dependencies: true
distribution-certificate-p12: ${{ secrets.DISTRIBUTION_CERTIFICATE_P12 }}
distribution-certificate-password: ${{ secrets.DISTRIBUTION_CERTIFICATE_PASSWORD }}
app-store-provisioning-profile: ${{ secrets.APPSTORE_PROVISIONING_PROFILE}}
auth-key-id: ${{ secrets.AUTH_KEY_ID }}
auth-key-issuer-id: ${{ secrets.AUTH_KEY_ISSUER_ID }}
auth-key-p8: ${{ secrets.AUTH_KEY_P8 }}
See action.yml for more details.
This composite action was written by me, Vincent Frascello, but uses actions by other open-source contributors:
Any contributions made under this project will be governed by the MIT License.