目前最火的 CI 工具当属 Travis CI 了,网上与之相关的文章相当多,同时部署在 GitHub 和 Coding 上的骚操作也不少,这样做的结果显而易见,增加了数据的安全性。当然使用 CI 的优点不止于此,想象一下当你发现发布文章有错别字时,想要修改却苦于电脑不在身边,在其他电脑上,仅仅是配置环境就是很麻烦的一件事。
不过当你使用了 CI 工具后,这些情况大有改观,对于小错误,只需要在 Coding 仓库里修改,CI 工具便会自动部署文章,得益于 Coding 的 Cloud Studio ,你甚至于还可以使用它来修改文章,当然这不是我这一篇文章的重点,在此不做过多讨论,有兴趣的读者可以自己尝试部署一下。
言归正传,Coing 自带的 CI 工具其实就是 Jenkins .
我采取的是 blog 源码和 Jenkinsfile 放到一个私有仓库,生成的静态网页部署在另一个公有仓库。
Coding 密钥的获取
Coding改版以后,要使用访问令牌才可以免密访问仓库,令牌只会显示一次,生成后记得及时复制
clone
时使用 git clone https://user.name:user.password@~
就可以免密clone仓库了,
user.name 和 user.password 便是刚才获得的用户名和访问令牌
Jenkinsfile文件的编写
一顿操作猛如虎后,就是确定方案后就是对流程的细化。
建立两个仓库,一个私有的用来存放 blog 源码和 Jenkinsfile 文件,一个公有的用来存放生成的静态文件。
Jenkinsfile 文件用来检测私有仓库的的行为,发现变化后执行脚本,部署到公有的博客仓库中去。
不得不说这是我遇到的一个大坑,本来 shell 命令写的就不熟练,Coding 还有不少限制。
理清思路后我开始我这样写:
sh 'cd blog'
sh 'hexo g -d'
???显示部署成功,可是没啥反应啊。改成这个样子:
sh 'ls -a'
sh 'cd blog'
sh 'ls -a'
sh 'hexo g -d'
好家伙,在当前目录压根没动。没关系,你不动我动还不行吗,直接把所有的文件都放到根目录下来。
经过一番斗智斗勇,脚本终于写成了,代码如下:
pipeline {
agent {
label 'node-10'
}
stages {
stage('hexo') {
steps {
sh 'npm install -g hexo-cli'
}
}
stage('拉取仓库') {
steps {
sh 'git clone https://~ .'
}
}
stage('发布') {
steps {
sh 'hexo clean'
sh 'hexo g -d'
}
}
}
}