SPEC 5 — CI 最佳实践

作者:
Tim Head <betatim@gmail.com>,Marta Iborra <martaiborra24@gmail.com>,Ryan May <rmay@ucar.edu>,Jarrod Millman <millman@berkeley.edu>,Brigitta Sipőcz <brigitta.sipocz@gmail.com>
讨论:
https://discuss.scientific-python.org/t/spec-5-ci-best-practices/507
历史:
https://github.com/scientific-python/specs/commits/main/spec-0005
获批单位:
注意

这是一个草稿文档。

描述#

核心项目认可#

生态系统采用#

徽章#

项目可以通过包含 SPEC 徽章来突出显示其对本 SPEC 的采用。

SPEC 5 — CI Best Practices
[![SPEC 5 — CI Best Practices](https://img.shields.io/badge/SPEC-5-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.cn/specs/spec-0005/)
|SPEC 5 — CI Best Practices| 

.. |SPEC 5 — CI Best Practices| image:: https://img.shields.io/badge/SPEC-5-green?labelColor=%23004811&color=%235CA038
   :target: https://scientific-python.cn/specs/spec-0005/
要使用一个徽章指示对多个 SPEC 的采用,请参见 此处

实施#

构建每日构建轮子#

通过构建和上传项目的轮子,您可以使依赖于您的项目更容易测试您的最新更改。然后,它们可以报告发现的问题。

为您的项目实施此功能需要执行以下几个步骤

  1. 获取对上传每日构建轮子的区域的访问权限
  2. 设置一个 CI 步骤,用于构建项目的轮子
  3. 设置一个 CI 步骤,用于将轮子上传到 https://anaconda.org/scientific-python-nightly-wheels/

对于步骤 (1),请联系 XXX。将您获得的令牌作为 存储库上的密钥 存储,名为 UPLOAD_TOKEN

步骤 (2) 的工作取决于您的项目。您可能已经在为您的版本执行此操作。要添加的新内容是,轮子的构建每天晚上或每周运行一次。

对于步骤 (3),您可以使用一个 GitHub Action。您可以在 https://github.com/scientific-python/upload-nightly-action 找到该 Action。要在您的“构建轮子工作流”中使用它,请添加以下行作为额外步骤

- name: Upload wheel
  uses: scientific-python/upload-nightly-action@main
  with:
    artifacts_path: dist/
    anaconda_nightly_upload_token: ${{ secrets.UPLOAD_TOKEN }}

备注#

  • 建议针对 PR 运行的 CI 预期会通过——如果失败,则应该很重要

  • 安排针对每日构建/预发布版本定期运行 CI

    • 适用于不需要在每个 PR 上运行的其他检查
    • 可用于固定版本
    • 可以使用标签触发其他“特殊”作业的运行
    • 可以在失败时打开一个问题,而不是隐藏在某个 UI 中——有助于提供通知
    • 为工作流生成一个徽章,可以将其收集到仪表板中
  • GitHub Actions 安全问题

    • 需要信任 Action 创建者
    • 固定到哈希值与版本/标签?
本页面