[ 更换 ]
热门城市
北京上海广州深圳成都杭州南京武汉天津西安重庆青岛沈阳长沙大连厦门无锡福州济南宁波昆明苏州郑州长春合肥南昌哈尔滨常州烟台南宁温州石家庄太原珠海南通扬州贵阳东莞徐州大庆佛山威海洛阳淮安呼和浩特镇江潍坊桂林中山临沂咸阳包头嘉兴惠州泉州三亚赣州九江金华泰安榆林许昌新乡舟山慈溪南阳聊城海口东营淄博漳州保定沧州丹东宜兴绍兴唐山湖州揭阳江阴营口衡阳郴州鄂尔多斯泰州义乌汕头宜昌大同鞍山湘潭盐城马鞍山襄樊长治日照常熟安庆吉林乌鲁木齐兰州秦皇岛肇庆西宁介休滨州台州廊坊邢台株洲德阳绵阳双流平顶山龙岩银川芜湖晋江连云港张家港锦州岳阳长沙县济宁邯郸江门齐齐哈尔昆山柳州绍兴县运城齐河衢州太仓张家口湛江眉山常德盘锦枣庄资阳宜宾赤峰余姚清远蚌埠宁德德州宝鸡牡丹江阜阳莆田诸暨黄石吉安延安拉萨海宁通辽黄山长乐安阳增城桐乡上虞辽阳遵义韶关泸州南平滁州温岭南充景德镇抚顺乌海荆门阳江曲靖邵阳宿迁荆州焦作丹阳丽水延吉茂名梅州渭南葫芦岛娄底滕州上饶富阳内江三明淮南孝感溧阳乐山临汾攀枝花阳泉长葛汉中四平六盘水安顺新余晋城自贡三门峡本溪防城港铁岭随州广安广元天水遂宁萍乡西双版纳绥化鹤壁湘西松原阜新酒泉张家界黔西南保山昭通河池来宾玉溪梧州鹰潭钦州云浮佳木斯克拉玛依呼伦贝尔贺州通化朝阳百色毕节贵港丽江安康德宏朔州伊犁文山楚雄嘉峪关凉山雅安西藏四川广东河北山西辽宁黑龙江江苏浙江安徽福建江西山东河南湖北湖南海南贵州云南陕西甘肃青海台湾内蒙古广西宁夏香港澳门
培训资讯网 - 为兴趣爱好者提供专业的职业培训资讯知识

自动化运维:如何零停机构建与部署项目

机构 构建 自动 自动化

自动化运维:如何零停机构建与部署项目

行业挑战

  • 互联网新技术的普及带来大量异构的IT架构形态及管理节点数量成倍增长,传统运维方式难以满足业务敏捷的需求;
  • 企业IT系统越来越多,系统间连接协作困难;
  • IT部门难以从简单重复的运维工作中解脱,工作难以获得认可;
  • 企业运维水平对IT员工依赖度高,“重复造轮子”,知识经验难以沉淀复用;
  • “救火式运维”普遍存在,IT员工压力大,成就感弱,个人价值难以体现。

本文,我们将向您展示如何配置一个流水线,该流水线将在零停机的情况下构建、测试和部署项目。零停机是一种部署技术,可让您在此过程中通过终端用户完全更新网站。

自动化运维:如何零停机构建与部署项目

请确保在您服务器上安装SSH,因为我们需要使用SSH运行一些命令以修改部署。

新建项目

在此,我们将使用一个静态React网站作为演示,您可以从:GitHub存储仓上获取示例源码,此存储仓基于React快速上手文档创建。(React是一个用于构建用户界面的JavaScript库)

进入Buddy系统并新建一个项目。选择你的目标Git托管,在此我们使用Buddy系统自带的Git托管作为演示,当然您也可以使用其他的Git托管提供商:

自动化运维:如何零停机构建与部署项目

流水线配置

流水线是在存储仓代码环境中运行并在特定条件下触发的一组操作(例如构建、测试或部署)。

在这里,我们设置触发条件和要从中部署的分支。由于我们要全自动化,因此将触发模式设置为事件(自动)。我们使用的项目只有一个分支(master),因此保持默认:

自动化运维:如何零停机构建与部署项目

构建配置

现在,Buddy将要求您向流水线添加操作。选择Node.js操作 – 我们将使用它作为构建的模板:

自动化运维:如何零停机构建与部署项目

Buddy使用具有预配置环境的隔离容器作为构建模板

