BLOG LOGO

夢覺

梦想的梦,觉醒的觉。。。

Use Jenkins to Auto Build Jekyll and Octopress

| Comments

这个真的是蛮有意思的,起因是在SSH写文字非常的不舒服,因为那个环境对汉字的支持实在是太差了。而自己又是非常地喜欢用sublime text2打字,所以就想到了这个方法:

  • 在windows下,用sublime text2写作,然后用SVN传到Ubuntu VM上;
  • 在Unbutu上设立Jenkins自动编译系统,Jenkins把写好的markdown文件编译为html,然后上传到github.com;

用到的工具:

Ubuntu VM:

https://www.ubuntu.com

SVN:

Server: https://help.ubuntu.com/community/Subversion
Client: http://tortoisesvn.net/downloads.html

Jenkins:

http://www.jenkins-ci.org

Octopress:

http://octopress.org

Git:

http://github.com

Demo

看几张Demo再说

  1. 首先,我们在Sublime Text2里面写好文字

  2. 然后,我们使用SVN把我们写作用的文本checkin到Ubuntu VM的SVN仓库

  3. 然后,等就可以,大概1分钟Jenkins就会被SVN的checkin触发,然后编译上传到github去

配置步骤

  1. 当然是要有一个Linux的虚拟机,当然,如果你有多余的电脑,可以安装一个真实的Linux环境当作你的服务器,硬件不需要太好,10年前的机器都能跑得起linux的。虚拟机我们这里推荐Ubuntu,因为他的仓库更新比较快,文档也非常地全,后面的软件安装起来比较方便。

  2. 就是配置SVN Server,在Ubuntu上配置SVN Server还是比较方便,上面的工具列表里有一篇文章,非常地详细,按照里面的步骤去做,一定可以成功的。如果你想要安装具有WebDAV能力的SVN Server,你还需要安装Apache Server,安装这个非常地简单,只要用sudo apt-get install apache2就可以了。如果实在对英文有障碍,那建议使用这篇文章,写的也还不错,不过还是不建议使用中文资料,错误一知半解的太多了。

  3. 配置Jenkins,也建议直接用Jenkins官方的办法去安装和配置非常方便,如果严格按照那个步骤来,一定可以成功的。

  4. 后面就简单了,到windows桌面上来,下载一个SVN客户端,我们这里使用的是tortoisSVN,开源的软件,GUI的界面,更新也很好很快,建议不要选其他的了。安装好后,就会在你的右键菜单里看到下图类似的菜单,就说明安装成功了。

  5. 然后打开linux,或者使用SSH工具连到Linux上去,使用svnadmin创建一个repo。svnadmin create myblog 如下图所示: 然后用浏览器去看一下,是否可以访问你的新创建的REPO。如下图

  6. 安装octopress,这个过程在官方网站里说明的非常清楚,按照去做就可以了。

  7. 然后就是配置Jenkins了,首先用浏览器打开jenkins的dashboard。如下图:

  8. 然后点击”New Job”,选择”Build a free-style software project”,然后选择SVN,填入SVN的地址,如下图所示:

  9. 下面就来配置triggers,我们这里要选择的是Poll SCM,意思是通过SCM系统的变化来触发jenkins,什么叫SCM系统的变化,SCM的意思是Software Configuration Management,就是一个软件的管理系统,比如SVN,当我们checkin文件到我们的REPO中时,SCM会为我们的SCM系统创建一个最新的哈希值标明当前管理软件的版本。

  10. 我们这里配置了SCM Poll并且设定Schedule为every minute(* * * * *),意思是每隔一分钟Jenkins将会去检查我们的软件版本是否有更新,如果有任何文件的增、删、改,都会改变软件的版本号,Jenkins就会被触发并checkout最新的软件版本进入编译。

  11. 注意这里的Jenkins的Scheulde必须要配置,如果你觉得每分钟都检查,太频繁了,你可以自定义自己的schedule。如下图所示:

  12. 最后就是配置Build Steps,这里非常地关键,如果没有build steps,那Jenkins就不知道你要做什么,当然你的文章也不会被发布。我们使用的参数如下:`

1
2
#!/bin/bash
cat ~/pwd | sudo -S su - test -c "sh /home/test/o.deploy.sh"
  1. 这里是一个linux shell的一小段简单的脚本,这里的脚本并没有执行任何的build动作,只是把当前jenkins的运行的user从jenkins切换到其他具有相应能力的user,比如我这里用的是”test”,我使用test这个用户去管理和发布我的octopress,所以必须切换过去。其他的配置,请参考这篇文章

  2. o.deploy.sh的脚本也非常地简单: 如图所示:

最后

基本就这些,如果想一样这样很酷的玩写作,请也加入jenkins,哈哈。任何问题,可以浏览,只懂中文和英文。另外这篇文章就是被Jenkins发布的,我的手没有动linux哦,没有,看哦,背在背后。