Skip to content

Publish GiniHealthSDKExample to Firebase Distribution #12

Publish GiniHealthSDKExample to Firebase Distribution

Publish GiniHealthSDKExample to Firebase Distribution #12

name: Publish GiniHealthSDKExample to Firebase Distribution
on:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-publish
cancel-in-progress: ${{ !contains(github.ref, 'refs/tags/')}}
jobs:
check:
uses: ./.github/workflows/health-sdk.check.yml
secrets:
GINI_MOBILE_TEST_CLIENT_SECRET: ${{ secrets.GINI_MOBILE_TEST_CLIENT_SECRET }}
upload-version:
needs: check
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: maxim-lobanov/[email protected]
with:
xcode-version: '15.3'
- name: Setup provisioning profile
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.GINI_DISTRIBUTION_CERTIFICATE }}
P12_PASSWORD: ${{ secrets.GINI_DISTRIBUTION_CERTIFICATE_SECRET }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.GINI_HEALTH_SDK_EXAMPLE_APP_ADHOC_DISTRIBUTION_PROVISION_PROFILE }}
KEYCHAIN_PASSWORD: ${{ secrets.GINI_DISTRIBUTION_CERTIFICATE_SECRET }}
run: |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode --output $PP_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
- name: Setup Manual Signing for Xcode project
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2.0'
bundler-cache: true
- uses: maierj/[email protected]
with:
lane: 'setup_manual_signing'
options: >
{
"project_path":"HealthSDK/GiniHealthSDKExample/GiniHealthSDKExample.xcodeproj",
"team_id":"JA825X8F7Z",
"target":"GiniHealthSDKExample",
"bundle_identifier": "net.gini.healthsdk.example",
"profile_name": "Gini Health SDK Example App Ad-Hoc Distribution",
"entitlements_file_path": "GiniHealthSDKExample/GiniHealthSDKExample.entitlements",
"ci": "true"
}
- name: Setup Credentials
run: |
sed -i '' \
-e 's/clientID = "client_id"/clientID = "gini-mobile-test"/' \
-e 's/clientPassword = "client_password"/clientPassword = "${{ secrets.GINI_MOBILE_TEST_CLIENT_SECRET }}"/' \
HealthSDK/GiniHealthSDKExample/GiniHealthSDKExample/CredentialsManager.swift
- name: Archiving project
run: |
xcodebuild clean archive \
-workspace GiniMobile.xcworkspace \
-scheme "GiniHealthSDKExample" \
-archivePath ./GiniHealthSDKExample.xcarchive \
-configuration Release \
-destination generic/platform=iOS \
CODE_SIGN_IDENTITY="Apple Distribution" \
CODE_SIGNING_REQUIRED=NO \
ONLY_ACTIVE_ARCH=NO \
CODE_SIGN_STYLE=Manual \
DEVELOPMENT_TEAM=JA825X8F7Z
- name: Exporting .ipa
run: |
xcodebuild \
-exportArchive \
-archivePath GiniHealthSDKExample.xcarchive \
-exportPath . \
-exportOptionsPlist ExportOptionsHealthExample.plist \
-destination "generic/platform=iOS" \
CODE_SIGNING_REQUIRED=YES \
ONLY_ACTIVE_ARCH=NO \
CODE_SIGN_STYLE=Manual
- name: Check file existence
uses: andstor/file-existence-action@v3
with:
files: "*.ipa"
fail: true
- name: Install Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install -g [email protected]
shell: bash
- name: Distribute health-sdk example ipa to Firebase App Distribution
id: distribute
run: |
chmod +x .github/publish_to_firebase.sh
.github/publish_to_firebase.sh
shell: bash
env:
INPUT_APPID: ${{ secrets.GINI_HEALTH_SDK_EXAMPLE_APP_FIREBASE_ID }}
INPUT_SERVICECREDENTIALSFILECONTENT: ${{ secrets.FIREBASE_CREDENTIAL_FILE_CONTENT }}
INPUT_FILE: GiniHealthSDKExample.ipa
INPUT_GROUPS: testers
INPUT_RELEASENOTES: |
${{ format('{{ {0} {1} }}', github.ref, github.sha) }}
${{ github.event.head_commit.message }}
- name: Extract Jira ticket
id: extract_jira_ticket
run: |
commit_message=$(git log -1 --pretty=%B)
jira_ticket=$(echo "$commit_message" | sed -n '2p')
echo "JIRA_TICKET_NAME=${jira_ticket}" >> $GITHUB_ENV
- name: Login to jira
if: ${{ env.JIRA_TICKET_NAME != null }}
uses: justin-jhg/gajira-login@v1
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_KEY }}
- name: Comment on issue
if: ${{ env.JIRA_TICKET_NAME != null }}
uses: atlassian/gajira-comment@v3
with:
issue: ${{ env.JIRA_TICKET_NAME }}
comment: Build health example app ${{ steps.distribute.outputs.FIREBASE_CONSOLE_URI }}