96 lines
3.1 KiB
Bash
Executable File
96 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
DIST_DIR="$ROOT_DIR/dist/macos-app-store"
|
|
APP_NAME="${APP_NAME:-XWorkmate}"
|
|
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
|
|
|
|
required_vars=(
|
|
APPLE_CERT_P12_BASE64
|
|
APPLE_CERT_PASSWORD
|
|
APPLE_MAC_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 macOS TestFlight 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"
|
|
BUILD_DATE_LINE="$(sed -n 's/^build-date:[[:space:]]*//p' "$ROOT_DIR/pubspec.yaml" | head -n 1)"
|
|
BUILD_ID_LINE="$(sed -n 's/^build-id:[[:space:]]*//p' "$ROOT_DIR/pubspec.yaml" | head -n 1)"
|
|
GIT_BUILD_DATE="$(cd "$ROOT_DIR" && git show -s --format=%cs HEAD 2>/dev/null || true)"
|
|
GIT_BUILD_COMMIT="$(cd "$ROOT_DIR" && git rev-parse --short HEAD 2>/dev/null || true)"
|
|
app_build_date="${GIT_BUILD_DATE:-${BUILD_DATE_LINE:-unknown}}"
|
|
app_build_commit="${GIT_BUILD_COMMIT:-${BUILD_ID_LINE:-unknown}}"
|
|
|
|
tmp_dir="$(mktemp -d "${RUNNER_TEMP:-/tmp}/xworkmate-macos-app-store.XXXXXX")"
|
|
cleanup() {
|
|
local status=$?
|
|
rm -rf "$tmp_dir"
|
|
apple_run_cleanup
|
|
return "$status"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
apple_setup_signing_keychain
|
|
apple_install_base64_provision_profile \
|
|
APPLE_MAC_PROVISION_PROFILE_BASE64 \
|
|
plus.svc.xworkmate
|
|
|
|
if [[ "$APPLE_SIGNING_PROFILE_TEAM" != "N3G9T67W78" ]]; then
|
|
echo "Provisioning profile team '$APPLE_SIGNING_PROFILE_TEAM' does not match expected team 'N3G9T67W78'." >&2
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$DIST_DIR"
|
|
archive_path="$tmp_dir/$APP_NAME.xcarchive"
|
|
export_options_path="$tmp_dir/ExportOptions.plist"
|
|
sed "s|\${EXPORT_METHOD}|app-store|g" "$ROOT_DIR/ios/ExportOptions.plist" > "$export_options_path"
|
|
|
|
flutter pub get
|
|
flutter build macos --release \
|
|
--build-name="$PLATFORM_RELEASE_VERSION" \
|
|
--build-number="$app_build" \
|
|
--dart-define="XWORKMATE_DISPLAY_VERSION=$app_version" \
|
|
--dart-define="XWORKMATE_BUILD_NUMBER=$app_build" \
|
|
--dart-define="XWORKMATE_BUILD_DATE=$app_build_date" \
|
|
--dart-define="XWORKMATE_BUILD_COMMIT=$app_build_commit" \
|
|
"$APP_STORE_DEFINE"
|
|
|
|
xcodebuild archive \
|
|
-workspace "$ROOT_DIR/macos/Runner.xcworkspace" \
|
|
-scheme Runner \
|
|
-configuration Release \
|
|
-archivePath "$archive_path" \
|
|
-allowProvisioningUpdates \
|
|
-allowProvisioningDeviceRegistration \
|
|
DEVELOPMENT_TEAM="N3G9T67W78"
|
|
|
|
xcodebuild -exportArchive \
|
|
-archivePath "$archive_path" \
|
|
-exportPath "$DIST_DIR" \
|
|
-exportOptionsPlist "$export_options_path" \
|
|
-allowProvisioningUpdates
|
|
|
|
if ! compgen -G "$DIST_DIR/*.pkg" >/dev/null; then
|
|
echo "No macOS TestFlight pkg was produced under $DIST_DIR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "macOS TestFlight pkg: $(find "$DIST_DIR" -maxdepth 1 -name '*.pkg' | head -n 1)"
|