在Heroku上使用Slack集成而不使用Github

73次阅读
没有评论

问题描述

想在Heroku上使用Slack集成,以便在部署流水线成功或失败时发送消息。然而,在设置和登录Heroku时,它要求用户提供Github帐户,并且不允许选择其他的版本控制系统提供商。用户使用Bitbucket,这使得他无法使用Slack集成来进行流水线通知。用户想知道是否有人在过去解决过这个问题。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

ChatOps使用GitHub状态检查,因此它是专门针对GitHub的,不适用于其他提供商。但是,如果你只是想要通知,那么Heroku的应用Webhooks怎么样?它们有一个用于新应用发布的实体(api:release),这可能在某种程度上对你有所帮助…至少你可以为成功的发布设置通知。
另外,你可以监听api:build实体的create事件,以了解何时开始构建,以及update事件以了解其状态的变化 – 我没有使用过,但我认为它会包含一个字段,用于指示构建是否成功或失败。
要订阅Webhook,你可以使用Heroku CLI:

heroku webhooks:add --include api:build --level sync --url https://example.com/hooks

更详细的信息可以在文档中找到这里。你将收到的负载将如下所示。

{
  "id": "01234567-89ab-cdef-0123-456789abcdef",
  "include": ["api:build"],
  "level": "sync",
  "url": "https://example.com/hooks"
}

然而,这并不能直接将消息发送到Slack,所以你需要一个中间件来完成这个任务。这里有一个我从一个分支中fork的小型Sinatra应用。它将Docker Hub的通知转换为Slack期望的传入Webhook的格式。你可以很容易地编辑它,使其转换Heroku的Webhook。然后,将这个小应用部署到Heroku上,这就是你在上面的Webhook订阅中放置的URL。
这可能比你想要的步骤多。也许已经有人在某个地方做过了…但是我可以说,至少按照上述的方式做,你将获得更多的灵活性,可以根据需要创建自己定制的工作流程!

正文完