您可以在此处配置构建详情,例如使用的Node版本和将在容器中运行的命令。您可以保留默认命令 - 只需在行末添加npm run build:

npm install
npm test
npm run build
复制代码

自动化运维:如何零停机构建与部署项目

测试构建

运行流水线以查看一切是否正常。第一步,Buddy将从您的存储仓中提取最新更改并设置环境变量。在第二步中,Buddy将下载所需的依赖项并将其缓存在容器中 - 存留在那以供将来执行,这样您就不必再次进行下载。您可以单击正在运行的执行并展开操作中的日志以了解详细信息:

自动化运维:如何零停机构建与部署项目

文件系统

执行完成后,将生成对流水线文件系统的构建。文件系统包含上次执行的修订版中存储仓的克隆、构建操作生成的工件以及手动上传的静态文件(例如配置文件)。您会注意到工件会标有一个小的宝石图标:

自动化运维:如何零停机构建与部署项目

部署配置

下一步是添加一个操作,该操作会将我们的构建上传到服务器。在这种情况下,作为示例我们将通过SSH部署到腾讯云服务器,我们推荐使用SFTP作为传输操作:

自动化运维:如何零停机构建与部署项目

虽然示例使用SFTP与腾讯云,但您也可以使用所需的任何服务器、私有云、专有云服务器,有如阿里云华为云以及专有的Buddy操作集成AzureAWS谷歌云DigitalOceanHerokuNetlifyVultrRackspace等等。将来,我们还会集成更多便捷专有的Buddy操作云服务提供商集成。如果您是云服务提供商并欲提供Buddy操作集成,请通过此电子邮件联系我们:support@buddy.red

操作界面允许您配置部署详细信息:服务器的访问凭据、Buddy将从中上传文件路径以及服务器上的目标路径。您可以从多种身份验证方法中进行选择 - 我们始终建议使用 Buddy的工作区密钥作为最安全的身份验证方法。

在示例中,网站将从存储仓中的构建目录(源路径)部署到服务器上的/var/www/html/hello(远程路径):

自动化运维:如何零停机构建与部署项目

自动化运维:如何零停机构建与部署项目

测试部署

单击Test action测试按钮以检查是否正确配置所有信息。Buddy将连接到服务器,上传测试文件,然后删除将测试文件删除。完成后保存设置单击运行流水线按钮或将某些内容推送到存储仓以触发流水线并将网站上传至服务器:

自动化运维:如何零停机构建与部署项目

如果出现连接问题,请确保将Buddy用于部署的IP列入白名单。

零停机部署

流水线现已完全正常运行:每当进行推送时,Buddy都会提取更改、运行单元测试、准备构建并将其上传到服务器。现在是时候让我们升级流程了,以确保应用程序在部署期间不会遭受任何停机。

我们将应用一个简易的技巧:首先将应用程序上传到新创建的文件夹,然后在部署完成后将服务处理过程切换到新路径位置。

编辑部署文件夹

单击部署操作以编辑其详细信息,并将部署到的文件夹(远程路径)更改为$BUDDY_EXECUTION_REVISION/。这将在每次执行时自动创建一个以当前部署的修订命名的新文件夹。如果您在GitHub上使用我们的项目,完整路径将如下所示:

/var/www/html/$BUDDY_EXECUTION_REVISION
复制代码

自动化运维:如何零停机构建与部署项目

Buddy将检测到远程路径已更改,并要求您采取措施。保持原样并单击继续 – 我们需要先在服务器上添加一些命令:

自动化运维:如何零停机构建与部署项目

添加服务器命令

现在,我们将添加一个操作,该操作将连接到我们的服务器,并运行将在部署后将服务进程切换到新路径位置的命令。在操作名单中查找SSH:

自动化运维:如何零停机构建与部署项目

该操作以与部署完全相同的方式定义:您需要提供身份验证方式、服务器凭据以及将在其中执行命令的目录(将此目录保留为默认值)。当然,我们也需要适当的命令。填写服务器详细信息并将以下内容粘贴到命令窗口中:

#kill current http-server process
kill $(lsof -t -i:80) || true
#run maintenance page
http-server -p 80 /var/www/html/$BUDDY_EXECUTION_REVISION > http.log 2>&1 &
复制代码

第一个命令将终止当前服务进程。第二个将从部署操作创建的新位置运行。

该操作应如下所示:

自动化运维:如何零停机构建与部署项目

测试零停机部署

推送代码到存储仓以触发流水线或手动运行该流水线,并检查执行日志是否正确传递:

自动化运维:如何零停机构建与部署项目

