Drone CI的语义释放?

时间:2018-06-09 22:16:37

标签: docker continuous-integration drone

我想要构建和部署类似于semantic-release的两个不同项目。我已经写过a small stand-alone binary,可以给出适当的semver bump给定分支(master)和传统更改日志提交历史记录。

我的一个项目是Docker镜像。这是我正在寻找的流程:

  • 运行测试等
  • 提交至master(仅master)...
  • 确定是否存在semver bump(使用我的实用程序)
  • 如果没有,不做任何事
  • 如果是,请将图片发布到Dockerhub
  • 如果是,请将标记/发布发布到Github

我的另一个项目是Go项目。我在类似的流程之后:

  • 运行测试等
  • 提交至master(仅master)...
  • 确定是否存在semver bump(使用我的实用程序)
  • 如果没有,不做任何事
  • 如果是这样,请使用附加的二进制文件(来自之前的构建步骤)将标记/发布发布到Github

我注意到有两个插件似乎可以为此提供解决方案:the Docker pluginthe Github Release plugin。 Docker一个看起来很简单,但Github Release一个我还没有能够开始工作。它甚至不会出现在我的管道中。

我可以从中获取任何输出的唯一方法是删除when: event: tag,这会抛出一个错误,说明需要条件......但至少它会运行。这提出了一个问题,因为我希望此版本 创建 一个标签&发布,而不仅仅是 反应 到标记事件 - 不管我似乎无论如何我都可以尝试将标记推送到我的仓库并且插件仍然无法显示为构建步骤。如果我做出反应,那么我必须构建master两次:一次创建标记,一次构建项目并进行发布。

如何在Drone中设置如上所述的流程?

为了记录,我没有在任何一个步骤中使用我的实用程序,因此无论如何都不会使插件执行短路。

Here is my Go project with .drone.yml,如果它有帮助。

0 个答案:

没有答案