【发布时间】:2021-05-11 09:17:48
【问题描述】:
我需要使用 GCC 编译一个基于 CMake 的 C++ 项目。它依赖于 MKL,为了成功的 Cmake 配置、编译和测试执行,我需要预先运行以下命令
source /opt/intel/bin/compilervars.sh -arch intel64
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
为了使用 Azure 管道运行它,我有一个容器,我可以根据来自 https://docs.microsoft.com/en-us/azure/devops/pipelines/process/container-phases?view=azure-devops 的文档运行它。
通常,上述设置脚本将在容器启动期间调用 (https://hub.docker.com/layers/vvtk/vvcoreazurelinuxdockeragent/latest/images/sha256-c5e3775546ee90a111c9ae700306eb4cd1ebc710686bda5011633c4e5e883e13?context=repo),但它似乎(如 https://stackoverflow.com/a/63643979/15128314 中所述,此启动 CMD 命令未执行,因为 Azure 管道实际上并未调用 docker run
因此,我不得不将其复制到我的管道作业的多个步骤中(基本上是配置、构建和测试的每个步骤),因为这些环境变量在不同的步骤中也不是持久的。我怎样才能更有效地解决这个问题?管道看起来很糟糕..
- script: |
source /opt/intel/bin/compilervars.sh -arch intel64
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
(more cmds here)
displayName: config_Linux_x64_Release
- script: |
source /opt/intel/bin/compilervars.sh -arch intel64
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
(more cmds here)
displayName: build_Linux_x64_Release
- script: |
source /opt/intel/bin/compilervars.sh -arch intel64
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
(more cmds here)
displayName: test_Linux_x64_Release
【问题讨论】:
-
嗨,您有机会查看以下答案吗?进展如何?
标签: docker azure-pipelines azure-pipelines-yaml