恭喜 – 您已成功将零停机部署引入交付流程!

请注意,此示例中的应用程序可以在几秒钟内完成部署,并且不需要绝对100%的正常上线运行时间。此方案最适合用于可能需要几分钟(甚至几小时)才能完成上传的复杂网站与程序部署。

暂存环境配置

在将网站部署到生产服务器之前,最好在暂存服务器上预览更改,并可能运行一些端到端测试。在本文的这一部分中,我们将重新配置流水线以从端口3000为网站提供服务,并将部署到生产环境 - 但仅在手动确认更改后。

创建暂存服务器

第一步是添加另一个SSH操作,该操作将在服务器上创建新的服务进程。您可以使用操作添加界面上的复制选项,而不是从头开始配置所有内容:

自动化运维:如何零停机构建与部署项目

复制时,将项目和流水线保留为默认值,但不要复制所有操作,而是仅选择SSH操作:

自动化运维:如何零停机构建与部署项目

流水线中应有两个相同的SSH操作。单击第一个以编辑其详细信息并将端口从80更改为3000:

#kill current http-server process
kill $(lsof -t -i:3000) || true
#run maintenance page
http-server -p 3000 /var/www/html/$BUDDY_EXECUTION_REVISION > http.log 2>&1 &
复制代码

自动化运维:如何零停机构建与部署项目

完整的流水线应如下所示,第一个SSH操作设置为端口3000,第二个设置为端口80:

自动化运维:如何零停机构建与部署项目

为避免混淆,最好将两个SSH操作的默认名称重命名为两个带不同说明的名称,例如:暂存服务器操作生产服务器操作。您可以在“概述”设置选项卡中执行此操作。

添加手动确认

在每次推送时将网站部署到生产环境而不检查更改是一项有风险的业务。除非测试完全涵盖该过程并通过多个环境发布,否则强烈建议将流水线触发模式切换为手动,或者在部署到生产环境之前添加手动确认步骤 - 最后一个是我们现在要做的:

单击最终发布步骤之前的 + 按钮,然后在操作列表中查找等待审批

自动化运维:如何零停机构建与部署项目

您可以在此处定义问题并将审批权限限制为选定的用户组:

自动化运维:如何零停机构建与部署项目

现在,一旦运行流水线,它将自动停止并且在确认更改之前不会继续运行。但是怎么让审批人员知道有一个网站在等待他们的批准呢?

这时,我们将给他们发送提醒通知。

通知用户部署

再次单击 + 按钮 - 这次是在批准操作之前。跳转到右列中的通知,然后选择您的首选服务:

自动化运维:如何零停机构建与部署项目

在此示例中,我们将使用 Slack,因为它是用户中最受欢迎的通知服务。

每当您首次添加与第三方服务集成的操作时,Buddy都会要求您配置集成详细信息。在此,您可以定义集成的权限范围,即谁可以修改其详细信息并添加需要它的流水线操作:

自动化运维:如何零停机构建与部署项目

最后一步是接受所选应用程序的OAuth权限:

自动化运维:如何零停机构建与部署项目

配置集成后,您可以指定消息。最好将 URL 粘贴到暂存网站,以便团队成员可以快速访问:

自动化运维:如何零停机构建与部署项目

测试暂存至生产部署

对网站进行一些更改并运行流水线。执行应在发布到生产环境之前停止:

自动化运维:如何零停机构建与部署项目

您还应在所选服务中收到通知:

自动化运维:如何零停机构建与部署项目

单击批准按钮以继续执行剩余操作并实时发布网站。

恭喜 – 您已成功为您的网站创建完整的暂存/生产交付流水线!

附加: 条件通知

流水线现已完全正常运行。它无需停机即可交付应用程序,将网站上传到暂存服务器,通知团队有新版本等待审批,并在更改获得批准后将其发布到生产环境。

但是,如果在此过程中出现问题怎么办?例如,如果测试失败怎么办?好吧,首先要做的是通知相关人员。我们已经针对有能力的开发人员提供了有关新版本的通知操作。但是,在这种情况下,我们需要通知QA或Dev - 但前提是流水线遇到中断。

转到流水线总览,然后单击于失败标签按钮:

自动化运维:如何零停机构建与部署项目

添加您选择的其他通知。编辑邮件并选择正确的频道/收件人:

自动化运维:如何零停机构建与部署项目

测试条件通知

是时候进入好玩的部分了 - 故意破坏您的网站。例如,让我们在 /src/App.test.js 搞坏一个import破坏:

自动化运维:如何零停机构建与部署项目

推送更改以触发流水线。执行将在测试这一步骤上失败,除了最后的通知不会执行进一步的操作:

自动化运维:如何零停机构建与部署项目

附加: 终端调试

Buddy有一个很酷的功能,让你直接从终端调试错误。请转到所需的执行进行访问,然后在失败的操作上单击“在终端中调试操作”:

自动化运维:如何零停机构建与部署项目

Buddy将启动容器备份,允许您在交互模式下运行命令并调试问题:

自动化运维:如何零停机构建与部署项目

请注意,终端调试被视为正常执行。除非工作区中具有并行性操作,否则任何后续执行都将进入列队排队执行。

HYDO自动化运维:自动化监控与运维解决方案

自动化运维:如何零停机构建与</div>
<div class=

上一篇:50 VSCode插件,帮你打造地表最强IDE!

下一篇:如何设计软件系统的可维护性

相关内容

怎么学?如何干?西藏7市(地)委书记在西藏日报发表文章

启航新征程 开创新局面为全面建设社会主义现代化新拉萨努力奋斗自治区党委常委、拉萨市委书记 普布顿珠党的二十大大笔擘画坚持以中国式现代化全面推进中华民族伟大复兴的宏伟蓝图,区党委十届三次全会全面铺开建设美丽幸福西藏、共圆伟大复兴梦想的壮阔实践···

2023年全区智慧旅游专业人才培训班圆满结业

6月2日,自治区旅游发展厅主办的全区智慧旅游专业人才培训班在拉萨圆满结业。培训共历时三天,累计完成全区旅游行政管理部门工作人员及涉旅企业专业技术人员培训100人。本次培训是区旅发厅深入推进学习贯彻习近平新时代中国特色社会主义思想主题教育重要···

徐汇萨迦共同举办大美西藏首届口腔学习班

随着现代医学的发展,口腔健康越来越受到人们的关注,为提高西藏地区口腔技术水平和服务质量,近日,徐汇区牙病防治所和萨迦县中心医院远程连线共同举办首届口腔学习班开班仪式。徐汇区卫生健康委副主任胡强,上海援藏干部、萨迦县委常务副书记、常务副县长沈···

自觉抵制“一对一”“一对多”等学科类培训!哈尔滨中小学生暑期预警来了

17日,记者从哈尔滨市各区教育局获悉,2023年暑假将至,南岗区、道里区、香坊区教育局向家长发出预警,自觉抵制违规培训,各区义务教育阶段学科类培训机构已经全部注销,暑假期间以任何形式开展的学科类培训均属于违规培训。家长要自觉抵制任何机构或个···

哈尔滨市道里区企投局举办“招商大讲堂”专题培训

黑龙江网讯(记者 王惠婷)10月24日,哈尔滨市道里区企投局组织开展“招商大讲堂”专题培训班,全区各招商专班负责同志及业务骨干参加培训。本次培训从实际需求出发,紧紧围绕当前招商工作中的热点、难点,对“什么是招商引资”“道里区的产业结构和主导···

团黑龙江省委举办全省青年文明号青年岗位能手学习宣传贯彻党的二十大精神培训交流会

中国青年报客户端讯(李海涛)为深入学习贯彻党的二十大精神,充分发挥青年文明号、青年岗位能手示范引领作用,在全省职业青年中掀起学习党的二十大精神热潮,11月22日,团黑龙江省委举办全省青年文明号青年岗位能手学习宣传贯彻党的二十大精神培训交流会···

辽宁葫芦岛举办外贸政策培训会推动外贸保稳增量

辽宁省葫芦岛市外贸政策培训会4月3日举办。 辽宁省贸促会供图中新网葫芦岛4月3日电 (李晛)辽宁省葫芦岛市外贸政策培训会4月3日举办。本次活动由辽宁省贸促会支持、葫芦岛市商务局主办,葫芦岛市贸促会、葫芦岛海关、中国出口信用保险辽宁分公司和辽···

山西运城:严查无证校外培训机构 查封9家警告2家

新华社太原8月5日电(记者王飞航)记者从山西省运城市政府了解到,运城市教育局近日联合市公安局等多家单位,对中心城区无证校外培训机构进行了一次突击检查,共检查了13家校外培训机构,查封9家,警告2家,发放整改通知书4份。今年7月,运城市教育局···

山西开展培训筑牢森林“防火墙”

