Зафиксировать файл обратно в репозиторий с сервера сборки в Visual Studio Team Services

В настоящее время я настраиваю непрерывную интеграцию с использованием TFS / Visual Studio Team Services (была VS Online), и я использую Team Foundation Build 2015. Так что не сборки XAML.

Я использую его для создания проекта Xamarin Android, но я думаю, это довольно непочтительно,

Процесс должен быть таким:

  • После заселения:
  • TFS должен скачать исходники
  • TFS should increment the version number within AndroidManifest.xml
    • I've managed to do this by making a PowerShell script for this.
  • После изменения файла AndroidManifest.xml его следует зафиксировать обратно в репозиторий TFS.

Затем остальное, соберите развертывание в hockeyapp и т. Д.

Первые шаги все настроены, но я борюсь с частью фиксации. Как заставить TFS зафиксировать файл? Я не вижу подходящей для этого задачи. Я пробовал использовать Утилита копирования и публикации артефактов сборки. Но это, похоже, не сработало, и я даже не уверен, что это правильная утилита.

Кстати, я использую агент сборки по умолчанию. Любая помощь будет оценена


person Ron Sijm    schedule 15.04.2016    source источник
comment
Вы используете TFVC или Git?   -  person jessehouwing    schedule 15.04.2016
comment
В этом случае мои задачи по TFVC вам помогут. Смотрите мой ответ ниже.   -  person jessehouwing    schedule 15.04.2016


Ответы (1)


Предупреждение

Я хочу отметить, что проверка изменений как часть сборки может привести к тому, что некоторые функции VSTS / TFS не будут работать. Связь рабочих элементов с проверкой, источниками и генерацией символов, управляемость от изменений для сборки до выпуска и интеграция с Test Manager, удаленная отладка, скорее всего, не принесет ожидаемых результатов, потому что набор изменений / фиксация, записанный в сборке te, может не соответствовать фактическим источники. Это может привести к неожиданному забавному поведению.

Кроме того, если какие-либо новые изменения уже были зафиксированы / зарегистрированы после начала сборки, номер версии может быть обновлен в системе управления версиями для кода, который фактически не был выпущен под этой версией.

Итак: Во-первых, изменение источников в процессе сборки считается плохой практикой.

Альтернативы

Есть способы сделать это лучше, один из них - использовать версию сборки (переменные Build_BuildNumber или Build_BuildID). В качестве альтернативы вы можете использовать задачу, такую ​​как GitVersion, для создания семантической версии на основе ветки. и отметьте его в своем репозитории git. Таким образом, ваша сборка сгенерирует правильный номер версии и увеличит ревизию в случае, если одни и те же исходные файлы будут собраны несколько раз.

Я понимаю, но все же хочу проверить свой код как часть сборки

Если эти вещи у вас не работают, и вы по-прежнему хотите проверить изменения как часть сборки, вы можете использовать Задачи сборки TFVC, если вы используете TFVC или Git Build Tools, чтобы добавить пульт в локальный репозиторий, а затем использовать инструменты командной строки git для фиксации и отправки изменений обратно в репозиторий.

Для установки этих расширений требуется TFS Update 2. Но вы можете продвигать отдельные задачи сборки с помощью инструмента tfx commandlien. Для задач TFVC процесс объясняется здесь .

На Mac

На Mac это будет сложнее, так как вы используете TFVC. Мои задачи TFVC используют клиентскую объектную модель TFS и Powershell для связи с сервером TFS. Инструмент tf.exe даже не работает с окнами, когда вы находитесь в контексте сборки, поэтому мне нужно напрямую вызывать объект VersionControlServer. Учитывая, что я зависим от этих технологий, задачи не будут выполняться на агенте Mac или Linux.

Вы можете попробовать проверить, не <ли < / a> работает из агента сборки (с использованием сценария оболочки). У меня нет возможности проверить это на реальном Mac.

Учитывая кроссплатформенный характер вашего проекта, я бы рекомендовал перейти на Git, он интегрируется в XCode и Android Studio, что упрощает создание собственного пользовательского интерфейса или сборку на основе собственных библиотек.

Альтернатива 2

Вы можете настроить сборку, которая вносит необходимые изменения в код, а затем проверяет измененный код. Затем пусть (CI) сборка запускает сборки Android и Mac с использованием измененного кода.

person jessehouwing    schedule 15.04.2016
comment
Спасибо, попробую настроить задачи сборки TFVC. Я не уверен, будет ли работать альтернатива переменных сборки. Я изучил это, но потому что это не обычная версия AssemblyInfo.cs, а проект Android xamarin, это файл AndroidManifest.xml, что немного усложняет - person Ron Sijm; 15.04.2016
comment
Что ж, это сложно - в любом случае, ваши задачи сборки TFVC работают для нашего проекта Xamarin Android, спасибо. - person Ron Sijm; 15.04.2016
comment
Я также пытаюсь настроить его для проекта Xamarin IOS, для которого требуется агент сборки, работающий на локальном Mac. После добавления вашей задачи я получаю сообщение об ошибке, что у меня нет агента с возможностями: visualstudio - вы знаете, может ли ваша задача каким-то образом запускаться на Mac? - person Ron Sijm; 15.04.2016
comment
GitVersion afaik не решает проблему увеличения versionCode. Единственный инкрементный номер, который у него есть, - это BuildMetaData, но, насколько я понимаю, он инкрементный только в контексте конкретной версии выпуска. - person Ferry de Boer; 09.02.2017
comment
Я немного поэкспериментировал с BuildId из VSTS, и, если вы спросите меня, это очень приемлемое решение. - person Ferry de Boer; 09.02.2017