Jenkins自动部署hexo到github


南方二重唱-细说往事


软件开发中有一种称为”持续集成(Continuous Integration)”的方法,其宗旨是团队开发成员可以经常集成软件,进行测试,从而达到小步快进的效果。而持续集成每次都需要构建(包括编译,发布,自动化测试等),如果手动构建会增加很多工作量,于是乎自动化构建应运而生。
Jenkins是常用的一种自动化构建工具。我们以部署hexo来说明Jenkins的基本使用方法。

  1. install Jenkins

  2. use command java -jar jenkins.war to run jenkins.
    java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war可以禁用杀死线程功能,可以在启动hexo server并保持开启。

  3. open web browser, use localhost:8080 to open dashboard.

  4. creat a item named ‘deploy hexo’.

jenkins_create_item.png
  1. configure the item.
    参数化构建,用不同的参数来实现不同目的的构建。jenkins_configure_item1.png
jenkins_configure_item2.png
  1. write script
jenkins_deploy_hexoview raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import subprocess
print ""
print "########################################################################################################"
print ""
print "deploy hexo using Jenkins"
print "author:Wu Chenxu"
print "version:v2.0"
print ""
print "############################################## PARAMETERS ##############################################"
print ""
hexo_dir = 'D:\快盘\hexo'
par_deploy_type = os.environ.get('Deploy_type')
print "Deploy_type:"+par_deploy_type
print "############################################ hexo generate ##############################################"
subprocess.call('hexo clean', shell=True)
subprocess.call('hexo g', shell=True)
if par_deploy_type == 'local':
print "start local server ...."
p=subprocess.Popen(["start", "hexo", "server"], cwd = unicode(hexo_dir, 'utf8').encode('mbcs'),shell=True)
print "start chrome web browser..."
subprocess.Popen(["C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", "http://localhost:4000"], shell=True)
else:
print "start to deploy in github ..."
subprocess.Popen(['start', 'hexo', 'deploy'], cwd = unicode(hexo_dir, 'utf8').encode('mbcs'), shell=True)
  1. build
jenkins_build_item.png

Reference:

  1. Jenkins