利用Azure DevOps实现Hexo自动部署

Posted by QingQue on 2020-06-29

无意间看到微软云新用户免费使用12个月的广告,于是想试试微软的vps,注册了微软云,发现微软赠送免费服务很多。在翻看免费服务时,发现Azure DevOps居然有无限制的Git存储服务,每个月送CI/CD 1800 分钟。看到这个服务,不经让我眼前一亮,前段时间在想用Travis CI实现自动部署发布Hexo,既然微软送了,索性就利用起来,这样可以实现博客备份并同时自动部署。

废话不多说了,看操作吧!

准备工作

  • 微软账号
  • Visa信用卡一张
  • 梯子(微软很多服务,在国内访问速度不佳,甚至不能访问)

注册完成之后,进入门户(Portal),在搜索栏中搜索免费服务。点进去之后,就可以看到所有的免费服务啦!在永久免费服务下面找到Azure DevOps,点击创建,跟随引导创建即可。

创建项目

进入Azure DevOps,如果没有创建组织(Organization),就先创建组织。然后创建项目,和Github创建项目一样,创建完成之后进入,找到Repos点进去,添加SSH key方便我们后面把Hexo push上去

写Build构建脚本

Azure DevOps中没有提供Hexo的部署脚本,所以我们就动手自己写一个吧(并非我原创,在网上找的)!

在Hexo博客根目录下新建pipelines.yml(名字随便取,但后缀一定是yml)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
trigger:
- master
#Hexo 原项目分支名
pool:
vmImage: 'Ubuntu-16.04' # 运行环境

steps:
- task: NodeTool@0 # 安装NodeJS
inputs:
versionSpec: '12.x'
displayName: 'Installing Node.js...'

- task: InstallSSHKey@0 # 导入SSH
inputs:
hostName: git.ihitun.com,149.129.100.153 ecdsa-sha2-nistp256 AAAAE... #本地~/.ssh下的know_hosts文件里面的内容(和你git域名对应的那一行)
sshPublicKey: ssh-rsa AAAAB3NzaC1... #本地~/.ssh下的id_rsa.pub内容
sshKeySecureFile: id_rsa # 对应私钥文件名
displayName: 'Installing SSH...'

# 安装Hexo脚手架,Hexo依赖
- script: |
npm install -g hexo-cli
npm install
displayName: 'Installing dependencies...'

# 清理(可选),生成public静态目录(可选)
- script: |
hexo clean
hexo g
displayName: 'Building...'

- script: |
ssh-keyscan -t git.ihitun.com >> ~/.ssh/known_hosts #我这里为了防止意外,所以在往known_hosts文件里面添加fingerprint
git config --global user.name "qingque"
git config --global user.email "qingque@ihitun.com"
hexo d
displayName: 'Deploying...'

上传私钥(id_rsa)

要把我们本地的私钥上传到Pipelines里面,然后后面运行会报错。
左侧Pipelines - Library - Secure files上传私钥文件“id_rsa”。
点击进入刚上传的私钥,选中“Authorize for use in all pipelines”以允许Build任务读取

Push和构建

把Hexo博客Push到Azure DevOps的项目仓库,Push上去之后,进入项目的Pipelines,新建Build。

图示1

在Select中选择我们自己的仓库。

图示2

图示3

图示4

在第四步直接点击Run运行

图示4

等待1分钟左右,如果出现绿色勾,就证明成功部署啦!

微软云的DevOps相关服务,网上资料很少,如果喜欢Travis CI的,可以自行去折腾一下!

如果文章中有错误,请各位亲即时留言指正!小弟感谢直至!


分享到: