name: "iOS Stage"
on:
push:
branches: [ "qa" ]
jobs:
build:
runs-on: macos-26
steps:
- name: Use Node
uses: actions/setup-node@v6
with:
node-version: 24
- name: Clone repository
uses: actions/checkout@v5
with:
fetch-depth: 0 # we need the git history for the build number
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.35.4
- name: xcode version
run: |
sudo xcode-select -s /Applications/Xcode_26.2.app
/usr/bin/xcodebuild -version
- name: Install the Apple certificate and provisioning profile
shell: sh
env:
CERTIFICATE_P12: ${{ secrets.DISTRIBUTION_CERTIFICATE }}
P12_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
PROVISIONING_PROFILE: ${{ secrets.PROV_PROFILE_STAGE }}
run: |
sh .github/workflows/scripts/ios_install_signing_files.sh $CERTIFICATE_P12 $P12_PASSWORD $PROVISIONING_PROFILE
- name: Download dotenv
env:
DOTENV_FILE: ${{ secrets.DOTENV_STAGE }}
FILE_NAME: .stage.env
run: >-
sh .github/workflows/scripts/all_download_dotenv.sh
$DOTENV_FILE
$FILE_NAME
- name: Update build number
run: |
sh .github/workflows/scripts/ios_update_version_number.sh
- name: Enabled SPM
run: flutter config --enable-swift-package-manager
- name: Flutterfire
run: |
sh .github/workflows/scripts/all_install_flutterfire.sh
- name: pigeon
run: |
sh .github/workflows/scripts/all_run_pigeon.sh
- name: Update Pods
run: |
gem install cocoapods
- name: flutter build ipa
env:
FLAVOR: stage
run: |
sh .github/workflows/scripts/ios_build_ipa.sh $FLAVOR
- name: Archive
env:
SCHEME: Stage
run: sh .github/workflows/scripts/ios_archive.sh $SCHEME
- name: export
env:
EXPORT_OPTIONS_PATH: comwell_key_app/ios/ExportOptionsStage.plist
run: sh .github/workflows/scripts/ios_export.sh $EXPORT_OPTIONS_PATH
- name: Validate & upload
env:
API_KEY: ${{ secrets.APP_STORE_API_KEY }}
ISSUER_ID: ${{ secrets.APP_STORE_ISSUER_ID }}
APP_STORE_KEY_ID: ${{ secrets.APP_STORE_KEY_ID }}
IPA_PATH: "comwell_key_app/output/Comwell Phoenix.ipa"
run: |
mkdir ~/.private_keys
API_KEY_FILE_NAME=AuthKey_$APP_STORE_KEY_ID.p8
API_KEY_PATH=~/.private_keys/$API_KEY_FILE_NAME
echo "$API_KEY" | base64 --decode -o "$API_KEY_PATH"
xcrun altool --validate-app -f "$IPA_PATH" -t ios --apiKey "$APP_STORE_KEY_ID" --apiIssuer "$ISSUER_ID"
xcrun altool --upload-app -f "$IPA_PATH" -t ios --apiKey "$APP_STORE_KEY_ID" --apiIssuer "$ISSUER_ID"