引言
hexo是一个操作简单方便的静态网页式博客,但是这也带来了几个问题。
- 每次
hexo new post ""
写作好以后,都要进行生成网页部署网页的操作,这种重复操作是程序员极为讨厌的行为。 - 同样,每次想要在新的设备上写作就更加麻烦,新设备上要和原设备上有一样的环境,重新配置环境的时候还有可能出现各种问题。花费了一段时间配好环境,开始写作了,又要经历上一个问题。
而各家的持续集成服务就能解决这样的问题,这里推荐coding的CI服务,每个月有1000次的免费持续集成次数,而且提供的服务器配置也很可以了。
下面介绍一些基本概念,不需要的朋友可以直接向下调到教程。
基本概念
持续集成
在软件工程中,持续集成(CI)是指将所有开发者的工作副本每天多次合并到主干的做法。持续集成在现代软件研发流程中,扮演了十分重要的角色。通过对每次提交的代码进行自动化的单元测试、代码检查、编译构建、契约测试,甚至自动部署,能够大大降低了开发人员的工作负担,减少了许多不必要的重复劳动,持续提升代码质量和开发效率。毫无疑问,持续集成是开发者和研发团队的福音。
持续集成是指软件发布流程的构建和单元测试阶段。提交的每一个修订都会触发自动化的构建和测试操作。
采用持续交付时,系统会自动构建、测试并准备代码变更,以便发布到生产环境中。持续交付通过在构建阶段后将所有代码变更部署到测试环境和/或生产环境中,实现对持续集成的扩展。
当然我们想要实现自动部署并不需要完整的持续集成功能,只需要自动构建。
Jenkins
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
没错,它就是一个具体的持续集成解决方案。基于 Java 实现。 可以实现:
- 持续版本发布/测试;
- 监控外部调用执行的工作;
教程
工具
- 能够正常发布使用的hexo本地项目。
- coding账户
- Git
coding访问令牌
新建访问令牌
保存好令牌和用户名备用。
coding项目
本项目中需要一个git仓库,可以使用github||gitee||coding。建议使用coding,因为是采用的coding的集成服务,同平台稳定性高一些。
首先直接创建一个全功能DevOps项目。
进入项目
进入代码仓库,新建一个仓库,因为里面会有配置文件,含有密码等敏感信息,请选择私有仓库。
创建完成后本地文件夹绑定远程仓库。
git remote set-url origin https://e.coding.net/仓库地址.git
本地hexo目录,编辑——config.yml配置文件。找到deploy
采用coding 免费CI构建部署时候每次都是一个新的环境,相当于新的设备,每次都要输入凭证才可以成功部署。我是同时部署在github和gitee,格式为:
github: https://username:token@github.com/项目地址.git
gitee: https://用户名:密码@gitee.com/项目地址.git
github需要采用用户名加token的方式访问,不要使用密码!不要使用密码!会构建失败!
获取token
在https://github.com登录你的帐号,登录以后点击右上角你的头像的Settings
2、 点击Developer settings下的Personal access tokens
3、点击https://github.com/settings/tokens/new这个超链接,就是创建你的token。
4、在Token description中随便填一个描述名称,下面的复选框是你这个token需要的权限,全部勾上就可以了。
然后点击下面这个绿色的按钮:
5、下面这个就是你的token了,可以直接复制使用。将其填入配置文件。
配置持续集成
进入coding项目选择持续集成–构建计划–创建构建计划
上文提到的仓库是新建了coding仓库,在代码仓库中选择你创建的仓库,如果你是放在githu或者其他仓库服务,请选择相应的仓库并授权。之后点击确定。
之后在流程设置中进行设置。
下面贴上代码
pipeline {
agent any
stages {
stage("pull") {
steps {
sh 'ls'
sh 'git config --global user.name "username"'
sh 'git config --global user.email "email"'
sh 'ls'
sh 'git clone https://用户名:令牌@e.coding.net/仓库地址.git .'//输入上面提到的coding用户名和令牌
}
}
stage("hexo")
{
steps
{
sh 'npm install -g hexo-cli'
sh 'npm install hexo --save'
//如果你的hexo项目有其他特别功能需要的服务,可以在此添加相应指令
}
}
stage("发布")
{
steps
{
sh 'hexo cl' //hexo clean
sh 'hexo g' //hexo generate
sh 'hexo d' //hexo deploy
}
}
}
}
开启缓存,加快部署速度。
之后就可以构建了,确认上述操作无误后。点击保存。
自动部署
将hexo本地项目git push到你绑定的的仓库,coding就会自动帮你构建啦。
成功截图。
常见问题
fatal: unable to access ‘https://-----@github.com/----.git/’: Failed to connect to port 443: Connection timed out
一般是config文件中部署设置的用户名或密码错误。
2.fatal: could not read Username for ‘https://gitee.com’: No such device or address
同上 用户名错误
3.
将config中highlight enable改为false
如有疑问欢迎与我沟通。
我的博客:
https://brook2bubble.gitee.io/
https://brookdeng.github.io/
多端协作
关于多端写作,网上有Hexo同步语雀文章,感兴趣的可以搜一搜看一看,但是这样的方法会导致每次写作都要使用语雀来写作,配置起来也更加麻烦。
常用电脑
写作后直接push到仓库
其他电脑
编辑md文档后,上传到仓库_post文件夹。注意文档格式。
md文档头文件
---
title: 使用coding CI服务实现hexo自动化发布部署
date: yyyy-MM-dd HH:mm:ss
categories: [Hexo]
tags: [CI,Coding,hexo,git]
---
手机端
同上,比较麻烦,不过也很少有手机写博客的吧。