DevOps实践:通过云效实现hexo自动构建部署发布

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 项目协作,基础版人数 不受限
云效 DevOps 测试管理,基础版人数 不受限
简介: DevOps是一种融合开发、技术运营和质量保证的流程,旨在增强跨部门沟通与协作。通过自动化软件交付和架构变更,DevOps加速了构建、测试和发布软件的过程。本文作者分享了如何使用阿里云效平台实现个人Hexo博客的自动化部署,从而实现持续集成和持续部署(CI/CD)。在应用DevOps之前,作者需手动上传和部署文件;应用后,只需提交Markdown文件,其余步骤由DevOps平台自动完成。通过云效平台的代码管理和流水线功能,实现了从代码提交到自动发布的无缝衔接。

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。这是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例,是一个软件开发方法论。
DevOps

DevOps的目标是通过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠。这种方法的出现是因为软件行业日益清晰地认识到,为了按时交付软件产品和服务,开发和运维工作必须紧密合作。

研发管理之认识DevOps》介绍了DevOps的概念和价值,本文我们来做一个小小的实践,通过阿里的云效DevOps平台来实现我的xiejava.ishareread.com的hexo博客网站的自动化部署实现持续集成和持续部署(CI/CD)。

一、没有用DevOps之前

我的xiejava.ishareread.com个人博客是通过hexo搭建的。因为是个人博客用hexo搭建比较简单而且还可以通过github的pages服务不用购买自己的服务器都可让大家访问。hexo博客的搭建教程见《通过Git Pages+Hexo搭建自己的博客》毕竟github在国内访问不是很稳定,所以我是购买了一台阿里的云主机ECS来部署我的hexo应用。

在没有用DevOps之前,我是通过自己本地用VS Code来编辑hexo的markdown博文,让后在本地通过执行hexo g命令生成构建hexo网站,然后登录到自己的阿里云主机上将文件传到服务器目录,再在服务器上构建并部署hexo应用。hexo很简单,这样构建发布也很容易,这几年也是这样做的。唯一不方便的就是有时候写的博文要修改,改一次就要重新上传发布到服务器上。毕竟咱也是搞IT的,感觉这样还是很不优雅。能不能提交markdown博文的.md文件候就自动给我发布了,省得每次还要登服务器,上传文件,编译,重启服务搞一系列的操作。

二、用了DevOps之后

为了体现程序员的优雅,我的个人博客xiejava.ishareread.com,小小的hexo用上了DevOps的牛刀。
hexo的DevOps

用了DevOps后,我只需要在本地用VS Code来编辑hexo的markdown博文,提交到代码仓库。后面的构建,打包,部署我都不用管了,直接通过DevOps平台自动做了。

三、如何实践DevOps实现hexo网站的自动发布

DevOps平台工具有很多,最常见的就是大名顶顶的Jenkins,本来想搭一套Jenkins的我的云服务器本来就只有1核1G的内存,更本就扛不住。后来在阿里的网站上看到阿里推出了自己的DevOps平台云效,赶紧来试试。
云效DevOps平台功能很多,包括有项目协作、代码管理、流水线、测试管理、制品仓库、知识库。
在这里插入图片描述

对于我这个小小的hexo个人博客的应用,其他都用不上,我就用了代码管理和流水线。

1、代码管理

将我的hexo博客代码托管到云效的代码管理Codeup代码库。
代码管理

可以支持从github、gitee、coding等代码仓库导入代码库。
云效从其他代码库导入代码

2、构建流水线

新建一条流水线用于拉代码、构建、部署。
构建流水线

1)设置流水线源

这里流水线源就是设置代码源流水线将从代码管理的Codeup代码库获取代码。其实也可以不用托管到云效的Codeup代码库,流水线代码源支持github、gitee、coding等代码仓库。
设置流水线源

2)添加并设置构建环节

云效添加构建环节

因为hexo是通过Node.js构建的,所以这里添加构建任务Node.js构建。
Nodejs构建写入自己的构建命令

在node.js构建节点,可以选择Node的版版本,将自己hexo应用的构建命令写入到构建命令。
我这里只用到了三条命令,安装hexo,从代码库中拉取hexo的主题,通过hexo g生成hexo的博客应用。

npm install -g hexo-cli --unsafe-perm
git clone https://gitee.com/xiejava/hexo-theme-next.git themes/hexo-theme-next
hexo g

这一步的任务输出就会生成hexo的博客应用的制品,给你打好包。下一步的动作就是将打好的制品包上传至自己的服务器进行部署。

3)添加并设置部署环节

云效支持很多种部署,因为我是要部署到自己的云主机,所以选择“主机部署”
添加主机部署环节

