forked from eatvio/eatvio_app
Merge pull request 'fix(ci/cd): revert' (#363) from mso7nueh/eatvio_app:main into main
Reviewed-on: eatvio/eatvio_app#363
This commit is contained in:
252
Build-tf
252
Build-tf
@@ -1,201 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
#!/bin/bash
|
||||
set -xeu
|
||||
set -o pipefail
|
||||
|
||||
#!/bin/bash
|
||||
export LANG=en_US.UTF-8
|
||||
LANG=en_US.UTF-8
|
||||
|
||||
# Убедимся, что переменные CERTIFICATES_FILE_BASE64 и CERTIFICATES_PASSWORD установлены
|
||||
if [ -z "$CERTIFICATES_FILE_BASE64" ] || [ -z "$CERTIFICATES_PASSWORD" ]; then
|
||||
echo "❌ Переменные CERTIFICATES_FILE_BASE64 или CERTIFICATES_PASSWORD не установлены."
|
||||
exit 1
|
||||
fi
|
||||
function finish() {
|
||||
if [[ -d "${RESULT_BUNDLE_PATH}" ]]; then
|
||||
ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip"
|
||||
rm -rf "${RESULT_BUNDLE_PATH}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Указываем путь для временного файла .p12
|
||||
P12_TMP_PATH="./certs/distribution.p12"
|
||||
trap finish EXIT
|
||||
|
||||
# Создаем каталог, если его нет
|
||||
echo "📦 Preparing certificate..."
|
||||
mkdir -p certs
|
||||
SDK="${SDK:-iphoneos}"
|
||||
WORKSPACE="${WORKSPACE:-ios/Runner.xcworkspace}"
|
||||
SCHEME="${SCHEME:-Runner}"
|
||||
CONFIGURATION="${CONFIGURATION:-Release}"
|
||||
|
||||
# Выводим первые 10 символов BASE64 строки для проверки
|
||||
echo "🔍 Проверка содержимого base64 строки..."
|
||||
echo "$CERTIFICATES_FILE_BASE64" | head -n 10
|
||||
BUILD_DIR="${BUILD_DIR:-build}"
|
||||
ARTIFACT_PATH="${RESULT_PATH:-${BUILD_DIR}/Artifacts}"
|
||||
RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult"
|
||||
ARCHIVE_PATH="${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}"
|
||||
DERIVED_DATA_PATH="${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}"
|
||||
CURRENT_PROJECT_VERSION="${BUILD_NUMBER:-0}"
|
||||
EXPORT_OPTIONS_FILE="Support/ExportOptions.plist"
|
||||
|
||||
# Декодируем строку base64 и сохраняем в файл
|
||||
echo "🔑 Decoding certificate..."
|
||||
echo "$CERTIFICATES_FILE_BASE64" | base64 --decode > "$P12_TMP_PATH"
|
||||
# Clean and prepare the build
|
||||
flutter clean
|
||||
flutter pub get
|
||||
dart run build_runner build --delete-conflicting-outputs
|
||||
|
||||
# Проверим, что файл был успешно создан
|
||||
if [ ! -f "$P12_TMP_PATH" ]; then
|
||||
echo "❌ Не удалось создать файл сертификата: $P12_TMP_PATH"
|
||||
exit 1
|
||||
cd ios
|
||||
rm -rf Pods Podfile.lock
|
||||
pod install --repo-update
|
||||
pod update || { echo "Pod update failed"; exit 1; }
|
||||
cd ..
|
||||
|
||||
rm -rf "${RESULT_BUNDLE_PATH}" "${DERIVED_DATA_PATH}"
|
||||
mkdir -p "${ARTIFACT_PATH}"
|
||||
|
||||
# Archive the build
|
||||
xcrun xcodebuild \
|
||||
-workspace "${WORKSPACE}" \
|
||||
-scheme "${SCHEME}" \
|
||||
-configuration "${CONFIGURATION}" \
|
||||
-sdk "${SDK}" \
|
||||
-parallelizeTargets \
|
||||
-showBuildTimingSummary \
|
||||
-derivedDataPath "${DERIVED_DATA_PATH}" \
|
||||
-archivePath "${ARCHIVE_PATH}" \
|
||||
-resultBundlePath "${RESULT_BUNDLE_PATH}" \
|
||||
-allowProvisioningUpdates \
|
||||
CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \
|
||||
DEVELOPMENT_TEAM=VL68C36HYS \
|
||||
archive || { echo "Xcode archive failed"; exit 1; }
|
||||
|
||||
# Export the build to .ipa
|
||||
xcrun xcodebuild \
|
||||
-exportArchive \
|
||||
-exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \
|
||||
-archivePath "${ARCHIVE_PATH}" \
|
||||
-exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" || { echo "Export to IPA failed"; exit 1; }
|
||||
|
||||
# Zip the archive
|
||||
if [[ -d "${ARCHIVE_PATH}" ]]; then
|
||||
ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip"
|
||||
else
|
||||
echo "✅ Файл сертификата успешно создан: $P12_TMP_PATH"
|
||||
ls -l "$P12_TMP_PATH" # Выведем информацию о файле
|
||||
echo "Archive directory not found, skipping zip."
|
||||
fi
|
||||
|
||||
# Попробуем импортировать сертификат
|
||||
echo "🔑 Importing .p12 certificate..."
|
||||
security import "$P12_TMP_PATH" -k login.keychain -P "$CERTIFICATES_PASSWORD" -T /usr/bin/codesign
|
||||
|
||||
# Проверим, был ли сертификат успешно импортирован
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ Ошибка при импорте сертификата. Проверьте правильность пароля."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Сертификат успешно импортирован."
|
||||
|
||||
# Проверим наличие нужной identity в ключнице
|
||||
IDENTITY="Apple Distribution: ITVIO, OOO (VL68C36HYS)"
|
||||
if ! security find-identity -v -p codesigning | grep -q "${IDENTITY}"; then
|
||||
echo "❌ Подпись identity '${IDENTITY}' не найдена в ключнице."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Определяем пути
|
||||
ARCHIVE_PATH="./archive" # Убедитесь, что ARCHIVE_PATH правильно задан
|
||||
APP_PATH="${ARCHIVE_PATH}/Products/Applications/Runner.app"
|
||||
FRAMEWORKS_PATH="${APP_PATH}/Frameworks"
|
||||
|
||||
# Убираем старые подписи
|
||||
echo "🔐 Removing old signatures..."
|
||||
codesign --remove-signature "${FRAMEWORKS_PATH}/App.framework/App"
|
||||
codesign --remove-signature "${FRAMEWORKS_PATH}/Flutter.framework/Flutter"
|
||||
|
||||
# Повторно подписываем фреймворки
|
||||
echo "🔐 Resigning App.framework..."
|
||||
codesign -f --deep --no-strict -s "${IDENTITY}" --preserve-metadata=entitlements,identifier,flags "${FRAMEWORKS_PATH}/App.framework/App"
|
||||
|
||||
echo "🔐 Resigning Flutter.framework..."
|
||||
codesign -f --deep --no-strict -s "${IDENTITY}" --preserve-metadata=entitlements,identifier,flags "${FRAMEWORKS_PATH}/Flutter.framework/Flutter"
|
||||
|
||||
# Подписываем самое приложение
|
||||
echo "🔐 Resigning Runner.app..."
|
||||
codesign -f --deep --no-strict -s "${IDENTITY}" --preserve-metadata=entitlements,identifier,flags "${APP_PATH}"
|
||||
|
||||
echo "✅ Resigning completed."
|
||||
|
||||
|
||||
|
||||
#set -xeu
|
||||
#set -o pipefail
|
||||
#
|
||||
#export LANG=en_US.UTF-8
|
||||
#LANG=en_US.UTF-8
|
||||
#
|
||||
#function finish() {
|
||||
# if [[ -d "${RESULT_BUNDLE_PATH}" ]]; then
|
||||
# ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip"
|
||||
# rm -rf "${RESULT_BUNDLE_PATH}"
|
||||
# fi
|
||||
#}
|
||||
#
|
||||
#trap finish EXIT
|
||||
#
|
||||
#SDK="${SDK:-iphoneos}"
|
||||
#WORKSPACE="${WORKSPACE:-ios/Runner.xcworkspace}"
|
||||
#SCHEME="${SCHEME:-Runner}"
|
||||
#CONFIGURATION="${CONFIGURATION:-Release}"
|
||||
#
|
||||
#BUILD_DIR="${BUILD_DIR:-build}"
|
||||
#ARTIFACT_PATH="${RESULT_PATH:-${BUILD_DIR}/Artifacts}"
|
||||
#RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult"
|
||||
#ARCHIVE_PATH="${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}"
|
||||
#DERIVED_DATA_PATH="${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}"
|
||||
#CURRENT_PROJECT_VERSION="${BUILD_NUMBER:-0}"
|
||||
#EXPORT_OPTIONS_FILE="Support/ExportOptions.plist"
|
||||
#
|
||||
## Clean and prepare the build
|
||||
#flutter clean
|
||||
#flutter pub get
|
||||
#dart run build_runner build --delete-conflicting-outputs
|
||||
#
|
||||
#cd ios
|
||||
#rm -rf Pods Podfile.lock
|
||||
#pod install --repo-update
|
||||
#pod update || { echo "Pod update failed"; exit 1; }
|
||||
#cd ..
|
||||
#
|
||||
#rm -rf "${RESULT_BUNDLE_PATH}" "${DERIVED_DATA_PATH}"
|
||||
#mkdir -p "${ARTIFACT_PATH}"
|
||||
#
|
||||
#function resign_frameworks() {
|
||||
# IDENTITY="Apple Distribution: ITVIO, OOO (VL68C36HYS)"
|
||||
# P12_TMP_PATH="certs/distribution.p12"
|
||||
#
|
||||
# echo "📦 Preparing certificate..."
|
||||
# mkdir -p certs
|
||||
# echo "$CERTIFICATES_FILE_BASE64" | base64 --decode > "$P12_TMP_PATH"
|
||||
#
|
||||
# echo "🔑 Importing .p12 certificate..."
|
||||
# security import "$P12_TMP_PATH" -k login.keychain -P "$CERTIFICATES_PASSWORD" -T /usr/bin/codesign || {
|
||||
# echo "❌ Failed to import .p12"
|
||||
# exit 1
|
||||
# }
|
||||
#
|
||||
# security set-key-partition-list -S apple-tool:,apple: -s -k "$CERTIFICATES_PASSWORD" login.keychain
|
||||
#
|
||||
# # 🧾 Проверка, что identity доступен
|
||||
# if ! security find-identity -v -p codesigning | grep -q "${IDENTITY}"; then
|
||||
# echo "❌ Signing identity '${IDENTITY}' not found in keychain."
|
||||
# exit 1
|
||||
# fi
|
||||
#
|
||||
# local app_path="${ARCHIVE_PATH}/Products/Applications/Runner.app"
|
||||
# local frameworks_path="${app_path}/Frameworks"
|
||||
#
|
||||
# echo "🔐 Removing old signatures..."
|
||||
# codesign --remove-signature "${frameworks_path}/App.framework/App"
|
||||
# codesign --remove-signature "${frameworks_path}/Flutter.framework/Flutter"
|
||||
#
|
||||
# echo "🔐 Resigning App.framework..."
|
||||
# codesign -f --deep --no-strict -s "${IDENTITY}" \
|
||||
# --preserve-metadata=entitlements,identifier,flags \
|
||||
# "${frameworks_path}/App.framework/App"
|
||||
#
|
||||
# echo "🔐 Resigning Flutter.framework..."
|
||||
# codesign -f --deep --no-strict -s "${IDENTITY}" \
|
||||
# --preserve-metadata=entitlements,identifier,flags \
|
||||
# "${frameworks_path}/Flutter.framework/Flutter"
|
||||
#
|
||||
# echo "🔐 Resigning Runner.app..."
|
||||
# codesign -f --deep --no-strict -s "${IDENTITY}" \
|
||||
# --preserve-metadata=entitlements,identifier,flags \
|
||||
# "${app_path}"
|
||||
#
|
||||
# echo "✅ Resigning completed"
|
||||
#}
|
||||
#
|
||||
## Archive the build
|
||||
#xcrun xcodebuild \
|
||||
# -workspace "${WORKSPACE}" \
|
||||
# -scheme "${SCHEME}" \
|
||||
# -configuration "${CONFIGURATION}" \
|
||||
# -sdk "${SDK}" \
|
||||
# -parallelizeTargets \
|
||||
# -showBuildTimingSummary \
|
||||
# -derivedDataPath "${DERIVED_DATA_PATH}" \
|
||||
# -archivePath "${ARCHIVE_PATH}" \
|
||||
# -resultBundlePath "${RESULT_BUNDLE_PATH}" \
|
||||
# -allowProvisioningUpdates \
|
||||
# CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \
|
||||
# CODE_SIGNING_ALLOWED=NO \
|
||||
# DEVELOPMENT_TEAM=VL68C36HYS \
|
||||
# archive || { echo "Xcode archive failed"; exit 1; }
|
||||
#
|
||||
#resign_frameworks
|
||||
#
|
||||
## Export the build to .ipa
|
||||
#xcrun xcodebuild \
|
||||
# -exportArchive \
|
||||
# -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \
|
||||
# -archivePath "${ARCHIVE_PATH}" \
|
||||
# -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" || { echo "Export to IPA failed"; exit 1; }
|
||||
#
|
||||
## Zip the archive
|
||||
#if [[ -d "${ARCHIVE_PATH}" ]]; then
|
||||
# ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip"
|
||||
#else
|
||||
# echo "Archive directory not found, skipping zip."
|
||||
#fi
|
||||
|
||||
Reference in New Issue
Block a user