auto signing #5
Workflow file for this run
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: Deploy to Firebase [frameworks] | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- feature/1649 | |
jobs: | |
build: | |
runs-on: macos-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup SSH | |
uses: webfactory/[email protected] | |
with: | |
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} | |
- name: Remove existing localisation directory | |
run: rm -rf ${{ github.workspace }}/station.localization | |
- name: Clone localisation submodule | |
run: git clone -b master https://github.com/ruuvi/station.localization.git ${{ github.workspace }}/station.localization | |
- name: Install the Apple certificate and provisioning profiles | |
env: | |
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} | |
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | |
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
run: | | |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode > $CERTIFICATE_PATH | |
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
security list-keychain -d user -s $KEYCHAIN_PATH | |
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles | |
echo -n "${{ secrets.MAIN_APP_ADHOC_PROVISION_PROFILE_BASE64 }}" | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.mobileprovision | |
echo -n "${{ secrets.WIDGETS_APP_ADHOC_PROVISION_PROFILE_BASE64 }}" | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.widgets.mobileprovision | |
echo -n "${{ secrets.INTENTS_APP_ADHOC_PROVISION_PROFILE_BASE64 }}" | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.intents.mobileprovision | |
echo -n "${{ secrets.PNSERVICE_APP_ADHOC_PROVISION_PROFILE_BASE64 }}" | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.pnservice.mobileprovision | |
- name: Increment build number | |
run: | | |
buildNumber=${{ github.run_attempt }} | |
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" ${{ github.workspace }}/station/Resources/Plists/Info.plist | |
- name: Make xcodeproj | |
run: | | |
make xcodeproj_with_frameworks | |
- name: SPM Cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/Library/Developer/Xcode/DerivedData/frameworks*/SourcePackages/ | |
key: ${{ runner.os }}-spm-${{ hashFiles('frameworks.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }} | |
restore-keys: | | |
${{ runner.os }}-spm- | |
- name: Build app | |
run: | | |
uuid=`/usr/libexec/plistbuddy -c Print:UUID /dev/stdin <<< \ | |
\`security cms -D -i ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.widgets.mobileprovision\`` | |
cp -f ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.widgets.mobileprovision \ | |
"$HOME/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision" | |
uuid=`/usr/libexec/plistbuddy -c Print:UUID /dev/stdin <<< \ | |
\`security cms -D -i ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.intents.mobileprovision\`` | |
cp -f ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.intents.mobileprovision \ | |
"$HOME/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision" | |
uuid=`/usr/libexec/plistbuddy -c Print:UUID /dev/stdin <<< \ | |
\`security cms -D -i ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.pnservice.mobileprovision\`` | |
cp -f ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.pnservice.mobileprovision \ | |
"$HOME/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision" | |
uuid=`/usr/libexec/plistbuddy -c Print:UUID /dev/stdin <<< \ | |
\`security cms -D -i ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.mobileprovision\`` | |
cp -f ~/Library/MobileDevice/Provisioning\ Profiles/match_AdHoc_com.ruuvi.station.mobileprovision \ | |
"$HOME/Library/MobileDevice/Provisioning Profiles/$uuid.mobileprovision" | |
xcodebuild -project frameworks.xcodeproj -scheme station -configuration Debug -archivePath ./Build/Station_Dev.xcarchive archive CODE_SIGN_IDENTITY="Apple Distribution: Ruuvi Innovations Oy (4MUYJ4YYH4)" | |
- name: Export IPA | |
env: | |
EXPORT_PLIST: ${{ secrets.ADHOC_EXPORT_OPTIONS }} | |
run: | | |
EXPORT_PLIST_PATH=${{ runner.temp }}/ExportOptions.plist | |
echo -n "$EXPORT_PLIST" | base64 --decode > $EXPORT_PLIST_PATH | |
xcodebuild -exportArchive -archivePath ./Build/Station_Dev.xcarchive -exportOptionsPlist $EXPORT_PLIST_PATH -exportPath ${{ runner.temp }}/export | |
# - name: Distribute to Firebase | |
# run: | | |
# curl -sL https://firebase.tools | bash | |
# firebase appdistribution:distribute ${{ runner.temp }}/export/*.ipa \ | |
# --app ${{ secrets.GOOGLE_APP_ID }} \ | |
# --token ${{ secrets.FIREBASE_REFRESH_TOKEN }} \ | |
# --groups ${{ secrets.ALPHA_TESTERS_GROUP }} \ | |
# --release-notes "Features, enhancements and bug fixes." | |
- name: Zip dSYM files | |
run: | | |
find ${{ runner.temp }}/export -name '*.dSYM' | xargs -I \{\} zip -r \{\}.zip \{\} | |
# - name: Upload dSYM to Firebase | |
# run: | | |
# find ${{ runner.temp }}/export -name '*.dSYM.zip' | xargs -I \{\} firebase crashlytics:upload-symbols --app ${{ secrets.GOOGLE_APP_ID }} -g \{\} | |
- name: Clean up keychain and provisioning profiles | |
if: ${{ always() }} | |
run: | | |
security delete-keychain $RUNNER_TEMP/app-signing.keychain-db | |
rm -rf ~/Library/MobileDevice/Provisioning\ Profiles/* |