从开发到生产的代码不必像通常那样容易出错和费时。 通过使用Buddy (一种持续集成和交付工具,可以兼用作强大的自动化平台),您可以自动化开发工作流程的重要部分,包括所有构建,测试和部署。

与许多其他CI / CD工具不同,Buddy具有令人愉悦和直观的用户界面,并具有柔和的学习曲线。 它还提供了大量经过良好测试的操作,可以帮助您执行常见任务,例如编译源代码和传输文件。

在本教程中,我将向您展示如何使用Buddy来构建,测试和部署Node.js应用程序。

先决条件

为了能够继续进行,您必须在开发服务器上安装以下组件:

  • Node.js 10.16.3或更高版本
  • MongoDB 4.0.10或更高版本
  • Git 2.7.4或更高版本

1.设置一个Node.js应用

当然,在进入Buddy之前,您需要一个可以构建和部署的Web应用程序。 如果已经有一个,请随时跳到下一步。

如果您没有可以试用的Node.js应用,则可以使用入门模板快速创建一个。 使用流行的Hackathon入门模板是一个好主意,因为它具有典型Node.js应用程序的所有特征。

在GitHub上分叉模板,并使用git将分叉下载到您的开发环境。

git clone https://github.com/hathi11/hackathon-starter.git

值得注意的是,Buddy与Git存储库一起使用。 它支持托管在GitHub,BitBucket和其他此类流行Git主机上的存储库。 Buddy还具有内置的Git托管解决方案,或者您可以将Buddy与您自己的私有Git服务器一起轻松使用。

克隆完成后,使用npm安装Web应用程序的所有依赖项。

cd hackathon-starter/npm install

此时,您可以在本地运行该应用程序,并使用浏览器进行浏览。

node app.js

以下是该网络应用的外观:


2.创建一个伙伴项目

如果您还没有Buddy帐户 ,那么现在是创建帐户的好时机。 Buddy提供两个高级层和一个免费层,所有这些层都是基于云的。 目前,免费层可以满足您的需求,该层为您提供1 GB的RAM和2个虚拟CPU。

登录到Buddy帐户后,请按“ 创建新项目”按钮以开始使用。


当提示您选择Git托管提供商时,选择GitHub并授予Buddy访问您的GitHub存储库的权限。


现在,您应该可以在Buddy上查看所有GitHub存储库。 单击hackathon-starter存储库以开始为其创建自动化。


请注意,好友会自动将Node.js应用识别为Express应用。 这是因为我们的入门模板使用Express Web应用程序框架。

3.创建管道

在Buddy上,管道使您能够编排和运行所有任务。 每当您需要使用Buddy自动执行某些操作时,都可以为其创建新管道或将其添加到现有管道。

单击添加新管道按钮,开始创建您的第一个管道。 在接下来显示的表单中,为管道命名,然后选择“推入”作为触发模式。 您可能已经猜到了,选择此模式意味着将提交推送到GitHub后就立即执行管道。


下一步是将操作添加到管道中。 为了帮助您入门,Buddy会智能地生成与您的项目最相关的操作列表。


现在,选择Node.js操作,该操作将加载已安装Node.js的Docker容器。 我们将使用此操作来构建我们的Web应用程序并运行其所有测试。 因此,在下一个屏幕上,继续并键入以下命令:

npm installnpm test

4.附加服务

我们的Web应用程序使用MongoDB作为其数据库。 如果启动时无法建立与MongoDB服务器的连接,它将退出并显示错误。 因此,我们在Buddy上的Docker容器必须有权访问MongoDB服务器。

Buddy允许您轻松地将各种数据库和其他服务附加到其Docker容器。 要附加MongoDB服务器,请切换到“ 服务”选项卡,然后选择“ MongoDB” 。 在接下来显示的表单中,您将能够指定详细信息,例如您喜欢的主机名,端口和MongoDB版本。


记下您输入的详细信息,然后按“ 保存此操作”按钮。

接下来,您必须配置Web应用程序以使用Buddy的MongoDB服务器的URI。 为此,您可以更改.env.example文件中MONGODB_URI字段的值,也可以在Buddy上使用环境变量。 现在,让我们继续后一种选择。

