用于更新 Conda-Forge 原料的持续集成

Posted

技术标签:

【中文标题】用于更新 Conda-Forge 原料的持续集成【英文标题】:continuous integration for updating the Conda- Forge feedstock 【发布时间】:2021-05-09 10:52:41 【问题描述】:

如何设置 CI 管道以进行持续集成以更新原料? 我想为新版本建立一种方式,也可以将它们推送到 conda-forge,就像它们自动用于 PyPI 一样。实际上,我发现了一些可能有用的存储库。

首先我们需要通过这个 repo 暂存包 https://github.com/conda-forge/staged-recipes

然后需要为原料建立持续集成管道,但由于我对 DevOps 没有太多深入的想法,因此无法理解这两个存储库中的哪一个将用于设置 CI 管道

https://github.com/conda-forge/conda-forge-ci-setup-feedstock

https://github.com/conda-forge/conda-smithy

如果有人能指导我完成这个,我将不胜感激

【问题讨论】:

在您的配方获得批准并合并到 staged-recipes 存储库后,conda-forge 将自动为您的包创建一个新的原料存储库。然后,每次您将新的发布标签推送到自己的 git 存储库(或推送新的 PyPI 包)时,conda-forge 机器人都会自动在原料存储库上创建 PR 以构建新的包版本。 conda-forge 自己的 CI 系统将运行构建并生成包。如果构建成功,您只需点击“合并”按钮,将更新的包发布到conda-forge 频道。 【参考方案1】:

第 1 步:构建 PyPi 包并上传(我想你已经这样做了)

第 2 步:安装 grayskull:conda install -c conda-forge grayskull,grayskull repo 展示了如何在 PyPi 上直接从您的包中生成名为“meta.yaml”的conda recipe

第 3 步:在您的用户/组织空间中创建 conda-forge/staged-recipes

第 4 步:进入recipes 目录,并在其中使用您的项目名称创建一个目录。

第5步:将第2步创建的meta.yaml添加到recipes/your-project-name/

第 6 步:将您的 LICENSE 文件添加到 recipes/your-project-name/

第 7 步:针对conda-forge/staged-recipes 进行公关

第 8 步:等待批准(并耐心等待);-)

一旦你有了一个原料,你就可以编辑 GitHub 工作流程,但 automerge 工作流程应该在那里,这意味着只要在 PyPi 上检测到新包,regro-cf-autotick-bot 就会为你的原料创建一个 PR,并且该 PR自动合并:-)

换句话说:一旦你有了一个原料,你的项目 repo 的 CD 只需要推送到 PyPi,然后你的新版本也会在 conda-forge 上弹出。

【讨论】:

以上是关于用于更新 Conda-Forge 原料的持续集成的主要内容,如果未能解决你的问题,请参考以下文章

从 recipe/meta.yaml 中的“关于”部分更新信息

持续集成 CI 自动化构建和自动化测试--初探

Jenkins介绍

Jenkins in OpenCASCADE

当上传者为“conda-forge”时,更新 conda-forge 中的包

用于 TFS 持续集成的 NuGet 包