要部署到自己的云主机,就要让云效知道你的主机在哪里,可以点击新建主机组,将自己的主机添加进来。
新建主机组

将需要部署的主机添加到主机组
将主机添加到主机组

然后添加在主机上执行的部署脚本
添加在主机上执行的部署脚本

我在主机上hexo 服务进程用supervisor进行了托管,在这里部署脚本只有三条命令。

supervisorctl stop hexo
tar zxvf /home/admin/app/package.tgz -C /home/myhexo/myblog
supervisorctl start hexo

停止hexo的服务,将制品包解压到hexo的目录,然后再启动hexo服务就可以了。
云效还可以定义任务插件,比如在部署成功后发个邮件通知等。
云效邮件通知

到这里流水线就构建好了。

3、测试流水线

设置触发条件,开启Webhook触发,实现提交代码到到云效的Codeup代码库就可以触发流水线,开启自动拉取代码,自动构建、自动打包上传至主机、自动部署的流水线作业。也可以手动运行触发流水线。
设置触发条件

流水线执行后,可以在运行历史中看到每次流水线执行的情况。
查看每次流水线执行情况

也可以收到云效自动发过来的每次部署情况的邮件。
云效邮件通知

4、其他

云效针对流水线还提供了统计报表,可以看到流水线运行的概况的统计数据。
流水线运行的概况的统计数据

四、总结

本文通过一个hexo个人博客进行了DevOps的实践,当然因为项目太小不能实践到DevOps的全部,但也可以窥豹一斑。通过DevOps拉通开发和运维,通过应用DevOps平台能实现自动化“软件交付”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,提交研发交付效率。


博客地址:http://xiejava.ishareread.com/

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
目录
相关文章
|
11天前
|
监控 Devops 测试技术
利用DevOps提升开发效率:技术实践与策略
【7月更文挑战第4天】DevOps通过自动化、CI/CD、协作与沟通等手段,显著提升了软件开发的效率和质量。随着云计算、容器化、自动化测试等技术的不断发展,DevOps的实践将更加深入和广泛。未来,更多的企业将采用DevOps文化,构建高效、灵活、可靠的软件开发和运维体系,以应对快速变化的市场需求。 总之,利用DevOps提升开发效率是软件开发领域的重要趋势。通过实施上述实践策略,企业可以加速产品迭代,提高市场竞争力,实现可持续发展。
|
17天前
|
敏捷开发 缓存 测试技术
阿里云云效产品使用问题之购买高级版云效后,该怎么运营
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1天前
|
运维 监控 安全
DevOps文化下的高效运维实践
【7月更文挑战第14天】在软件开发与运维日益融合的今天,DevOps不仅仅是一种技术实践,更是一种文化的转变。本文将探讨如何在DevOps文化的引领下,通过一系列高效运维的策略与工具,实现持续集成、持续部署和持续监控,进而提高软件交付的速度与质量。我们将从自动化、监控、日志管理、容器化以及安全等方面展开讨论,旨在为读者提供一套完整的高效运维解决方案。
|
14天前
|
运维 监控 Devops
DevOps实践:构建高效运维流程
【6月更文挑战第29天】在现代软件开发周期中,DevOps已成为推动开发和运维团队紧密合作的重要哲学。本文将探讨如何通过DevOps实践来构建一个更高效的运维流程,从而提升软件交付速度、提高产品质量,并确保系统的稳定性和安全性。我们将从持续集成、自动化测试、配置管理、容器化部署、监控与告警等关键方面入手,深入分析DevOps实施过程中的关键环节及其对运维工作的影响。
36 3
|
17天前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
17天前
|
敏捷开发 弹性计算 负载均衡
阿里云云效产品使用问题之如何将应用部署到部署组的某一台特定服务器上
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
17天前
|
存储 JavaScript 前端开发
阿里云云效操作报错合集之如何解决云效流水线内存溢出的问题
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
17天前
|
Java Devops API
阿里云云效操作报错合集之云效页面提示数据库保存不进去,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
17天前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用问题之如何在新版本的云效上迁移老版本的流水线
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之如何在新版本的云效上迁移老版本的流水线
|
10天前
|
Prometheus 运维 监控
DevOps实践中的监控策略与工具应用
在当今快速发展的软件交付领域,DevOps实践已成为提升效率、确保质量的关键因素。本文深入探讨了在DevOps流程中实施有效监控的必要性,分析了监控数据对于优化运维工作的价值。文章首先概述了监控在DevOps中的作用,随后详细介绍了一系列现代监控工具,并通过实际案例展示了如何整合这些工具以构建强大的监控系统。最后,文中讨论了监控策略的最佳实践,旨在帮助读者构建一个全面、自动化和高效的监控体系。