Запуск персональной сборки через TeamCity REST API

#teamcity #teamcity-rest-api

Вопрос:

Я просмотрел архивы SO для этого, и, хотя есть много похожих вопросов, ничто на самом деле не отвечает на мой конкретный вопрос.

Мы используем git в качестве VCS, и я хочу иметь возможность запускать удаленную сборку, в которой исходное дерево в точности отражает все, что находится на компьютере локального пользователя, включая любые локальные изменения, которые они внесли. Если я просто буду следовать приведенным здесь инструкциям, то у меня не будет возможности указать, на какую версию наложить патч поверх. Действительно, пару раз я пытался делать все точно так, как описано в документации, я получал сообщение об ошибке в журнале сборки «Не удалось применить исправление».

Я чувствую, что мне нужен эквивалент ОТДЫХА, чтобы выбрать что-то в раскрывающемся списке «Изменения > Включить изменения». Таким образом, я могу выбрать точный хэш git, который я хочу сделать корнем VCS, что должно гарантировать, что патч может быть применен чисто поверх него.

Но как мне это сделать? Я не очень хорошо понимаю <lastChanges> xml-тег.

 <lastChanges>
    <change id="{id_returned_from_uploading_diff}" personal="true"/>
</lastChanges>
 

Могу ли я добавить что-то в этот большой двоичный объект, чтобы патч был применен поверх определенного хэша git? К сожалению, изменение «id» на самом деле не является хэшем git само по себе, например, учитывая хэш git, я могу использовать такой запрос, как

 https://<teamcity-server>/app/rest/changes?locator=version:<git-hash>
 

и верните список множества различных «идентификаторов изменений» с одним и тем же хэшем git, который я нахожу несколько запутанным, потому что теперь я не знаю, какой идентификатор изменения использовать.

В любом случае, надеюсь, кто-нибудь сможет прояснить это для меня.