Skip to content

[Merge] pull request #168 from Team-Wable/develop #31

[Merge] pull request #168 from Team-Wable/develop

[Merge] pull request #168 from Team-Wable/develop #31

Workflow file for this run

name: Archive and Upload TestFlight
on:
push:
branches: [ main ]
jobs:
build:
name: Build Project
runs-on: macos-latest
env:
XC_WORKSPACE: ${{ 'Wable-iOS.xcodeproj' }}
XC_SCHEME: ${{ 'Wable-iOS' }}
XC_ARCHIVE: ${{ 'Wable-iOS.xcarchive' }}
KEYCHAIN: ${{ 'test.keychain' }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
# config
DEVELOPMENT_XCCONFIG: ${{ secrets.DEVELOPMENT_XCCONFIG }}
RELEASE_XCCONFIG: ${{ secrets.RELEASE_XCCONFIG }}
SHARE_XCCONFIG: ${{ secrets.SHARE_XCCONFIG }}
# googleservice-info
GOOGLESERVICE_INFO_PLIST: ${{ secrets.GOOGLESERVICE_INFO_PLIST }}
# certificate
ENCRYPTED_CERT_FILE_PATH: ${{ '.github/secrets/TL_Distribution.p12.gpg' }}
DECRYPTED_CERT_FILE_PATH: ${{ '.github/secrets/TL_Distribution.p12' }}
CERT_ENCRYPTION_KEY: ${{ secrets.CERT_ENCRYPTION_PWD }}
# provisioning
ENCRYPTED_PROVISION_FILE_PATH: ${{ '.github/secrets/Wable_AppStore.mobileprovision.gpg' }}
DECRYPTED_PROVISION_FILE_PATH: ${{ '.github/secrets/Wable_AppStore.mobileprovision' }}
PROVISIONING_ENCRYPTION_KEY: ${{ secrets.PROVISION_ENCRYPTION_PWD }}
# certification export key
CERT_EXPORT_KEY: ${{ secrets.CERT_EXPORT_PWD }}
steps:
- name: Checkout the code
uses: actions/checkout@v2
- name: Configure Keychain
run: |
security create-keychain -p "" "$KEYCHAIN"
security list-keychains -s "$KEYCHAIN"
security default-keychain -s "$KEYCHAIN"
security unlock-keychain -p "" "$KEYCHAIN"
security set-keychain-settings
- name: Create Config file
run: |
mkdir -p ./Wable-iOS/Resource/Config/
echo -n $DEVELOPMENT_XCCONFIG | base64 --decode > ./Wable-iOS/Resource/Config/Development.xcconfig
echo -n $RELEASE_XCCONFIG | base64 --decode > ./Wable-iOS/Resource/Config/Release.xcconfig
echo -n $SHARE_XCCONFIG | base64 --decode > ./Wable-iOS/Resource/Config/Share.xcconfig
- name: Create GoogleService-Info.plist
run: |
mkdir -p ./Wable-iOS/
echo -n $GOOGLESERVICE_INFO_PLIST | base64 --decode > ./Wable-iOS/GoogleService-Info.plist
- name: Configure Code Signing
run: |
gpg -d -o "$DECRYPTED_CERT_FILE_PATH" --pinentry-mode=loopback --passphrase "$CERT_ENCRYPTION_KEY" "$ENCRYPTED_CERT_FILE_PATH"
gpg -d -o "$DECRYPTED_PROVISION_FILE_PATH" --pinentry-mode=loopback --passphrase "$PROVISIONING_ENCRYPTION_KEY" "$ENCRYPTED_PROVISION_FILE_PATH"
security import "$DECRYPTED_CERT_FILE_PATH" -k "$KEYCHAIN" -P "$CERT_EXPORT_KEY" -A
security set-key-partition-list -S apple-tool:,apple: -s -k "" "$KEYCHAIN"
mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles"
for PROVISION in `ls .github/secrets/*.mobileprovision`
do
echo ALVIN PRIVISION DEBUG
UUID=`/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i ./$PROVISION)`
cp "./$PROVISION" "$HOME/Library/MobileDevice/Provisioning Profiles/$UUID.mobileprovision"
done
- name: iOS Bump Version
uses: yanamura/ios-bump-version@v1
with:
version: ''
build-number: ''
- name: Build
run: xcodebuild clean build -project $XC_WORKSPACE -scheme $XC_SCHEME -configuration release -destination 'platform=iOS Simulator,OS=15.0,name=iPhone 13 mini'
- name: Archive
run: xcodebuild archive -project $XC_WORKSPACE -scheme $XC_SCHEME -configuration release -archivePath $XC_ARCHIVE
- name: Export
run: xcodebuild -exportArchive -archivePath $XC_ARCHIVE -exportOptionsPlist ExportOptions.plist -exportPath . -allowProvisioningUpdates
- name: Upload app to TestFlight
uses: apple-actions/upload-testflight-build@v1
with:
app-path: "Wable-iOS.ipa"
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }}
api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }}
- name: Notify to Slack
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
fields: repo,message,commit,author,action,eventName,ref,workflow,pullRequest
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
if: always()