Last active
April 10, 2023 05:58
-
-
Save paulz/d5570689dd98af0aee83dd5ed7f6d0b4 to your computer and use it in GitHub Desktop.
TestFlight via fastlane deployment GitHub Actions workflow
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: TestFlight | |
on: | |
workflow_dispatch: | |
inputs: | |
changelog: | |
type: string | |
description: What to test | |
required: true | |
push: | |
branches: | |
- experiment/test-flight/** | |
defaults: | |
run: | |
shell: zsh --login --errexit --pipefail {0} | |
env: | |
NSUnbufferedIO: YES # display xcodebuild output in the correct order for github action log | |
version_offset: 0 # Offset build version number from Github run number | |
concurrency: | |
group: one-test-flight-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
xcode-archive: | |
name: Build iOS Release | |
timeout-minutes: 30 | |
runs-on: self-hosted | |
steps: | |
- name: Show what to test | |
run: echo "::notice::What to test - ${{ github.event.inputs.changelog }}" | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Resolve Package Dependencies | |
run: scripts/resolve-swift-package-dependencies.zsh /tmp/spm-clone/${{ runner.name }} | |
- name: Set version number | |
run: | | |
next_version=$((GITHUB_RUN_NUMBER+version_offset)) | |
agvtool new-version $next_version | |
echo "::notice::$(agvtool what-version | tr -d '\n')" | |
marketing_version=$(xcodebuild -showBuildSettings | grep MARKETING_VERSION | tr -d 'MARKETING_VERSION =') | |
echo "TAG_NAME=$marketing_version-$next_version" >> $GITHUB_ENV | |
echo "ARCHIVE=MyApp-$next_version.xcarchive" >> $GITHUB_ENV | |
- name: Unlock Keychain # to workaround: https://github.com/fastlane/fastlane/issues/15185#issuecomment-595977936 | |
run: | | |
security unlock-keychain -p ${{ secrets.KEYCHAIN_PASSWORD }} login.keychain | |
security show-keychain-info login.keychain | |
- name: Install Ruby Gems | |
run: | | |
bundle config set --local path '/tmp/gem-bundle/${{ runner.name }}' | |
bundle install | |
- name: Build, Archive and Release | |
env: | |
FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 180 | |
run: > | |
bundle exec fastlane release | |
archive_path:${{ env.ARCHIVE }} | |
packages_path:/tmp/spm-clone/${{ runner.name }} | |
changelog:"${{ github.event.inputs.changelog }}" | |
- name: Upload fastlane logs to Artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
path: MyBinary-MyApp.log | |
name: fastlane-MyBinary-MyApp.log | |
- name: Save Archive to Xcode Organizer | |
run: | | |
open $ARCHIVE | |
find -s ~/Library/Developer/Xcode/Archives/ -name \*.xcarchive | |
- name: Compress Xcode Archive # due to: https://github.com/actions/upload-artifact/issues/326 | |
if: always() | |
run: > | |
tar --use-compress-program pbzip2 | |
--check-links --verbose | |
--create --file $ARCHIVE.tar.bz2 $ARCHIVE || true | |
- name: Upload Xcode archive to Artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
path: ${{ env.ARCHIVE }}.tar.bz2 | |
name: ${{ env.ARCHIVE }} | |
- name: GitHub Tag | |
uses: mathieudutour/github-tag-action@v6.1 | |
with: | |
custom_tag: ${{ env.TAG_NAME }} | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload Debug Symbols to Crashlytics | |
run: > | |
/tmp/spm-clone/${{ runner.name }}/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols | |
--google-service-plist MyApp/GoogleService-Info.plist | |
--platform ios $ARCHIVE/dSYMs |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment