管理黑客发布

Managing hackage releases

目前,当我想更新我的一个 hackage 包时,我会经历这个过程。

  1. 将更改推送到 github
  2. 等待 travis-ci 到 运行 更改,以确保我没有收到任何构建错误。
  3. 上传到hackage
  4. 在 git 中标记版本。

自然地,我只想在上一步成功的情况下执行这些步骤中的每一步。

我想其他人也有类似的工作流程,有没有什么东西可以完成所有这些步骤?我可能可以在脚本中执行 (1)、(3) 和 (4),尽管 (2) 我不太确定(也就是说,检查 travis-ci 的结果)但是看起来作为一个常见问题我想知道是否有人已经解决了它所以我不重新发明轮子。

Travis CI 文档现在使这变得非常简单,您可以按照他们的文档了解 deployment to set up conditional deployment (i.e., when a git tag is made). You can configure it to deploy straight to hackage as well, per travis docs

这是一个半完整的示例配置:

deploy:
  provider: hackage
  username: "Hackage User Name"
  password: "Hackage Password"
  on:
    tags: true

根据 Travis 文档注释,"it is recommended to encrypt password. Assuming you have the Travis CI command line client installed, you can do it like this: travis encrypt --add deploy.password"。请参阅他们的 docs on encryption 以获得更多帮助,因为不幸的是我以前没有做过这部分。

这会稍微改变您的工作流程;最终结果将是:

  1. 标记更改并将更改推送到 GitHub
  2. 等待 Travis 测试,如果一切正常,Travis 会为您上传到 Hackage
  3. 如果一切都不好,修复错误,并选择一个新标签。您可以通过删除和重新标记来重新使用该标签,但我不确定 Travis 是否会接受它

因此,如果您可以 运行 在本地进行任何测试,请合理地确保一切正常,您可以标记发布并推送,Travis 会完成剩下的工作。