在Azure DevOps中由Microsoft托管的代理上更新CMake

时间:2019-11-25 12:49:51

标签: ubuntu cmake azure-devops

我目前正在为CI管道设置不同的代理。我正在使用Microsoft托管的CMake 3.12.4随附的Ubuntu 18.04代理。 但是,我们的项目需要CMake 3.14.5。通常,我会尝试更新CMake,但标准存储库不提供所需的版本。 我尝试使用Kitware APT存储库更新cmake,但cmake --version仍输出3.12.4。 我原以为该更新将覆盖cmake命令,但它仍然引用旧版本。

我之前也曾尝试删除旧的cmake版本,但收到一条消息,提示找不到cmake。

我现在要做的所有工作就是通过外壳从https://cmake.org下载所需的版本,并使用make进行安装。 这行得通,还使我以后可以将- task: CMake@1与正确的新安装版本一起使用。

我想知道是否存在另一种将CMake更新到特定版本的方法,因为下载和安装CMake大约需要10分钟。

2 个答案:

答案 0 :(得分:4)

如果您确实想安装CMake 3.14.5并在我们的Hosted Ubuntu代理的下一个任务中使用它,则必须首先remove它们,然后re-install相应的版本。由于cmake与某些模块或软件包不同,因此您必须将其安装到系统中。换句话说,仅下载该软件包实际上无法覆盖默认版本3.12.4

因此,您必须使用类似的脚本来实现版本升级:

echo Write your commands here
sudo apt remove cmake
wget https://cmake.org/files/v3.14/cmake-3.14.5.tar.gz
tar xf cmake-3.14.5.tar.gz
cd cmake-3.14.5
./configure
sudo make install
cmake --version

以上步骤/逻辑并不复杂,只需从代理中删除cmake,从官方tar.gz下载软件包(cmake),然后解压缩并将其安装到Hosted agent中即可。

但是,与将cmake安装到本地Linux系统中一样,最后一步 install 将花费更多时间,这意味着它将导致您的构建花费将近15分钟的时间来完成对Hosted linux agent作业的安装。

enter image description here


无论如何,非常感谢您对我们托管的经纪人的热爱,现在我需要做一些事情,不要让这个喜欢的人失望。

我进行了提交,并将拉取请求提出到我们的存储库中:Update cmake.sh to 3.15 stable。此 PR 将被合并,并且在我们的PM审核后,所需的cmake版本将可用。我非常确定下周,可以为您提供满意的托管Ubuntu代理,并且您不需要其他脚本,只需花费 15 分钟即可升级任何 cmake 版本更多。

答案 1 :(得分:0)

每次使用Microsoft托管的代理运行管道时,都会获得一个新的虚拟机。使用一次后,虚拟机将被丢弃。因此,每次更新CMake都很麻烦。

您可以部署自托管代理,然后为自托管代理启用CMake。自托管代理使您可以更好地控制安装构建和部署所需的从属软件。而且,机器级别的缓存和配置在每次运行时都会持续存在,这可以提高速度。

以下是为自托管代理启用CMake的步骤:

1。Deploy an agent.

2。Install CMake,并确保将其添加到代理在您的代理计算机上运行的用户的路径。

3。在Web浏览器中,导航到代理池:选择“ Azure DevOps->组织设置->选择代理池”。

4。转到功能选项卡: 在代理商池标签->选择所需的代理商池->选择代理商并选择所需的代理商->选择功能标签

5。单击添加功能,然后将字段设置为cmakeyes

6。单击保存更改。

有关详细信息,请参阅此document