View a markdown version of this page

在本地构建和测试软件包 - 截止日期云

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在本地构建和测试软件包

在将软件包发布到 Amazon S3 或在 Deadline Cloud 农场上设置 CI/CD 自动化之前,您可以使用本地文件系统通道在工作站上构建和测试 conda 软件包。这种方法使您可以快速在本地迭代配方并验证软件包。

rattler-build publish命令生成一个配方,将生成的包复制到一个频道,并在一个步骤中为该频道编制索引。当您以本地文件系统目录为目标时,如果该目录不存在,则自动rattler-build创建和初始化该频道。

以下说明使用 GitHub 网站上 Deadl ine Cloud 示例存储库中的 Blender 4.5 样本配方。您可以替代样品存储库中的其他配方,也可以使用自己的配方。

先决条件

在开始之前,请在您的工作站上安装以下工具:

  • pixi — 用于安装rattler-build和测试软件包的软件包管理器。有关安装说明,请参阅 Pixi 网站上的 pixi.sh。

  • rattler-build — Deadline Cloud conda 食谱使用的包构建工具。安装 pixi 后,运行以下命令进行安装rattler-build

    pixi global install rattler-build
  • git — 需要克隆示例存储库。开启Windows,Git for Windows Windows 网站上的 Git 还提供了一个bash外壳,一些Windows示例配方需要这个外壳。

生成软件包并将其发布到本地频道

在此过程中,您将克隆 Deadline Cloud 示例存储库,用于rattler-build publish生成软件包并将其发布到本地文件系统频道。

注意

大型应用程序可能需要数十 GB 的可用磁盘空间来存储源存档、提取的文件和编译输出。确保使用具有足够可用空间的磁盘来输出软件包编译输出。

生成软件包并将其发布到本地频道
  1. 克隆 Deadline Cloud 示例存储库。

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git
  2. 切换到 conda_recipes 目录。

    cd deadline-cloud-samples/conda_recipes
  3. 运行以下命令构建 Blender 4.5 配方并将该包发布到本地频道目录。

    在Linux和上macOS,运行以下命令。

    rattler-build publish blender-4.5/recipe/recipe.yaml \ --to file://$HOME/my-conda-channel \ --build-number=+1

    在 Windows (cmd) 上,运行以下命令。

    rattler-build publish blender-4.5/recipe/recipe.yaml ^ --to file://%USERPROFILE%/my-conda-channel ^ --build-number=+1

    rattler-build publish命令执行以下操作:

    • 根据配方生成软件包。

    • 如果频道目录不存在,则创建该目录。

    • 将包文件复制到频道。

    • 为频道编制索引,以便软件包管理者可以找到该软件包。

    如果你的套餐配方依赖于来自特定渠道的软件包,例如 conda-forge 网站上的 conda-forge,请添加-c conda-forge该命令。

关于内部版本号

--build-number=+1选项会根据目标频道中已有的版本号自动选择下一个版本号。最佳做法是永远不要重写频道中的软件包。如果软件包的文件名相同,请务必使用新的内部版本号进行构建。当你构建制作频道或镜像制作的暂存频道时,使用可以--build-number=+1实现这一点。

如果您想直接控制内部版本号,则可以将其设置为特定值,例如--build-number=7。如果省略该选项,则rattler-build使用recipe.yaml文件中定义的内部版本号。

有关更多信息rattler-build publish,请参阅 prefix.dev 网站上的 rattler-build 发布文档。

调试构建

如果构建失败,则rattler-build保留编译目录,以便您进行调查。运行以下命令在编译环境中打开交互式 shell,并将所有环境变量设置为构建期间的状态。

rattler-build debug shell

在调试 shell 中,您可以修改文件、运行单个构建命令并添加依赖关系以隔离问题。有关更多信息,请参阅在 prefix.dev 网站上调试构建。

测试软件包

构建并发布软件包后,创建一个临时 pixi 项目。使用该项目从本地渠道安装软件包并验证其是否正常运行。

测试软件包
  1. 创建临时测试目录并使用本地频道初始化 pixi 项目。

    在Linux和上macOS,运行以下命令。

    mkdir package-test-env cd package-test-env pixi init --channel file://$HOME/my-conda-channel

    在 Windows (cmd) 上,运行以下命令。

    mkdir package-test-env cd package-test-env pixi init --channel file://%USERPROFILE%/my-conda-channel
  2. 将软件包添加到项目中。

    pixi add blender=4.5
  3. 验证该软件包是否正常运行。

    pixi run blender --version

    pixi run命令激活项目目录的 conda 环境并在其中运行指定的命令。环境保留在项目目录中,因此您可以从其他终端使用相同的pixi run命令。有关更多信息,请参阅 Pixi 网站上的pixi run命令。

当您对软件包感到满意时,可以将该软件包发布到 Amazon S3 conda 频道,这样 Deadline Cloud 工作人员就可以安装该软件包。请参阅将包发布到 S3 conda 频道

从频道中移除软件包

避免从用于生产的频道中删除软件包,因为锁定文件通过哈希引用特定的软件包。删除软件包可防止从这些锁定文件中重新创建环境。对于开发和测试渠道,您可以通过从频道目录中删除.conda文件然后重新索引该频道来移除特定的软件包。首先,安装rattler-index

pixi global install rattler-index

然后删除包文件并重新索引该频道。

在Linux和上macOS,运行以下命令。

rm $HOME/my-conda-channel/linux-64/blender-4.5.0-hb0f4dca_1.conda rattler-index fs $HOME/my-conda-channel

在 Windows (cmd) 上,运行以下命令。

del %USERPROFILE%\my-conda-channel\win-64\blender-4.5.0-hb0f4dca_1.conda rattler-index fs %USERPROFILE%\my-conda-channel

包文件存储在平台特定的子目录中linux-64,例如、win-64或。osx-arm64列出这些子目录的内容以查找要删除的软件包的确切文件名。

清理

测试完成后,您可以移除测试项目和本地频道。

清理测试资源
  1. 移除测试项目目录。

    在Linux和上macOS,运行以下命令。

    rm -rf package-test-env

    在 Windows (cmd) 上,运行以下命令。

    rmdir /s /q package-test-env
  2. 移除本地 conda 频道目录。

    在Linux和上macOS,运行以下命令。

    rm -rf $HOME/my-conda-channel

    在 Windows (cmd) 上,运行以下命令。

    rmdir /s /q %USERPROFILE%\my-conda-channel
  3. (可选)移除包含已生成包文件的rattler-build输出目录。

    在Linux和上macOS,运行以下命令。

    rm -rf deadline-cloud-samples/conda_recipes/output

    在 Windows (cmd) 上,运行以下命令。

    rmdir /s /q deadline-cloud-samples\conda_recipes\output

有关带有插件同步示例的支持的插件,请参阅将插件同步到 Deadline 云工作人员