Я пытаюсь настроить сборку CI для своего приложения Xamarin.iOS, используя TeamCity и FAKE, и загрузить результат (файл .ipa) в HockeyApp. Я столкнулся с небольшой проблемой.
Мне удалось запустить сценарий сборки FAKE из TeamCity, а также успешно собрать мое приложение. Следующим шагом будет вызов метода «HockeyApp» из модуля «HockeyAppHelper» из FakeLib, но для этого мне нужен путь к файлу .ipa. Все примеры, которые я нахожу, просто жестко задают путь (что-то вроде bin/iPhone/Release/*.ipa
), однако в моем случае .ipa будет помещен в папку, содержащую временную метку (например, bin/iPhone/Release/MyApp 2017-01-24 17-16-56/MyApp.ipa
).
Вопрос в том, как мне получить файл .ipa в сценарии сборки (из-за метки времени я не могу жестко указать путь)?
Ниже приведен раздел скрипта FAKE, отвечающий за сборку и загрузку .ipa:
Target "ios-adhoc" (fun () ->
RestorePackages "RidderCRM.iOS.sln"
UpdatePlist version versionNumber "RidderCRM.iOS"
iOSBuild (fun defaults ->
{defaults with
ProjectPath = "RidderCRM.iOS.sln"
Configuration = "Release"
Platform = "iPhone"
Target = "Build"
BuildIpa = true
Properties = [ "CodesignKey", "iPhone Distribution"; "CodesignProvision", "Automatic:AdHoc" ]
})
let appPath = Directory.EnumerateFiles(Path.Combine("RidderCRM.iOS", "bin", "iPhone", "Release"), "*.ipa").First()
TeamCityHelper.PublishArtifact appPath
HockeyApp (fun p ->
{p with
ApiToken = Environment.GetEnvironmentVariable("HockeyAppApiToken")
File = appPath
}) |> ignore
)