Вы можете заставить Build Agent выполнять произвольные команды на Mac через привязку к любому родовому Task/Target
(вы можете посмотреть в файлах Xamarin.iOS .targets
для лучшей идеи здесь), которая проходит через соединение SSH. В настоящее время это доступно другим способом, используя задачу <Exec>
с SessionId
вашего $(BuildSessionId)
. Вот пример того, как можно это сделать:
<Exec Command="..." SessionId="$(BuildSessionId)" />
Если SessionId
равно нулю/пусто, то это означает, что мы не подключены к Mac. Если это не null/empty, мы подключаемся к Mac.
Затем мы можем заставить это условие всегда выполняется на Mac с помощью:
<Exec Command="..." SessionId="$(BuildSessionId)" Condition=" '$(BuildSessionId)' != '' " />
Пожалуйста, обратите внимание, что следующие встроенные задачи подвергаются для удаленного выполнения:
- Copy
- Удалить
- Exec
- MakeDir
- Move
- RemoveDir
- касания
Источник: https://github.com/xamarin/xamarin-macios/blob/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets#L74-L80
Вы можете вызвать PlistBuddy
Command с помощью этого метода.
EX:
<Target Name="_SayGoodbye">
<Exec Command="plistbuddy ..." SessionId="$(BuildSessionId)" Condition=" '$(BuildSessionId)' != '' "/>
</Target>
Если вы хотите идти о MSBuild
пользовательских задач, как вы можете увидеть примеры предыдущих построенных задач здесь:
https://github.com/xamarin/xamarin-macios/tree/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/Xamarin.iOS.Tasks.Core/Tasks
EX Plist в Пользы:
https://github.com/xamarin/xamarin-macios/blob/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/Xamarin.iOS.Tasks.Core/Tasks/MTouchTaskBase.cs#L608
EX Тесты с Plist:
https://github.com/xamarin/xamarin-macios/tree/fc55e4306f79491fd269ca2495c6a859799cb1c6/msbuild/tests/Xamarin.iOS.Tasks.Tests/TaskTests/GeneratePlistTaskTests
Это больше настройки MSBuild в этой точке, но это, безусловно, можно делать то, что вы пытаетесь сделать, используя эти пункты.
Зачем вам PlistBuddy в Windows? Вашему CI нужен MacOS с установленным iOS-SDK для создания и подписания ipa в любом случае. –
Он делает это, но все это обрабатывается через Visual Studio и MSBuild, это не значит, что скрипты сборки выполняются в ящике OS X. – user3617723