其他分享
首页 > 其他分享> > 语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

作者:互联网

作者:Kesha Williams

翻译:Peter

校对:卢迪

集成 Alexa 到 Jenkins 流水线并通过语音跟踪流程的配置远比想象中的简单。

快来看这篇亚马逊 Alexa Champion 成员 Kesha Williams 完成的使用 Alexa 部署代码到云服务的 demo 教程吧。

语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

为何要通过语音操作部署


语音操作革新了我们沟通的方式,因为这是简单的,直接的,高效的。对我来说,通过语音操作 Jenkins 而完全不需要碰触键盘并获得结果是十分便利的。这种情况下,语音是数据操作的另一个切入点并将是后续我们深化自动化操作构建,测试,发布 Java 工程的效率提高保证。

持续集成持续部署


如果你熟悉 DevOps 就会明白持续集成和持续部署对于整个软件产品的发布多么重要。CI/CD 就是持续构建,测试和部署的最佳工程实践。DevOps和CI/CD能够提高软件工程师团队的产品发布效率和工作信心。并直接提高最终产品用户的满意度。

DevOps Pal 综述
DevOps Pal 是一套私有的 Alexa 解决方案,其目的在于构建 Jenkins 工作流。Alexa for bussiness 是在于我看来最贴切的方案,完成基于组织架构的设计并掌握完全的访问权限控制。从 DevOps Pal 一开始执行,就会实时显示执行过程中的工作流详情。

DevOps Pal架构


我使用了一些组件和工具来实现 DevOps Pal。我们先看一下它的具体实现:

语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

整个流程的起始点就是对 Echo 设备说出“Alexa,打开 DevOps Pal 开始部署我的代码”。

Echo 设备监听着激活关键词(如 Alexa,Echo,Computer 或是 Amazon),背后的实现原理是通过深度学习机制来识别用户选择的激活关键词。

一旦捕获到我发出的激活指令,语音就会被录制下来并发送到 Alexa语音服务(AVS),它采用自然语言识别算法(NLU)将语音转换为文字并识别其背后的意图。

于是我的指令就发布到了DevOps Pal;习得技能开始触发 Jenkins 任务执行,并将相应结果通过文本转语音合成机制(TTS)反馈给我,这个过程是通过自然语言播报的。

咱们再分组件具体看一下实现原理:

语音交互模型


语音用户接口(VUI)描述的是沟通工作流的总体情况,是通过Alexa开发控制台实现的

语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

值得强调的VUI组件是激活名称(用户如何加载相关的技能点)以及背后意图(用户如何组织调度技能点的语句)

语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

举个例子,“部署代码的意图”就是当用户说出一些特定的语句来实现的(比如,执行Jenkins工作流,执行Jenkins任务,部署指定代码,部署代码,或是部署)或是一些类似的语句像是,“部署我的代码”

语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

流程的终结点就是推送的技能点的执行边界。本例中,就是通过Python写的Lambda服务。它的业务流程就是通过调用Jenkins的远端服务接口来远程调度任务。

调用任务的URL就是 jenkins_url/ job/job_name/build. API调用时通过基本的鉴权模式并添加 Jenkins 相关信息到 HTTP 请求头来避免跨站请求伪造 CSRF(Cross-site request forgery)***。

当然了,在 Jenkins 2.96 版本以后,可以通过 API token 来验证 API 相应的安全性,而无需再通过 Jenkins 信息和相关密码了。

Jenkins任务


语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

这个’alexa-cicd’任务,就是 DevOps Pal 触发的。通过这个 Jenkins 操作界面,我们能完成相关的操作,但我还是更喜欢使用蓝海 Blue Ocean 的操作界面,它的用户体验更好,更能提高操作的直观性。启动 Blue Ocean 也十分简单,就是安装一个插件,至于到底使用哪个 UI 取决于你自己了。

语音也能做持续集成和持续部署?看 Jenkins + Alexa 如何实现

当Alexa启动了 ’alexa-cicd’ 任务之后,我转到工作流界面。在这里我能看到任务执行的实时信息。每个任务都有四个工作阶段,启动,构建,测试和部署。

在部署的这个最终阶段,我通过命令行(CLI)执行复制生成的 artifact 到 S3 服务器,然后再创建一个基于此版本的 Elastic Beanstalk 应用。

即将引入的新功能


通过语音自动完成部署仅仅是个开始。下面的几个功能都是很快能实现的:

标签:Alexa,部署,持续,DevOps,语音,Jenkins,Pal
来源: https://blog.51cto.com/15127503/2657524