【问题标题】:Managing hackage releases管理 hackage 版本
【发布时间】:2017-06-03 07:37:54
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我见过自动发布到黑客攻击的 travis 脚本。例如,如果他们正在构建标签。在这种情况下,工作流程将是在 git 中进行标记,仅此而已。

标签: git haskell github travis-ci hackage


【解决方案1】:

如今,Travis CI 文档使这变得非常简单,您可以关注他们的文档deployment 来设置条件部署(即,当创建一个 git 标签时)。您也可以将其配置为直接部署到 hackage,per travis docs

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

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

请注意每个 Travis 文档,“建议加密密码。假设您安装了 Travis CI 命令行客户端,您可以这样做:travis encrypt --add deploy.password”。有关这方面的更多帮助,请参阅他们的docs on encryption,因为不幸的是我之前没有做过这部分。

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

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

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

【讨论】: