Jenkins: 基础篇(环境配置)

自动化领域比较有影响力的开源框架jenkins,确实比较强大,易用。不少公司将其用来作持续即成CI(continuous integration)。为了拓展和强化本身的软件设计生态系统,也将好久前使用过的jenkins再熟悉一下。在这里作下备忘。java

 

首先就是下载jenkins安装包,其实所谓的安装,是习惯说法,这个直接从官网下载后,一个war包(jenkins.war, 60M大小左右),直接就能够启动运行。我本地安装的是最新版本1.644. 因为jenkins是java写的,运行过程当中须要有JDK,即java要先安装且配置好JAVA_HOME。linux

 

查看下个人java home信息:git

1 [root@CloudGame jenkins]# echo $JAVA_HOME
2 /usr/java/jdk1.8.0_65

 

这个基本要求具有后,就能够启动jenkins了,这里演示,就直接java -jar jenkins.war来启动,固然,jenkins也能够在任何servlet容器里面运行,好比Tomcat等。web

 1 [root@CloudGame jenkins]# java -jar jenkins.war 
 2 Running from: /home/webWps/jenkins/jenkins.war
 3 webroot: $user.home/.jenkins
 4 Jan 20, 2016 1:57:50 PM winstone.Logger logInternal
 5 INFO: Beginning extraction from war file
 6 Jan 20, 2016 1:57:50 PM org.eclipse.jetty.util.log.JavaUtilLog info
 7 INFO: jetty-winstone-2.9
 8 Jan 20, 2016 1:57:51 PM org.eclipse.jetty.util.log.JavaUtilLog info
 9 INFO: NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet
10 Jenkins home directory: /root/.jenkins found at: $user.home/.jenkins
11 Jan 20, 2016 1:57:52 PM org.eclipse.jetty.util.log.JavaUtilLog info
12 INFO: Started SelectChannelConnector@0.0.0.0:8080
13 Jan 20, 2016 1:57:52 PM winstone.Logger logInternal
14 INFO: Winstone Servlet Engine v2.0 running: controlPort=disabled
15 Jan 20, 2016 1:57:52 PM jenkins.InitReactorRunner$1 onAttained
16 INFO: Started initialization
17 Jan 20, 2016 1:57:52 PM jenkins.InitReactorRunner$1 onAttained
18 INFO: Listed all plugins
19 Jan 20, 2016 1:57:53 PM jenkins.InitReactorRunner$1 onAttained
20 INFO: Prepared all plugins
21 Jan 20, 2016 1:57:53 PM jenkins.InitReactorRunner$1 onAttained
22 INFO: Started all plugins
23 Jan 20, 2016 1:57:53 PM jenkins.InitReactorRunner$1 onAttained
24 INFO: Augmented all extensions
25 Jan 20, 2016 1:57:58 PM jenkins.InitReactorRunner$1 onAttained
26 INFO: Loaded all jobs
27 Jan 20, 2016 1:57:58 PM hudson.model.AsyncPeriodicWork$1 run
28 INFO: Started Download metadata
29 Jan 20, 2016 1:57:58 PM hudson.model.AsyncPeriodicWork$1 run
30 INFO: Finished Download metadata. 2 ms
31 Jan 20, 2016 1:57:59 PM org.jenkinsci.main.modules.sshd.SSHD start
32 INFO: Started SSHD at port 34811
33 Jan 20, 2016 1:57:59 PM jenkins.InitReactorRunner$1 onAttained
34 INFO: Completed initialization
35 Jan 20, 2016 1:57:59 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
36 INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@6ddaa30c: display name [Root WebApplicationContext]; startup date [Wed Jan 20 13:57:59 CST 2016]; root of context hierarchy
37 Jan 20, 2016 1:57:59 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
38 INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@6ddaa30c]: org.springframework.beans.factory.support.DefaultListableBeanFactory@17cfc9f4
39 Jan 20, 2016 1:57:59 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
40 INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@17cfc9f4: defining beans [authenticationManager]; root of factory hierarchy
41 Jan 20, 2016 1:57:59 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
42 INFO: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@574f6e10: display name [Root WebApplicationContext]; startup date [Wed Jan 20 13:57:59 CST 2016]; root of context hierarchy
43 Jan 20, 2016 1:57:59 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
44 INFO: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@574f6e10]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1006f1b7
45 Jan 20, 2016 1:57:59 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
46 INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1006f1b7: defining beans [filter,legacy]; root of factory hierarchy
47 Jan 20, 2016 1:57:59 PM jenkins.InitReactorRunner$1 onAttained
48 INFO: Started initialization
49 Jan 20, 2016 1:57:59 PM jenkins.InitReactorRunner$1 onAttained
50 INFO: Listed all plugins
51 Jan 20, 2016 1:57:59 PM jenkins.InitReactorRunner$1 onAttained
52 INFO: Prepared all plugins
53 Jan 20, 2016 1:57:59 PM jenkins.InitReactorRunner$1 onAttained
54 INFO: Started all plugins
55 Jan 20, 2016 1:57:59 PM jenkins.InitReactorRunner$1 onAttained
56 INFO: Augmented all extensions
57 Jan 20, 2016 1:57:59 PM jenkins.InitReactorRunner$1 onAttained
58 INFO: Loaded all jobs
59 Jan 20, 2016 1:57:59 PM jenkins.InitReactorRunner$1 onAttained
60 INFO: Completed initialization
61 Jan 20, 2016 1:57:59 PM hudson.WebAppMain$3 run
62 INFO: Jenkins is fully up and running

之因此能够直接java -jar jenkins.war运行,从这个启动日志中能够看到,是由于jenkins内部集成了jetty这个web服务程序,正如spring-boot的框架,默认集成Tomcat服务程序同样。spring

 

jenkins的启动后,默认http://localhost:8080就能够打开查看web UI了,易用就体如今全部的相关配置都在web ui上完成。免除对命令行不习惯的用户的烦恼,也不须要这里配置一点,哪里配置一点的脑裂痛苦。还有,也能够本身设置选定的端口号,这样就能够: java -jar jenkins.war --httpPort=8081 , jenkins有不少启动配置选项,能够经过--help查看:apache

 1 [root@CloudGame jenkins]# java -jar jenkins.war --help
 2 Running from: /home/webWps/jenkins/jenkins.war
 3 webroot: $user.home/.jenkins
 4 Jenkins Continuous Integration Engine 1.644
 5 Usage: java -jar jenkins.war [--option=value] [--option=value]
 6 
 7 Options:
 8    --extractedFilesFolder   = folder where extracted files are to be located. Default is the temp folder
 9    --daemon                 = fork into background and run as daemon (Unix only)
10    --config                 = load configuration properties from here. Default is ./winstone.properties
11    --prefix                 = add this prefix to all URLs (eg http://localhost:8080/prefix/resource). Default is none
12    --commonLibFolder        = folder for additional jar files. Default is ./lib
13    
14    --logfile                = redirect log messages to this file
15    --logThrowingLineNo      = show the line no that logged the message (slow). Default is false
16    --logThrowingThread      = show the thread that logged the message. Default is false
17    --debug                  = set the level of debug msgs (1-9). Default is 5 (INFO level)
18 
19    --httpPort               = set the http listening port. -1 to disable, Default is 8080
20    --httpListenAddress      = set the http listening address. Default is all interfaces
21    --httpDoHostnameLookups  = enable host name lookups on incoming http connections (true/false). Default is false
22    --httpKeepAliveTimeout   = how long idle HTTP keep-alive connections are kept around (in ms; default 5000)?
23    --httpsPort              = set the https listening port. -1 to disable, Default is disabled
24                               if neither --httpsCertificate nor --httpsKeyStore are specified,
25                               https is run with one-time self-signed certificate.
26    --httpsListenAddress     = set the https listening address. Default is all interfaces
27    --httpsDoHostnameLookups = enable host name lookups on incoming https connections (true/false). Default is false
28    --httpsKeepAliveTimeout   = how long idle HTTPS keep-alive connections are kept around (in ms; default 5000)?
29    --httpsKeyStore          = the location of the SSL KeyStore file.
30    --httpsKeyStorePassword  = the password for the SSL KeyStore file. Default is null
31    --httpsCertificate       = the location of the PEM-encoded SSL certificate file.
32                               (the one that starts with '-----BEGIN CERTIFICATE-----')
33                               must be used with --httpsPrivateKey.
34    --httpsPrivateKey        = the location of the PEM-encoded SSL private key.
35                               (the one that starts with '-----BEGIN RSA PRIVATE KEY-----')
36    --httpsKeyManagerType    = the SSL KeyManagerFactory type (eg SunX509, IbmX509). Default is SunX509
37    --spdy                   = Enable SPDY. See http://wiki.eclipse.org/Jetty/Feature/NPN
38    --ajp13Port              = set the ajp13 listening port. -1 to disable, Default is disabled
39    --ajp13ListenAddress     = set the ajp13 listening address. Default is all interfaces
40    --controlPort            = set the shutdown/control port. -1 to disable, Default disabled
41    
42    --handlerCountStartup    = set the no of worker threads to spawn at startup. Default is 5
43    --handlerCountMax        = set the max no of worker threads to allow. Default is 40
44    --handlerCountMaxIdle    = set the max no of idle worker threads to allow. Default is 5
45    
46    --sessionTimeout         = set the http session timeout value in minutes. Default to what webapp specifies, and then to 60 minutes
47    --mimeTypes=ARG          = define additional MIME type mappings. ARG would be EXT=MIMETYPE:EXT=MIMETYPE:...
48                               (e.g., xls=application/vnd.ms-excel:wmf=application/x-msmetafile)
49    --maxParamCount=N        = set the max number of parameters allowed in a form submission to protect
50                               against hash DoS attack (oCERT #2011-003). Default is 10000.
51    --usage / --help         = show this message
52    --version                = show the version and quit
53    
54 Security options:
55    --realmClassName               = Set the realm class to use for user authentication. Defaults to ArgumentsRealm class
56    
57    --argumentsRealm.passwd.<user> = Password for user <user>. Only valid for the ArgumentsRealm realm class
58    --argumentsRealm.roles.<user>  = Roles for user <user> (comma separated). Only valid for the ArgumentsRealm realm class
59    
60    --fileRealm.configFile         = File containing users/passwds/roles. Only valid for the FileRealm realm class
61    
62 Access logging:
63    --accessLoggerClassName        = Set the access logger class to use for user authentication. Defaults to disabled
64    --simpleAccessLogger.format    = The log format to use. Supports combined/common/resin/custom (SimpleAccessLogger only)
65    --simpleAccessLogger.file      = The location pattern for the log file(SimpleAccessLogger only)
View Code

 

下面,打开浏览器看看效果吧:windows

这里,是我测试用的一个环境,里面有意个mueas的project,这个项目以前都是手动操做build,如今,但愿用jenkins来定时操做build。浏览器

 

我会将这个项目删除掉,而后新建一个,演示这个操做过程。删除job,貌似web ui上没有哟,这个其实也很简单,在jenkins的默认运行环境路径下,将其删除便可(~/.jenkins/jobs),删除后,须要从新启动jenkins。否则web ui上还会有记录,这个多是缓存里面的数据吧。下面,将mueas job删除,从0开始说说基本的配置,因为我这个mueas项目是基于maven的,因此,我就以这个为例子,作介绍。缓存

1 [root@CloudGame .jenkins]# cd jobs/
2 [root@CloudGame jobs]# ll
3 total 4
4 drwxr-xr-x 4 root root 4096 Jan 20 13:01 mueas
5 [root@CloudGame jobs]# rm -rf mueas/

 

如今说配置的事情。个人mueas项目,是用git这个SCM工具管理的,因此,在jenkins里面,须要安装git的插件。jenkins的插件管理很是牛叉啊,现有的插件都有200多个,根据须要,本身选择安装,不须要的还能够uninstall。在jenkins>Manage Jenkins>Manage Plugins>Available下面搜索须要的插件,为了方便后续继续使用,我将git, git-client,git-server都安装了,还有一个GitHub的插件,这个也能够勾上。安装完后,须要重启哟,这个是jenkins的特色,是否是有点像windows安装应用程序后要重启os的感脚。。。因为我已经安装了,我就将安装了的tab页相关信息截图参考一下吧。session

 

先说下,这个是删除掉以前的mueas job后重启完成的界面,因为一个job都没有,提示是否建立job。这是后话。这里主要是说从如何找到plugin的安装页面。下图展现我已经安装了的插件,这里有些是jenkins默认就安装的,红色框的是我安装的git相关的插件。彻底能够根据本身项目须要选择安装。

除了上面红色的框,发现没,maven的集成插件也有,若没有,也须要本身安装maven插件的。再说说这个绿色的框,里面有的后面有Downgrade信息的按钮,这个是针对插件更新用的,这个更新是向低版本更新哟。

 

须要的插件安装完了,那么,就要说说系统环境配置了。以下图所示,也很容易找到Jenkins>Manage jenkins>Configure System

 

这里说说,最基本的配置信息吧,其余的都采用jenkins默认的配置。须要配置的,以下图,红色框选部分,另外,JDK以及Maven安装信息,要根据本身的系统环境进行配置。个人JDK以及Maven安装路径分别是:/usr/java/jdk1.8.0_65和/usr/local/apache-maven-3.3.3(其余部分的信息,是系统自动填上的,就让其存在吧,有的是必要的,有的是没有用的,对我这个项目来讲):

上面显示的就是主要要配置的,配置好后,点击保存便可。

 

下面进入job的建立了,这里才进入主题哟,呵呵,其实,真正的项目开发中,不少设置环境或则平台搭建的这种不能直接体现出经济效益的事情,更能反映出一个技术人员的功底。废话哈!

 

而后进一步作配置,下面作详细的配置,主要是git相关的配置。我选择的源码管理工具是git,配置URL,这个就是咱们在linux下作clone用的那个url,如出一辙,由于jenkins运行的时候也是要从远程repo上clone待build的project。另一个很重要的配置,就是下面的credential了,这个估计很容易搞错。

 

那么就说说这个credential的配置,看下图,我在Kind下拉框中选择的是SSH Username with private key,由于咱们的git仓库,采用的是SSH key访问的。这里的username填什么呢?这个是要和下面的private key配合的,就是指当前访问git repo远程仓库采用的认证属主,个人demo中,在git远程仓库的根目录下的.ssh里面那个authorized_keys文件里面追加的公钥是root用户的。在这里,也是用这个用户来代理操做clone过程。因此,username是root,private key内容为/root/.ssh/id_rsa这个私钥的内容。我选择的private key的类型是Enter directly,因此,要将私钥的内容完整的拷贝到这里哟。注意,-----BEGIN RSA PRIVATE KEY -----以及对应的结尾信息也一并拷贝过来哟。

 

接下来,须要配置build的策略了,就是build项目的那个分支,我这里选择的是master,这个也是系统默认的配置。另外,就是build的触发机制,我这里选择的是周期触发,这个配置有些相似linux的corn的规则。我这里配的是但愿天天晚上11点半启动build过程。

点击schedule右边的问号按钮,有详细的帮助信息。我这里贴一个简单的规则描述,方便理解上面配置当中各个数字的含义以及可能都有什么配置。

This field follows the syntax of cron (with minor differences). Specifically, each line consists of 5 fields separated by TAB or whitespace:
MINUTE   HOUR   DOM   MONTH   DOW
MINUTE   Minutes within the hour (0–59)
HOUR      The hour of the day (0–23)
DOM        The day of the month (1–31)
MONTH    The month (1–12)
DOW        The day of the week (0–7) where 0 and 7 are Sunday.

 

最后的配置,就是想作什么的事情。我但愿让其打包,而且不须要执行unit test工做,就是红色框中的内容。注意,这里要填写的是Goals (以及选项,固然选项能够没有),不要带上mvn指令,不然会出错的哟。(错误信息主体为:You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id> 。。。。)

 

固然,这当中还有不少其余的配置,好比build前预处理作什么,以及build完成后的后处理作什么,这些均可以经过脚本定义要作的事情。我这里就什么也不作。至于邮件通知,公司屏蔽了SMTP端口,没有办法发邮件,由于发送的过程当中,会报下面的错误:

 1 Failed to send out e-mail
 2 
 3 javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25;
 4   nested exception is:
 5     java.net.NoRouteToHostException: No route to host
 6     at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
 7     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
 8     at javax.mail.Service.connect(Service.java:295)
 9     at javax.mail.Service.connect(Service.java:176)
10     at javax.mail.Service.connect(Service.java:125)
11     at javax.mail.Transport.send0(Transport.java:194)
12     at javax.mail.Transport.send(Transport.java:124)
13     at hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:566)
14     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
15     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
16     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
17     at java.lang.reflect.Method.invoke(Method.java:497)
18     at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
19     at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
20     at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
21     at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
22     at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
23     at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
24     at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
25     at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
26     at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
27     at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
28     at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
29     at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
30     at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
31     at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
32     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
33     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
34     at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
35     at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:123)
36     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
37     at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
38     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
39     at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
40     at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
41     at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
42     at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
43     at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
44     at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
45     at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
46     at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
47     at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
48     at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
49     at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
50     at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
51     at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
52     at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
53     at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
54     at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
55     at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
56     at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
57     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
58     at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
59     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
60     at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
61     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
62     at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
63     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
64     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
65     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
66     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
67     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
68     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
69     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
70     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
71     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
72     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
73     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
74     at org.eclipse.jetty.server.Server.handle(Server.java:370)
75     at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
76     at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
77     at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
78     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
79     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
80     at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
81     at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
82     at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
83     at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
84     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
85     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
86     at java.lang.Thread.run(Thread.java:745)
87 Caused by: java.net.NoRouteToHostException: No route to host
88     at java.net.PlainSocketImpl.socketConnect(Native Method)
89     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
90     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
91     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
92     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
93     at java.net.Socket.connect(Socket.java:589)
94     at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:286)
95     at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
96     at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
97     ... 80 more
View Code

 

到此,一个基本的job就算配置完毕了,下面看看job配置完成后是什么样子呢?

先看看1标记的红框,S表示status,目前是一个新的job,状态是灰色的,表示没有执行过。2标记的信息,看看标题,对应信息能够看出。3标记的图标,是一个按钮,能够当即启动job的执行。

 

那我这里就当即执行一下吧,看看最后的效果吧。鼠标点击一下3的按钮,执行完毕后,上面的图所示状态变为下面的状态了(S反映的状态变成蓝色的了,若build失败,会是红色的。右边红色框里面,能够看到这个build所用的时间。#1表示第1次build。。。)。相应的日志也贴出了让你们参考下吧。

 1 Started by user anonymous
 2 Building in workspace /root/.jenkins/workspace/mueas
 3 Cloning the remote Git repository
 4 Cloning repository git@109.105.5.108:/data/git/mueas.git
 5  > git init /root/.jenkins/workspace/mueas # timeout=10
 6 Fetching upstream changes from git@109.105.5.108:/data/git/mueas.git
 7  > git --version # timeout=10
 8 using GIT_SSH to set credentials mueas git authentication
 9  > git -c core.askpass=true fetch --tags --progress git@109.105.5.108:/data/git/mueas.git +refs/heads/*:refs/remotes/origin/*
10  > git config remote.origin.url git@109.105.5.108:/data/git/mueas.git # timeout=10
11  > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
12  > git config remote.origin.url git@109.105.5.108:/data/git/mueas.git # timeout=10
13 Fetching upstream changes from git@109.105.5.108:/data/git/mueas.git
14 using GIT_SSH to set credentials mueas git authentication
15  > git -c core.askpass=true fetch --tags --progress git@109.105.5.108:/data/git/mueas.git +refs/heads/*:refs/remotes/origin/*
16  > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
17  > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
18 Checking out Revision e8c79c2becf145c173c1441876d8035fd58ef672 (refs/remotes/origin/master)
19  > git config core.sparsecheckout # timeout=10
20  > git checkout -f e8c79c2becf145c173c1441876d8035fd58ef672
21 First time build. Skipping changelog.
22 Parsing POMs
23 Discovered a new module com.tinguish:mueas mueas
24 Modules changed, recalculating dependency graph
25 [mueas] $ java -cp /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven31-agent-1.5.jar:/usr/local/apache-maven-3.3.3/boot/plexus-classworlds-2.5.2.jar:/usr/local/apache-maven-3.3.3/conf/logging jenkins.maven3.agent.Maven31Main /usr/local/apache-maven-3.3.3 /root/.jenkins/war/WEB-INF/lib/remoting-2.53.2.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven31-interceptor-1.5.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.5.jar 60663
26 <===[JENKINS REMOTING CAPACITY]===>���channel started
27 Executing Maven:  -B -f /root/.jenkins/workspace/mueas/pom.xml -s /root/.m2/settings.xml -gs /usr/local/apache-maven-3.3.3/conf/settings.xml package -Dmaven.test.skip=true
28 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - Scanning for projects...
29 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger -                                                                         
30 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - ------------------------------------------------------------------------
31 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - Building mueas 0.0.1-SNAPSHOT
32 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - ------------------------------------------------------------------------
33 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - 
34 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - --- maven-resources-plugin:2.6:resources (default-resources) @ mueas ---
35 [pool-1-thread-1 for channel] INFO org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering - Using 'UTF-8' encoding to copy filtered resources.
36 [pool-1-thread-1 for channel] INFO org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering - Copying 0 resource
37 [pool-1-thread-1 for channel] INFO org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering - Copying 863 resources
38 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - 
39 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - --- maven-compiler-plugin:3.1:compile (default-compile) @ mueas ---
40 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.compiler.CompilerMojo - Changes detected - recompiling the module!
41 [pool-1-thread-1 for channel] INFO org.codehaus.plexus.compiler.javac.JavacCompiler - Compiling 40 source files to /root/.jenkins/workspace/mueas/target/classes
42 [pool-1-thread-1 for channel] WARN org.apache.maven.plugin.compiler.CompilerMojo - /root/.jenkins/workspace/mueas/src/main/java/com/tinguish/mueas/infra/security/MueasAuthenticationProvider.java: /root/.jenkins/workspace/mueas/src/main/java/com/tinguish/mueas/infra/security/MueasAuthenticationProvider.java uses or overrides a deprecated API.
43 [pool-1-thread-1 for channel] WARN org.apache.maven.plugin.compiler.CompilerMojo - /root/.jenkins/workspace/mueas/src/main/java/com/tinguish/mueas/infra/security/MueasAuthenticationProvider.java: Recompile with -Xlint:deprecation for details.
44 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - 
45 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - --- maven-resources-plugin:2.6:testResources (default-testResources) @ mueas ---
46 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.resources.TestResourcesMojo - Not copying test resources
47 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - 
48 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mueas ---
49 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.compiler.TestCompilerMojo - Not compiling test sources
50 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - 
51 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - --- maven-surefire-plugin:2.17:test (default-test) @ mueas ---
52 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.surefire.SurefirePlugin - Tests are skipped.
53 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - 
54 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - --- maven-war-plugin:2.5:war (default-war) @ mueas ---
55 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.war.WarMojo - Packaging webapp
56 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.war.WarMojo - Assembling webapp [mueas] in [/root/.jenkins/workspace/mueas/target/mueas-0.0.1-SNAPSHOT]
57 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.war.WarMojo - Processing war project
58 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.war.WarMojo - Copying webapp resources [/root/.jenkins/workspace/mueas/src/main/webapp]
59 [pool-1-thread-1 for channel] INFO org.apache.maven.plugin.war.WarMojo - Webapp assembled in [515 msecs]
60 [pool-1-thread-1 for channel] INFO org.codehaus.plexus.archiver.war.WarArchiver - Building war: /root/.jenkins/workspace/mueas/target/mueas-0.0.1-SNAPSHOT.war
61 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - 
62 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - --- spring-boot-maven-plugin:1.2.7.RELEASE:repackage (default) @ mueas ---
63 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - ------------------------------------------------------------------------
64 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - BUILD SUCCESS
65 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - ------------------------------------------------------------------------
66 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - Total time: 11.411 s
67 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - Finished at: 2016-01-20T15:54:01+08:00
68 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - Final Memory: 36M/263M
69 [pool-1-thread-1 for channel] INFO org.apache.maven.cli.event.ExecutionEventLogger - ------------------------------------------------------------------------
70 [JENKINS] Archiving /root/.jenkins/workspace/mueas/pom.xml to com.tinguish/mueas/0.0.1-SNAPSHOT/mueas-0.0.1-SNAPSHOT.pom
71 [JENKINS] Archiving /root/.jenkins/workspace/mueas/target/mueas-0.0.1-SNAPSHOT.war to com.tinguish/mueas/0.0.1-SNAPSHOT/mueas-0.0.1-SNAPSHOT.war
72 channel stopped
73 Finished: SUCCESS
View Code

 

好了,基础篇介绍到此吧,信息量已经比较大了,但愿想入门jenkins的小伙伴可以获得一点帮助!

相关文章
相关标签/搜索