在 Azure 管道中设置 conda 元数据的内部版本号
Posted
技术标签:
【中文标题】在 Azure 管道中设置 conda 元数据的内部版本号【英文标题】:Set build number for conda metadata inside Azure pipeline 【发布时间】:2020-12-07 16:31:01 【问题描述】:我正在使用 bash 脚本在 azure 管道 conda build . --output-folder $(Build.ArtifactStagingDirectory)
中构建 conda pakage 问题是,Conda build 使用 meta.yml 文件中的内部版本号 (see here)。
我能想到的解决方案是,首先,将所有文件复制到Build.ArtifactStagingDirectory
,并将Azure管道的Build.BuildNumber
添加到meta.yml中,并将包构建到Build.ArtifactStagingDirectory
(在子文件夹中)
我试图通过编写 shell 脚本来操作 Azure 管道中的 yaml 文件来避免这样做,因为它可能容易出错。有人知道更好的方法吗?很高兴在答案或 cmets 中阅读更优雅的解决方案。
【问题讨论】:
为什么要以编程方式更改内部版本号?当您更改配方内容时,内部版本号会增加,例如meta.yaml
中的要求或build.sh
中的命令。我不明白您为什么希望 conda 包内部版本号与 Azure 管道内部版本号匹配。
【参考方案1】:
我对 Azure 管道了解不多。但一般来说,如果你想在不改变meta.yaml
的内容的情况下控制内部版本号,你可以在meta.yaml
中使用jinja
模板变量。
选择一个变量名,例如CUSTOM_BUILD_NUMBER
并在 meta.yaml
中使用它:
package:
name: foo
version: 0.1
build:
number: CUSTOM_BUILD_NUMBER
要定义该变量,您有两种选择:
使用环境变量:
export CUSTOM_BUILD_NUMBER=123
conda build foo-recipe
或
在conda_build_config.yaml
(docs)中定义变量,如下
echo "CUSTOM_BUILD_NUMBER:" >> foo-recipe/conda_build_config.yaml
echo " - 123" >> foo-recipe/conda_build_config.yaml
conda build foo-recipe
如果需要,您可以添加 if
语句,这样即使未定义 CUSTOM_BUILD_NUMBER
(使用默认内部版本号),配方仍然有效。
package:
name: foo
version: 0.1
build:
% if CUSTOM_BUILD_NUMBER is defined %
number: CUSTOM_BUILD_NUMBER
% else %
number: 0
% endif %
【讨论】:
以上是关于在 Azure 管道中设置 conda 元数据的内部版本号的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure DevOps yaml 管道中设置 ENVIRONMENT 状态
Azure DevOps - 使用参数在 yaml 管道定义中设置路径触发器