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客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
目录
相关文章
|
15天前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
39 2
|
5天前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
DevOps实践中的安全审核和合规性
|
5天前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率?
DevOps实践中,如何平衡开发速度和安全审核的效率?
|
7天前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
|
8天前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
DevOps实践中的安全审核和合规性
|
16天前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
44 4
|
16天前
|
运维 监控 Devops
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第26天】DevOps作为一种将开发与运维紧密结合的文化和实践,通过促进团队协作与自动化流程,实现快速、稳定且高质量的软件交付。本文重点探讨持续交付与持续反馈两大支柱,通过实际案例和示例代码,展示其构建与实践过程。例如,使用Jenkins构建CI/CD流水线,通过Grafana和Prometheus实现实时监控,确保软件质量和快速响应。
27 1
|
10天前
|
运维 Devops jenkins
DevOps实践之持续集成与持续交付
【10月更文挑战第32天】在软件开发的快节奏世界中,DevOps已经成为提升效率和质量的关键策略。通过将开发(Development)和运维(Operations)紧密结合,DevOps促进了更快速的软件发布和更高的可靠性。本文将深入探讨DevOps的核心组成部分——持续集成(CI)和持续交付(CD),并展示如何通过实际代码示例实现它们,以帮助团队构建更加高效和稳定的软件发布流程。
|
15天前
|
运维 Devops jenkins
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第27天】DevOps文化强调开发和运维的紧密合作,以实现快速、高质量的软件交付。核心在于持续交付和持续反馈。本文探讨了如何通过改变组织结构、构建跨功能团队、使用自动化工具(如Jenkins)和积极收集用户反馈,来构建和实践DevOps文化。
27 0
|
20天前
|
运维 安全 Devops
DevOps实践:持续集成与持续部署(CI/CD)的自动化之路
【10月更文挑战第22天】在软件交付的快速迭代中,DevOps文化和实践成为企业加速产品上市、保证质量和提升客户满意度的关键。本文将通过一个实际案例,深入探讨如何利用持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)实现软件开发流程的高效自动化,包括工具选择、流程设计以及问题解决策略。我们将一起探索代码从编写到部署的全自动化旅程,揭示其对企业运维效率和产品质量所带来的深远影响。