我们使用节点.js和Golang用于SAP HANA上的前端和后端模块以及HDI容器。我们定义了一个CI/CD管道来保持它们的一致性。
在这篇博文中,我们将解释CI/CD管道是什么样子的,以及它是如何包含HDI容器的概念的。以下是第1部分。这是一段在SAP在线课程中进行的视频。
正如您在上面方框内的方框中看到的,我们的应用程序有三个微服务:
一个前端,一个用节点.js一个用Golang编写的后端应用程序,它还与translateapi进行通信一个数据库访问层,负责使用节点.jsSAP HANA客户端
您可以自己创建此应用程序,希望免费且无需刷卡。我们发布了这个Qwiklab,当你完成实验时,它将在谷歌云上为你启动一台HANA Express机器。最初的免费Qwiklab点数应该足以运行这个实验。我建议你将这个应用克隆到你自己的GitHub中,这样你以后就可以使用它了。
我认为在实际运行时,更好地理解这个管道。因此,物联网系统,假设我们是一组开发人员,负责开发构成我们应用程序的不同微服务。
以下是工具霸主将如何管理我们的一天(或者我们将如何管理他们,我们将看到……)
我们选择Google Cloud Source作为私有git存储库。此回购及其主分支是与应用程序一起"诞生"的。
您知道第一次部署还诞生了什么吗?HDI容器!
就像我们有一个作为主要分支的分支,我们将有一个HDI容器,它将作为对所有对象的引用,并将加载测试数据。
下面是如何使用hana cli创建第一个容器的示例。
如果您想继续/复制和粘贴,这里是asciinema。
默认值-环境.json文件现在包含此容器的凭据。这个节点.js库hdi deploy将查找具有此名称的文件或环境变量VCAP\u SERVICES以连接到SAP HANA并将我们的新表和其他工件部署到hdi容器中。
我们稍后将使用此文件中的内容创建名为VCAP\u SERVICES的环境变量。
为了简单起见,假设我们需要在HDI容器的existin gtable中添加一个额外的列。
我将确保从主分支中提取所有更改。这将把最新的工件也部署到主HDI容器中。
最后,我将创建我自己的分支:
就像我创建了我自己的分支一样,我将使用我刚从主分支提取的部署文件创建我自己版本的HDI容器。
这次,我将在我的容器名称上附加一个标记(在下面的例子中是LS),这样它就不会与主标记冲突(WebIDE自动执行此操作)。
现在我在一个新的.json文件中有了这个容器的新凭据。我将继续对我拉取的表进行更改:
使用默认的新凭据-环境.json文件,云计算大数据,我的RUN\LS容器的文件,物联网大赛,我将部署此更改。默认值-环境.json文件应该在/db文件夹中,有什么免费的云服务器,在那里我们运行这些命令:
这将调用hdi deploy模块,以便它可以创建hdi容器并使用我的表创建架构。
由于我们的凭据不打算离开本地环境,让我们确保.gitignore文件包含以下内容默认.env*.json文件。
现在让我们在每次咖啡休息前提交+推送:
我们现在应该可以在Google云源代码中看到我的Git分支的更改:
我们已经完成了一些更改,并在我们自己的容器上做了一些快速测试。我们已经将这些更改(多次)提交到我们自己的分支中。现在是时候将它们提交到主分支了。
为了防止其他开发人员也在进行更改,我也在再次拉分支。
这里是Asciinema。
在我们合并了更改之后,主分支现在正在显示它们…正如预期的:
我们的"部署"的关键要素之一,"快速失败"的秘诀是自动化。我们什么时候要?一旦我们进入主分支。是的,就像我们刚才做的一样。
我们想确保以前工作的所有东西都能正常工作,但我们需要先将更改部署到主容器中。
我们还想确保在其他人部署时测试我们的新表和工件。这意味着我们的新表也需要纳入自动化测试,因此我们也将把它们构建到管道中。
我们需要一些SAP HANA特定的工具:HANA cli、hdbsql和HANA客户端节点.js如果我们想做一些像这里记录的测试,
我们可以在Docker容器中预安装所有这些,让那个容器进行部署和测试。我们将在未来的博客文章中讨论这个问题,数据挖掘和大数据,但这里是一个什么样的偷窥:
我们正在使用的工具来协调这是云构建。每次有一个push进入主分支时,我们都使用一个触发器来启动构建和测试过程:
使用docker容器并注入VCAP\u服务作为环境变量,以便节点.jsdeployer可以用主HDI容器来实现它的魔力,RUN:
有一个更好的方法来传递这些凭证,使用秘密。但我们会在即将发布的博客文章中保留这一条。
有关如何为其他微服务构建管道的详细信息,以及在生产环境中使用这一条管道的一些调整,请参阅第3部分。
Lucia Subatin和Fatima Silveira。
(最初发布于媒体网站)