本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在本地构建和测试软件包
在将软件包发布到 Amazon S3 或在 Deadline Cloud 农场上设置 CI/CD 自动化之前,您可以使用本地文件系统通道在工作站上构建和测试 conda 软件包。这种方法使您可以快速在本地迭代配方并验证软件包。
该rattler-build publish命令生成一个配方,将生成的包复制到一个频道,并在一个步骤中为该频道编制索引。当您以本地文件系统目录为目标时,如果该目录不存在,则自动rattler-build创建和初始化该频道。
以下说明使用 GitHub 网站上 Deadl
先决条件
在开始之前,请在您的工作站上安装以下工具:
-
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 的可用磁盘空间来存储源存档、提取的文件和编译输出。确保使用具有足够可用空间的磁盘来输出软件包编译输出。
生成软件包并将其发布到本地频道
-
克隆 Deadline Cloud 示例存储库。
git clone https://github.com/aws-deadline/deadline-cloud-samples.git -
切换到
conda_recipes目录。cd deadline-cloud-samples/conda_recipes -
运行以下命令构建 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 项目。使用该项目从本地渠道安装软件包并验证其是否正常运行。
测试软件包
-
创建临时测试目录并使用本地频道初始化 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 -
将软件包添加到项目中。
pixi add blender=4.5 -
验证该软件包是否正常运行。
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列出这些子目录的内容以查找要删除的软件包的确切文件名。
清理
测试完成后,您可以移除测试项目和本地频道。
清理测试资源
-
移除测试项目目录。
在Linux和上macOS,运行以下命令。
rm -rf package-test-env在 Windows (cmd) 上,运行以下命令。
rmdir /s /q package-test-env -
移除本地 conda 频道目录。
在Linux和上macOS,运行以下命令。
rm -rf $HOME/my-conda-channel在 Windows (cmd) 上,运行以下命令。
rmdir /s /q %USERPROFILE%\my-conda-channel -
(可选)移除包含已生成包文件的
rattler-build输出目录。在Linux和上macOS,运行以下命令。
rm -rf deadline-cloud-samples/conda_recipes/output在 Windows (cmd) 上,运行以下命令。
rmdir /s /q deadline-cloud-samples\conda_recipes\output
有关带有插件同步示例的支持的插件,请参阅将插件同步到 Deadline 云工作人员。