用于更新 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 中的“关于”部分更新信息