发表埃德·曼2022年2月3日
使用GitHub操作通过电子邮件和Slack发送无实件发行说明
确保科技团队和整个公司都知道刚刚发布的变化非常重要。这使每个人都留下来在循环技术团队正在进行的工作以及系统如何随着时间而变化。去年,我们从詹金斯(Jenkins)过渡到Github行动,以管理我们的CI管道,并在此过程中能够修改我们如何将有关方通知有关方的发布。
我们一直在使用释放草稿几年来(甚至在过渡到动作之前),并且真的很喜欢它如何通过GitHub Pull请求中编译的发行说明提供无摩擦的方法。额外标记拉的请求和制作可分开的发行说明的能力非常有用。采用GitHub动作,我们现在有一种简单的方法来基于GITHUB事件(例如成功部署)触发动作。
我们的主要发布通知手段是以《消失的实时电子邮件》的形式,一旦部署了更改,就需要手动手册将发行说明发送给公司。Mybuilder的SRE团队的主要驱动力之一是消除辛劳,我们将其指定为需要审查的情况。通过转移到GitHub动作,我们现在可以利用提供的事件系统的功能,并可以自动化该过程。经过审查,我们还认为,为工作人员提供了在专用的Slack频道中审查《 Gove oven Live发行说明》的能力,因为这已经超过了电子邮件作为主要的通信平台。
我们想要什么
我们想要一种在没有任何手动干预的情况下,通过电子邮件和Slack渠道自动通知感兴趣的各方通过电子邮件和Slack频道通知有关的实时发行说明。更好的是,如果我们还可以提到Slack Notification中的科技团队的成员基于他们的参与。因此,考虑到这一点,我能够花一天的时间构建几个解决这两个用例的GitHub动作。
电子邮件发布通知器
完整的电子邮件发布通知器可供审核和使用在github上。当在GitHub中发布版本时,内容存储为Markdown,因此,我们必须将此销售转换为HTML,因此可以在电子邮件中介绍。由于不仅可以访问节点运行时,还可以打包NPM依赖项,这是微不足道的。多年来,我们一直在使用SendGrid在Mybuilder处理电子邮件,并选择使用其SDK/API代表我们发送实际电子邮件。
通过新的GitHub操作,我们现在能够将其绑定到成功的部署事件(如下所示),并消除对任何手动任务的需求!
姓名:通过电子邮件通知团队有关发布的信息上:deployment_status工作:通知:如果:$ {{github.event.deployment_status.state =='Success'}}}运行:Ubuntu-20.04脚步:-姓名:通知团队用途:eddmann/电子邮件释放notifier@v1和:至:to@email.com从:来自@email.comsendgridtoken:$ {{{secrets.sendgrid_api_token}}github_token:$ {{{secrets.github_token}}
松弛释放通知器
完整的Slack释放通知器可供审核和使用在github上。在这种情况下,我们不仅希望将其发送到所需的共享渠道,还提供提及技术团队成员基于感兴趣的拉请求更改即将上线。松弛的Webhook支持允许您使用诸如块。这些块可以处理降价子集,该子集对已生成的发行说明非常有用。由于Release Prafter具有将所有贡献者GitHub用户名在编译版本中包括在内的手段,因此用其关联的Slack成员身份(通过查找表输入)代替这些事件是一项琐碎的任务。这意味着,当释放发布并发送了随后的松弛通知时,感兴趣的各方将立即通知此消息。
以类似的方式,我们如何连接电子邮件发布通知器,我们也可以与Slack Communications的同一成功的部署事件结合。
姓名:通过Slack通知团队有关发布上:deployment_status工作:通知:如果:$ {{github.event.deployment_status.state =='Success'}}}运行:Ubuntu-20.04脚步:-姓名:通知团队用途:Eddmann/Slack-Release-Notifier@V1和:Slacktitle:'您的变化是居住!'松懈:'走了居住-{标签名}'githubslackuserlookup:'{“ @githubusername”:“ SlackMemberId”}'SlackWebHookendPointUrl:$ {{necrets.release_slack_webhook_url}}}github_token:$ {{{secrets.github_token}}
笔记:如果需要,这两个任务都可以合并并执行在同一GitHub动作工作流程中。
结论
总而言之,我真的很喜欢探索如何使我们认为使用GitHub动作辛苦的任务自动化。您能够触发行为的丰富的GitHub事件集是无价的,并且使自动化任务(例如易于实现)。现在,我们已经将整个CI管道移至GitHub Actions,我希望能够在未来的时间里更加利用这些功能。