服务器建站笔记-博客应用
本博客的自动Deploy任务建立。这个博客采用的jekyll建立的,在github pages上能够发布的同时在自己的VPS上能够自动发布。
Capistrano可以用来自动deploy,扥在Jenkins上运用有着诸多问题。如果在Capistano中不存储明文密码,就要解决ssh-key的问题。这个问题困惑了很久。
但在这次实验中中,deploy的目标服务器与Jenkins服务器是同一个服务器,简单通过rsync就能解决deploy问题,但是这种设置需要一些很危险的设置。在理想情况下,还是以下的流程比较好:
方案1
- 代码中配置capistrno的production的deploy选项,采用github + ssh进行deploy
- git push到github
- github触动hook访问jenkins
- jenkins获取pull代码,检查deploy条件。比如是否master有修改,是否test通过等等。
- jenkins运行capistano的deploy任务
- capistano运行,ssh连接目标服务器从github上获取代码进行deploy
这样的deploy可以自动进行deploy的版本控制,维持deploy记录,同时保存历次deploy的成果等等好处。 但实际上这次的流程为(先安全的运行起来,有时间再去折腾方案1的可行性):
方案2
- git push到github
- github触动hook访问jenkins
- jenkins获取pull代码,检查deploy条件。比如是否master有修改,是否test通过等等。
- 使用rsync与deploy目标文件夹进行本地同步
配置jenkins
参考这里设置一个deploy的jenkins任务,deploy的条件是当master有改变的时候执行(这里暂无test)。
deploy时的任务
同时需要配置的是jenkins的权限。jenkins发布时采用的是jenkins用户,需要对/home/wills/app/fdwills.github.io/有控制权限。于是在/etc/sudoers里面对jenkins用户打开权限
ok, 到这里为止就可以了,然后需要做的就是完成jenkins与github之间的hook连接。
Test一下,本地做修改后,反应到github之后,就通过jenkins自动编译发布到了远程服务器上。