64 lines
1.8 KiB
Bash
Executable File
64 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
dist_dir="$root_dir/dist/ios"
|
|
export_method="${APPLE_EXPORT_METHOD:-ad-hoc}"
|
|
app_store_define="${APP_STORE_DEFINE:---dart-define=XWORKMATE_APP_STORE=${XWORKMATE_APP_STORE:-true}}"
|
|
source "$root_dir/scripts/ci/apple_signing.sh"
|
|
APPLE_SIGNING_CLEANUP_COMMANDS=()
|
|
trap apple_run_cleanup EXIT
|
|
|
|
mkdir -p "$dist_dir"
|
|
|
|
required_vars=(
|
|
APPLE_CERT_P12_BASE64
|
|
APPLE_CERT_PASSWORD
|
|
APPLE_PROVISION_PROFILE_BASE64
|
|
APPLE_KEYCHAIN_PASSWORD
|
|
)
|
|
|
|
missing=()
|
|
for var_name in "${required_vars[@]}"; do
|
|
if [[ -z "${!var_name:-}" ]]; then
|
|
missing+=("$var_name")
|
|
fi
|
|
done
|
|
|
|
if [[ "${#missing[@]}" -gt 0 ]]; then
|
|
echo "Missing iOS signing secrets: ${missing[*]}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
eval "$(python3 "$root_dir/scripts/ci/build_version.py" --format shell)"
|
|
app_version="$DISPLAY_VERSION"
|
|
app_build="$BUILD_NUMBER"
|
|
apple_setup_signing_keychain
|
|
apple_install_provision_profile "xworkmate.mobileprovision"
|
|
|
|
tmp_dir="$APPLE_SIGNING_TMP_DIR"
|
|
export_options_path="$tmp_dir/ExportOptions.plist"
|
|
|
|
sed "s|\${EXPORT_METHOD}|$export_method|g" "$root_dir/ios/ExportOptions.plist" > "$export_options_path"
|
|
|
|
flutter pub get
|
|
flutter build ipa --release \
|
|
--build-name="$PLATFORM_RELEASE_VERSION" \
|
|
--build-number="$app_build" \
|
|
--dart-define="XWORKMATE_DISPLAY_VERSION=$app_version" \
|
|
--dart-define="XWORKMATE_BUILD_NUMBER=$app_build" \
|
|
"$app_store_define" \
|
|
--export-options-plist="$export_options_path"
|
|
|
|
archive_path="$root_dir/build/ios/archive/Runner.xcarchive"
|
|
if [[ -d "$archive_path" ]]; then
|
|
bash "$root_dir/scripts/check-apple-export-compliance.sh" "$archive_path"
|
|
fi
|
|
|
|
find "$root_dir/build/ios/ipa" -maxdepth 1 -name '*.ipa' -exec cp {} "$dist_dir/" \;
|
|
|
|
if ! compgen -G "$dist_dir/*.ipa" >/dev/null; then
|
|
echo "No IPA was produced under $dist_dir" >&2
|
|
exit 1
|
|
fi
|