因此,切换到“ 变量”选项卡,然后按“ 添加新变量”按钮。 在弹出的对话框中,将“ 密钥”字段设置为MONGODB_URI ,将“ 值”字段设置为基于先前选择的主机名的有效MongoDB连接字符串。 然后按创建变量按钮。


官方文档提供了有关在Buddy管道中使用环境变量的更多信息。

5.运行管道

即使只有一个动作,我们的管道也已可运行。 要运行它,请按运行管道按钮。

现在将带您到一个屏幕,您可以在其中实时监视管道的进度。 此外,您可以按任意   记录按钮(管道中的每个动作都有一个),以仔细查看正在执行的命令的实际输出。


当然,您也可以通过将提交推送到GitHub存储库来运行管道。 我建议您对Web应用程序进行一些更改,例如通过修改views / partials / header.pug文件来更改其标题,然后运行以下命令:

git add .git commit -m "changed the header"git push origin master

当最后一个命令完成时,您应该能够看到新执行的管道自动启动。

6.移动文件

构建成功并且所有测试都通过后,通常需要将代码移至生产环境。 Buddy具有预定义的操作,可以帮助您安全地将文件传输到几种流行的托管解决方案,例如Google Cloud Platform,DigitalOcean和Amazon Web Services。 此外,如果您更喜欢使用自己的运行SFTP或FTP的专用服务器,那么Buddy也可以直接使用这些协议。

在本教程中,我们将使用Google Compute Engine实例作为生产服务器,该实例不过是托管在Google云上的虚拟机。 因此,切换到管道的“ 动作”选项卡,然后按“ 构建和测试”动作下方所示的+按钮添加一个新动作。

在下一个屏幕上,向下滚动到Google Cloud Platform部分,然后选择Compute Engine选项。


在弹出的表单中,您必须指定虚拟机的IP地址。 此外,要允许Buddy连接到VM,您必须提供用户名并选择身份验证模式。

我认为最简单的身份验证模式是Buddy的SSH密钥 。 选择此模式时,Buddy将显示一个RSA公钥,您可以将其简单地添加到VM的授权密钥列表中。


为了确保您输入的凭据有效,现在可以按“ 测试操作”按钮。 如果没有错误,您应该看到如下所示的测试日志:


接下来,选择GitHub存储库作为文件的源,并使用“ 远程路径”字段在Google Cloud VM上指定目标目录。 浏览按钮可让您浏览VM的文件系统并选择正确的目录。


最后,按添加此操作按钮。

7.使用SSH

将代码复制到生产服务器后,必须再次在此处构建并安装其所有依赖项。 您还必须重新启动Web应用程序,以使代码更改生效。 要执行各种任务,您需要一个外壳。 SSH操作为您提供了一个,因此将其添加为管道的最后一个操作。

在弹出的表单中,您必须再次指定VM的IP地址和登录凭据。 然后,您可以键入要运行的命令。 这是安装依赖项并重新启动Node.js服务器的快速方法:

pkill -HUP node #stop node servercd my_projectnpm install  #install dependenciesexport MONGODB_URI=nohup node app.js > /dev/null 2>&1 &  #start node server

如上面的Bash代码所示,您必须重置MONGODB_URI环境变量。 这是为了确保您的生产服务器连接到其自己的MongoDB实例,而不是Buddy的MongoDB服务。

再次按“ 添加此操作”按钮以更新管道。

此时,管道具有依次运行的三个动作。 它看起来应该像这样:


运行管道按钮以启动它。 如果没有错误,则Buddy只需一两分钟即可将Node.js Web应用构建,测试和部署到Google Cloud VM。

结论

能够立即发布Web应用程序的新功能,错误修复和增强功能,可以使您在竞争中占据绝对优势。 在本教程中,您学习了如何使用Buddy的管道,预定义的操作和可附加的服务来自动化和加速诸如构建,测试和部署Node.js应用程序之类的常见任务。

Buddy平台可以做的事情还很多。 要了解更多信息,请参阅其广泛的文档 。

翻译自: https://code.tutsplus.com/tutorials/how-to-build-and-deploy-a-web-app-with-buddy--cms-34009

