TeamCity Azure资源管理器模板:缺少MSBuild

时间:2018-05-14 13:33:34

标签: azure teamcity azure-resource-manager

我正在使用Azure Resource Manager Template在同一个Linux CoreOS Azure VM上使用代理生成Azure TeamCity服务器。所有工具都用于构建.NET Core项目,但对于Xamarin项目,我需要在框中启用Visual Studio构建工具。

按照http://www.mono-project.com/download/vs/#download-lin上的说明,我尝试通过SSH连接到VM,然后运行登录代理:

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 VM,仍然存在未满足的要求,列为“Mono4.5_x86存在”。

在代理上安装Mono工作;但是,每次重新启动代理时,都会删除安装。

如何在构建代理上安装Mono,以便在重新启动代理时它仍然存在?

1 个答案:

答案 0 :(得分:0)

这需要很长时间才能解决,但我最终找到了解决方案。

默认情况下,TeamCity的Azure资源管理器在其Docker镜像中不包含Mono。您可以在Docker镜像上安装Mono,但是一旦重新启动代理,更改就不会保留。

您必须按照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项目中,转到构建步骤并选择&#34; MSBuild&#34;从下拉列表。选择&#34; Mono xBuild 4.5&#34;对于MSBuild版本,&#34; 4.0&#34;用于MSBuild Tools版本,x64用于平台。

您的新代理现在应该能够选择需要Mono的构建。