AzureDevops自动部署Hexo博客

标签: Azure 分类: 软件 创建时间:2020-12-11 08:45:15 更新时间:2024-11-15 10:49:42

前言

如果使用hexo d进行部署的时候,会出现很慢的情况,往往需要很长时间,这个时候有没有什么办法能实现自动部署呢?刚开始我尝试了使用国内的coding,但是总是卡在执行hexo d命令这一关,主要是因为执行hexo d 需要连接github,但是我使用的是ssh方式登录的,所以就卡在了密钥的验证这一关上,尝试了很多方法也写了一篇文章(Coding代码仓库及CICD) 进行描述,但是最终还是失败了,于是我只能放弃了。

GitLab也提供CI/CD命令,但是官网价格说明中显示,免费的CI/CD,只有400分钟。

后来我就尝试着使用AzureDevops进行部署,当然经过不断的测试和尝试,还是完成了相关的工作,主要分为三步,或者说是两步。

1.安装SSH密钥

(1) 添加安全文件
可以到官网 查看步骤。其实就是在项目的 Pipeline->Library->Secure Files,上传本地(~/.ssh/id_rsa)的私钥文件,然后添加步骤的时候,

(2) 选择 Install an SSH key 插件

(3) 输入known Hosts
然后输入:Known Hosts Entry (使用:ssh-keyscan github.com 命令查看)

(4) 配置 SSH Public Key
就是 id_rsa.pub 文件中的内容。

(4) 选择SSH Key
就是第一步上传的 id_rsa 文件

2.执行命令行

这一步可以分为两步,第一就是执行npm install,然后再执行hexo部署。当然也可以直接合并成一步,就是执行命令行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
npm install  hexo-cli -g;
npm install;
git config --global user.name "bibichuan";
git config --global user.email "bibichuan";
hexo g;
hexo d;

## 其他的步骤
npm install gulp -g;
cd themes/btheme/extend/gitee;
npm install;
cd ..;
cd minifyimg;
npm install;

## 使用变量代替需要进入的目录里,这个目录最终可能是 D:ar1a/_blog
~~cd $(System.DefaultWorkingDirectory)/_blog;~~

cd _blog;
gulp giteeUpdate;

注意
(1) 执行命令行的时候,高级下面的工作目录要选中。

(2) 如果是多行的话,最后添加的处理器是PowerShell或者是Bash,而不是Cmd,因为Cmd的多个命令行好像不能分开写,如果分开写,只会执行第一行,后面分号分割的命令,就无法执行了。

(3) 在使用命令行的时候,也可以使用变量,比如上面的:cd $(System.DefaultWorkingDirectory)/_blog; 就是进入工作目录,其中System.DefaultWorkingDirectory就代表了系统工作目录。 使用系统环境变量的时候,还是要查查手册,到底如何引用环境变量。

参考文章:
1.使用预定义变量 这里有代理变量 (DevOps Services)、生成变量 (DevOps Services)、管道变量 (DevOps Services)、部署作业变量 (DevOps Services)、系统变量 (DevOps Services)、检查变量 (DevOps Services)
2.定义变量 可以自定义变量的内容。

3.保存并执行自动构建任务就可以了。

4.说明

这里有几点需要注意的地方就是:

  • 如果CommanLine命令行工具不支持输入多行的化,试者使用PowerShell执行多行命令,每一条命令后面添加分号结尾

  • 需要设置工作目录,否则 npm install 找不到pacakge.json所在的路径。

  • 要手动设置git config –global user.name “bibichuan” 和 git config –global user.email “bibichuan”;

  • 还有就是虽然最后显示的命令行执行失败,但是实际上是执行部署成功了,这一点确实让我很是不解 问题找到了,其实是因为我同时部署了gitee和github,但是只是安装了github的ssh密钥,但是没有针对gitee进行密钥配置,也就是写gitee的Known Hosts Entry,所以才会导致能部署到github,但是部署不到gitee。又因为AzuerDevops执行命令行的时候,一步出错了,那么就不会执行下一步了,同时会显示错误。也可以尝试使用参考文章1中的方法进行配置使用ssh-keyscan直接将内容输出到known_hosts中

参考文章:
1.给Hexo博客配置Azure CI持续集成实现自动部署 (这篇文章的作者使用了AzureDevops成功部署了了hexo,但是在我使用界面配置的时候,出现了hexo不是内部命令的问题)
2.谁才是世界上最好的 CI/CD 工具? (这篇文章对比了几个CI/CD工具的优略,但是没有加入gitlab的比较,还是差了点)
3.CI/CD 工具选型:Jenkins 还是 GitLab CI/CD? (这篇文章同时对比了Jenkins和GitLab,针对两者的不同,及其优缺点进行了详细的描述)
4.使用GitLab Ci 自动部署Hexo到GitHub (这里使用的是gitlab进行的自动化部署,但是我有一个地方没有明白,就是gitlab提供的免费的CI/CD是多长时间,提供的插件又包括了哪些文件,难道是完全免费的吗?当然,最后还是找打了官方的售价,就是400分钟免费的CI/CD命令,看样子还是AzureDevops大气)
5.Github pages部署hexo博客的缺点 (这里有使用Github page的部署)
6.所有开源项目免费使用,GitHub 内置 CI/CD终于来了! (好家伙,github的自动CI/CD,有免费的2000分钟呢)
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。