0

我正在使用 bash 脚本在 azure 管道conda build . --output-folder $(Build.ArtifactStagingDirectory)中构建 conda pakage 这是问题所在,Conda build 使用 meta.yml 文件中的内部版本号(请参见此处)。

我能想到的一个解决方案是,首先,将所有文件复制到Build.ArtifactStagingDirectory并将 Azure 管道添加Build.BuildNumber到 meta.yml 并将包构建到Build.ArtifactStagingDirectory(在子文件夹中)

我试图通过编写 shell 脚本来操作 Azure 管道中的 yaml 文件来避免这样做,因为它可能容易出错。有人知道更好的方法吗?很高兴在答案或评论中阅读更优雅的解决方案。

4

1 回答 1

1

我对 Azure 管道了解不多。但一般来说,如果你想在不改变内容的情况下控制内部版本号meta.yaml,你可以jinjameta.yaml.

选择一个变量名,例如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 %}
于 2020-12-10T05:12:59.840 回答