如何使用Buddy构建和部署Web应用相关推荐

  1. 不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中整合 Tomcat 部署 Web 应用

    不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中整合 Tomcat 部署 Web 应用   我们知道,部署 Web 应用可以直接将 Web 应用的文件夹置于 Tomca ...

  2. 单网卡部署WEB+Mail+FTP+ISA服务器之四:局域网内部署FTP和winwebmail服务器

    一.目的:构建简单FTP和MAIL服务器为下一步发布到互连网做准备.另外如果你觉得Exchange很麻烦,就用winwebmail吧,绝对的简单方便,安全性也不错. 二.网络环境: 三.局域网发布FT ...

  3. 用Ant实现Java项目的自动构建和部署

        Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.        ...

  4. Python学习笔记:Day15 部署Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Head First JSP---随笔九(部署Web应用)

    Web应用部署 Web应用终于到了最后的重要时刻. Web应用部署 2.1 构建Web应用的文件和目录结构,其中可能包含 1. 静态内容 2. JSP页面 3. servlet类 4. 部署描述文件 ...

  6. 如何在 IntelliJ IDEA 中整合 Maven、Tomcat 部署 Web 应用

    如何在 IntelliJ IDEA 中整合 Maven.Tomcat 部署 Web 应用 笔者的环境: JDK 11.0.12 Maven 3.6.3 Tomcat 9.0.41(Servlet 4. ...

  7. 如何构建和部署 SAP Commerce Cloud 项目

    原文链接 SAP Commerce Cloud 提供了许多自助服务功能来配置.构建和部署商务解决方案. 当您第一次开始使用时,似乎需要了解很多.在本文中,我们将带您逐步了解如何使用自助服务功能来配置您 ...

  8. dash使用_使用Dash和SHAP构建和部署可解释的AI仪表盘

    dash使用 In recent years, we have seen an explosion in the usage of Machine Learning (ML) algorithms f ...

  9. Jenkins部署Web项目到远程tomcat

    原网址:http://blog.sina.com.cn/s/blog_b5fe6b270102v7xi.html 之前讲到的是如何构建一个项目,并且将代码进行编译.打包,那么打包完成最后的结果就需要发 ...

最新文章

  1. 设计模式 -- 策略模式
  2. bfs迷宫寻路问题(一看就懂的讲解)
  3. 【Android 逆向】Android 逆向基本概念 ( 定位内存中的修改点 | 基址寻址法 | 搜索定位法 )
  4. single-number-ii
  5. mysql集群会备份数据吗_mysql ndb集群备份数据库和还原数据库的方法
  6. eureka多了一个莫名其妙的服务_SpringCloud 服务注册与发现组件 Eureka
  7. html select设置不选中的值,如何定义 select 默认不选中任何值
  8. 如何在Redhat7.4安装CDH6.2
  9. Tensorflow2.0实战之GAN
  10. DELPHI 对象的本质 VMT
  11. 网络虚拟化中的 offload 技术:LSO/LRO、GSO/GRO、TSO/UFO、VXLAN
  12. 且行且走 (8月24,25日)
  13. 手机上日记APP推荐哪个比较好
  14. php 警告提示框,js弹出对话框(消息框、警告框)
  15. python定义多项式除法_python如何进行多项式的加减乘除
  16. SEO工作者面试基本都会被问到的问题
  17. play-framework的安装配置(OS X和windows版)
  18. Win11 msconfig修改后无法使用系统解决方法
  19. 【锐捷无线】AC热备配置
  20. office各种插件

热门文章

  1. python爬虫微信e校园签到,用Python爬虫的request方式实现自动签到!
  2. OS-机械硬盘的磁盘初始化
  3. linux - 异常:安装包冲突 conflicts with
  4. 好用的vue瀑布流插件-vue-masonry
  5. IO流、字节流和字符流
  6. Python识别身份证号码并检查是否合法(pysseract,dlib,opencv)
  7. Python 和matlab 关于DMD(动态模态分解)的实现和对比 21/06/08
  8. IEC60079-11 附录3电气间隙和爬电距离的计算
  9. python来历_python的由来
  10. 记canvas画笔笔迹的多次优化过程