【问题标题】:Set build number for conda metadata inside Azure pipeline在 Azure 管道中设置 conda 元数据的内部版本号
【发布时间】: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 管道内部版本号匹配。

标签: conda-build azure-devops-pipelines


【解决方案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 %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2013-04-08
    • 2020-02-05
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多