Шаблон менеджера ресурсов TeamCity Azure: отсутствует MSBuild - PullRequest
0 голосов
/ 14 мая 2018

Я использую Шаблон диспетчера ресурсов Azure для создания сервера Azure TeamCity с агентом на той же виртуальной машине Linux CoreOS Azure.Все инструменты есть для создания проектов .NET Core, но для проектов Xamarin мне нужно, чтобы на коробке были включены инструменты сборки Visual Studio.

Следуя инструкциям на http://www.mono -project.com /download / vs / # download-lin , я попытался войти в систему агента, подключившись к виртуальной машине через SSH, а затем запустив:

docker exec -it [container id] bash
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
apt install apt-transport-https
echo "deb https://download.mono-project.com/repo/ubuntu vs-xenial main" | tee /etc/apt/sources.list.d/mono-official-vs.list
apt update
apt install mono-devel #Also apt-install mono-complete

Однако даже после перезагрузки виртуальной машины TeamCity существуетвсе еще неудовлетворенное требование, указанное как «Mono4.5_x86 существует».

Установка Mono на агенте работает;однако каждый раз, когда я перезагружаю агент, установка удаляется.

Как установить Mono на агент сборки, чтобы он сохранялся при перезапуске агента?

1 Ответ

0 голосов
/ 15 мая 2018

Это заняло целую вечность, но мне все-таки удалось найти решение.

По умолчанию диспетчер ресурсов Azure для TeamCity не содержит Mono в своем образе Docker. Вы можете установить Mono на образ Docker, но затем, как только вы перезапустите агент, изменения не сохранятся.

Вы должны настроить его, следуя инструкциям в https://hub.docker.com/r/jetbrains/teamcity-agent/.

Начните с создания нового изображения:

docker run -it -e SERVER_URL="http://<my-teamcity-server>.westeurope.cloudapp.azure.com" -v /mnt/data/teamcity-mono-agent:/data/teamcity_agent/conf --name="teamcity-mono-agent" jetbrains/teamcity-agent 

Затем запустите агент, используя

docker start teamcity-mono-agent

Запустить сеанс bash в агенте с помощью

docker exec -it teamcity-mono-agent bash

и в терминале bash установите Mono, используя последовательность инструкций в оригинальном вопросе. (Вам может потребоваться проверить версию Linux, работающую в контейнере, и соответствующим образом изменить эти шаги. На веб-сайте Mono есть подробные инструкции.)

После того, как вы установили Mono, проверьте установку, набрав mono, а затем выйдите из сеанса bash.

Зафиксируйте изображение, используя

docker commit teamcity-mono-agent mono-agent

А затем перезапустите агент:

docker restart teamcity-mono-agent

В вашем проекте TeamCity перейдите к шагу сборки и выберите «MSBuild» из выпадающего списка. Выберите «Mono xBuild 4.5» для версии MSBuild, «4.0» для версии MSBuild Tools и x64 для платформы.

Теперь ваш новый агент сможет подбирать сборки, требующие моно.

...