AzureDevops自动部署Hexo博客
前言
如果使用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 | npm install hexo-cli -g; |
注意
(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分钟呢)