我有一个C项目,希望在多个不同的C编译器上进行测试。我目前正在使用Azure Pipelines对其进行测试,但是我不确定向我的工作流添加更多编译器的最佳方法是什么。
[当前,我只是使用脚本来sudo apt install
测试所需的其他一些内容,但是Azure警告我不要这样做。我还遇到了一个问题,即无法通过apt install
获得最新版本的TCC,因此我目前无法通过当前方法进行测试。
是否有适当的方法来做到这一点?我在想也许要指定一个供Azure使用的VM,已经安装了所需的任何软件。我不知道这是否可行或如何做到。浏览Azure管道文档也没有很大帮助,因为我不知道自己在寻找什么。
((如果有不清楚的地方,请让我知道,我不确定100%是否与此有关的正确术语。)
编辑:我基本上希望能够向我的azure-pipelines.yml
中添加这样的内容:
- job:
displayName: "C TCC Ubuntu"
pool:
vmImage: 'ubuntu-latest'
steps:
- script: |
set -e
cmake -DCMAKE_C_COMPILER=tcc .
make
displayName: "Compile"
- script:
./tests
displayName: "Run Tests"
除了vmImage
是自定义变量,我已经在其中安装了tcc
。万一这是不可能的,任何其他解决方法也应受到赞赏。
Azure DevOps管道具有两种用于代理的模型,它们是自托管的或托管的。您可以运行预安装工具链的自托管代理。这带来了无需管理该服务器及其闲置成本的麻烦。要进行自我托管here,将引导您完成安装。
我鼓励您使用托管代理,因为它可以为您提供最大的灵活性,并且如果您愿意,也可以不限制您使用仅一个操作系统来执行构建。话虽如此,托管代理的常见模式是按照您所说的那样将工具安装在任务中。 Azure DevOps Extension市场上有几个示例,这些人创建了用于安装工具的扩展。 Here是Rust的示例,请注意安装程序的屏幕截图。
如果您不想在每次构建中都安装编译器而受到惩罚,还可以利用托管代理使用容器来构建软件的能力。然后,您可以预构建一个容器映像,该映像已安装了编译器和其他工具,并指示Azure DevOps在托管代理中使用该映像进行编译。 Here是该文档。