Travis CI:仅发布php composer包的传递标记版本

Travis CI:仅发布php composer包的传递标记版本,php,continuous-integration,composer-php,travis-ci,packagist,Php,Continuous Integration,Composer Php,Travis Ci,Packagist,我们有git存储库,它们是Composer、php包 要在上发布其中一个Composer软件包的新版本,我们目前执行以下操作: 创建一个新的git标记,如v1.0.0,并将其推送 Travis CI接受此更改并运行我们的测试 Packagist(composer)也会选择新标签并自动神奇地发布新版本v1.0.0 我们在该工作流中遇到的问题是: 如果测试失败,我们的包将发布一个损坏的版本 公关工作流程将缓解这一问题,尽管并非完全如此 大多数包装经理,如NPM;具有发布/发布功能 创建一个PR并

我们有git存储库,它们是Composer、php包

要在上发布其中一个Composer软件包的新版本,我们目前执行以下操作:

  • 创建一个新的git标记,如
    v1.0.0
    ,并将其推送
  • Travis CI接受此更改并运行我们的测试
  • Packagist(composer)也会选择新标签并自动神奇地发布新版本
    v1.0.0
  • 我们在该工作流中遇到的问题是:

    • 如果测试失败,我们的包将发布一个损坏的版本
    • 公关工作流程将缓解这一问题,尽管并非完全如此
    • 大多数包装经理,如NPM;具有发布/发布功能

    创建一个PR并且只在通过构建时合并到master中是非常好的。尽管它仍然允许维护人员从主版本发布未通过CI的版本,但如果他们放弃PR工作流程。

    您能描述一下进行更改的过程吗?尤其是开源项目,通常会针对稳定的主分支创建一个Pull请求(PR),然后通过Travis进行检查。仅当PR通过时才允许合并PR。您还可以为每个合并到特定分支(如master)中的合并运行Travis。这样,您就可以在标记发布之前知道构建是否稳定。在任何情况下,更多地了解您的流程有助于给出更具体、更有用的答案。我同意@dbrumann的观点-与其试图解决问题,不如避免它。通常的做法是仅在发布准备就绪时标记发布,也就是说在它通过测试之后。所以流程通常是:创建一个PR,让它通过测试,合并到master,标记,推送和释放。当然。我们目前一直在避免公关工作流程,因为我们的软件包(除了一些)在最初几个月需要快速开发,然后在这之后,他们将进入公关工作流程,正如你们所描述的;这将缓解问题。。。我已经更详细地更新了这个问题。你能描述一下你进行更改的过程吗?尤其是开源项目,通常会针对稳定的主分支创建一个Pull请求(PR),然后通过Travis进行检查。仅当PR通过时才允许合并PR。您还可以为每个合并到特定分支(如master)中的合并运行Travis。这样,您就可以在标记发布之前知道构建是否稳定。在任何情况下,更多地了解您的流程有助于给出更具体、更有用的答案。我同意@dbrumann的观点-与其试图解决问题,不如避免它。通常的做法是仅在发布准备就绪时标记发布,也就是说在它通过测试之后。所以流程通常是:创建一个PR,让它通过测试,合并到master,标记,推送和释放。当然。我们目前一直在避免公关工作流程,因为我们的软件包(除了一些)在最初几个月需要快速开发,然后在这之后,他们将进入公关工作流程,正如你们所描述的;这将缓解问题。。。我已经更详细地更新了这个问题。