山西新闻网3月30日讯(记者 卢奕如)今日,记者从山西省应急管理厅获悉,全省举办森林草原防灭火业务培训,邀请专家以视频会议形式,围绕森林扑火指挥实操、森林草原火灾防控经验做法、火灾现场各级各类指挥员具体操作中遇到的问题等内容进行授课。培训内···

校外培训机构治理工作取得进展 山西停办近1300所

资料图:小学生排队等待进入校园。中新社记者 刘文华 摄中新网5月11日电 据教育部网站消息,按照校外培训机构专项治理工作整体安排,教育部、民政部、国家市场监管总局启动了校外培训机构治理专项督查工作。5月9日至10日,督查组率先在北京市开展华···

山西综改区举办省技术创新中心申报培训

  8月18日,山西综改区科技金融部举办2023年度省技术创新中心申报培训会,来自区内企业、科研院所及有关单位代表160余人参加了培训。  山西省技术创新中心是以产业前沿引领技术和关键共性技术研发为核心的产业技术创新平台,承担着为区域和产业···

山西汾阳医院开展健康教育与控烟知识培训

来源:【吕梁日报-吕梁新闻网】本报讯 (记者 刘少伟) 5月18日,在“世界无烟日”到来之际,山西汾阳医院组织开展健康教育与控烟知识培训。近年来,山西汾阳医院全面落实健康中国战略,根据国家卫健委《关于2011年起全国医疗卫生系统全面禁烟的决···

山西省文物局年度田野考古技术培训班开班

10月10日,山西省文物局在运城闻喜上郭城址、邱家庄墓群举办2023年度田野考古技术培训班开班仪式。该次培训为期三个月,通过理论和实践两部分教学,旨在推进山西考古工作高质量发展,提升考古业务人员专业技术水平。本次培训由山西省考古研究院和山西···

最低每课时9元!全省学科类校外培训课时长和收费标准出台

近日,山西省发改委、省教育厅下发《关于中小学学科类校外培训收费标准及有关事项的通知》,明确全省中小学学科类校外培训收费标准,从12月17日起执行。《通知》对全省线上线下学科类校外培训基准收费标准和浮动幅度制定了科学标准。其中,义务教育阶段线···

山西天镇 阳光职业培训学校培养乡村“新农人”乡村振兴添动能

(记者 贺文生) 山西天镇县阳光职业培训学校紧紧围绕乡村振兴战略,按照“政府引导、农民自愿、立足产业、突出重点”的原则,创新高素质农民技能培训方式方法,采取以“授人以渔”的方式,让人才振兴成为助推农业农村现代化的内生动力,以高素质农民引领现···

山西:建立全过程 全链条 无缝隙安全培训制度

黄河新闻网讯(记者杨江涛)日前,山西省应急管理厅下发了《山西省安全培训管理暂行办法》(以下简称《办法》)。我省将进一步抓好安全生产这个基本盘、基本面,推动全省安全培训工作制度化、规范化、科学化,促进安全培训工作高质量发展。山西省应急管理厅厅···

山西:艺考培训机构纳入全国监管平台管理

央广网太原10月6日消息(记者郎麒) 日前,山西省教育厅、省发改委、省公安厅等部门联合制定《加强面向高中阶段学生艺考培训规范管理工作方案》,针对艺考培训的突出特点和实际情况,全面规范艺考培训行为,将艺考培训机构统一纳入全国校外教育培训监管与···

太平财险阳泉中支开展消防安全教育和有限空间作业培训

为强化员工安全意识,进一步提升员工消防和有限空间突发事件应急处理能力,9月14日,太平财险阳泉中支邀请北京市卫民安消防教育咨询中心山西分中心讲师向全体员工开展了一次消防安全教育和有限空间作业课程培训。按照防消结合、预防为主的原则,本次讲座通···

山西省数字化转型贯标试点工作宣贯培训会在太原举行

  10月20日消息,山西省数字化转型贯标试点工作宣贯培训会在太原举行。省工信厅介绍,作为国家数字化转型贯标试点省份,试点启动后将引导企业加快数字化转型,助力制造业高端化、智能化、绿色化发展。  今年,工信部启动数字化转型贯标试点工作,我省···

山西马兰花创业培训讲师大赛收官 太原市获多个奖项

山西新闻网8月31日讯(记者 冯耿姝)8月29日,山西省第四届马兰花创业培训讲师大赛圆满收官,太原市代表队在比赛中分获多个二、三等奖和优秀奖。本届大赛以“启迪创新思维·激发创业梦想”为主题,全省共有56名教师晋级复赛,其中,太原市有7名选手···