设为首页 收藏本站
查看: 2022|回复: 0

[经验分享] Jenkins: 基础篇(环境配置)

[复制链接]

尚未签到

发表于 2017-2-28 08:11:40 | 显示全部楼层 |阅读模式
  自动化领域比较有影响力的开源框架jenkins,确实比较强大,易用。很多公司将其用来做持续即成CI(continuous integration)。为了拓展和强化自己的软件设计生态系统,也将很久前使用过的jenkins再熟悉一下。在这里做下备忘。
  首先就是下载jenkins安装包,其实所谓的安装,是习惯说法,这个直接从官网下载后,一个war包(jenkins.war, 60M大小左右),直接就可以启动运行。我本地安装的是最新版本1.644. 由于jenkins是java写的,运行过程中需要有JDK,即java要先安装且配置好JAVA_HOME。
  查看下我的java home信息:



1 [iyunv@CloudGame jenkins]# echo $JAVA_HOME
2 /usr/java/jdk1.8.0_65
  这个基本要求具备后,就可以启动jenkins了,这里演示,就直接java -jar jenkins.war来启动,当然,jenkins也可以在任何servlet容器里面运行,比如Tomcat等。



1 [iyunv@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服务程序一样。
  jenkins的启动后,默认http://localhost:8080就可以打开查看web UI了,易用就体现在所有的相关配置都在web ui上完成。免除对命令行不习惯的用户的烦恼,也不需要这里配置一点,哪里配置一点的脑裂痛苦。还有,也可以自己设置选定的端口号,这样就可以: java -jar jenkins.war --httpPort=8081 , jenkins有很多启动配置选项,可以通过--help查看:


DSC0000.gif DSC0001.gif


1 [iyunv@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  下面,打开浏览器看看效果吧:
DSC0002.png

  这里,是我测试用的一个环境,里面有意个mueas的project,这个项目之前都是手动操作build,现在,希望用jenkins来定时操作build。
  我会将这个项目删除掉,然后新建一个,演示这个操作过程。删除job,貌似web ui上没有哟,这个其实也很简单,在jenkins的默认运行环境路径下,将其删除即可(~/.jenkins/jobs),删除后,需要重新启动jenkins。不然web ui上还会有记录,这个可能是缓存里面的数据吧。下面,将mueas job删除,从0开始说说基本的配置,由于我这个mueas项目是基于maven的,所以,我就以这个为例子,做介绍。



1 [iyunv@CloudGame .jenkins]# cd jobs/
2 [iyunv@CloudGame jobs]# ll
3 total 4
4 drwxr-xr-x 4 root root 4096 Jan 20 13:01 mueas
5 [iyunv@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页相关信息截图参考一下吧。
DSC0003.png

  先说下,这个是删除掉之前的mueas job后重启完成的界面,由于一个job都没有,提示是否创建job。这是后话。这里主要是说从如何找到plugin的安装页面。下图展示我已经安装了的插件,这里有些是jenkins默认就安装的,红色框的是我安装的git相关的插件。完全可以根据自己项目需要选择安装。
DSC0004.png

  除了上面红色的框,发现没,maven的集成插件也有,若没有,也需要自己安装maven插件的。再说说这个绿色的框,里面有的后面有Downgrade信息的按钮,这个是针对插件更新用的,这个更新是向低版本更新哟。
  需要的插件安装完了,那么,就要说说系统环境配置了。如下图所示,也很容易找到Jenkins>Manage jenkins>Configure System
DSC0005.png

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

DSC0007.png

  上面显示的就是主要要配置的,配置好后,点击保存即可。
  下面进入job的创建了,这里才进入主题哟,呵呵,其实,真正的项目开发中,很多设置环境或则平台搭建的这种不能直接体现出经济效益的事情,更能反映出一个技术人员的功底。废话哈!
DSC0008.png

  然后进一步做配置,下面做详细的配置,主要是git相关的配置。我选择的源码管理工具是git,配置URL,这个就是我们在linux下做clone用的那个url,一模一样,因为jenkins运行的时候也是要从远程repo上clone待build的project。另外一个很重要的配置,就是下面的credential了,这个估计很容易搞错。
DSC0009.png

  那么就说说这个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 -----以及对应的结尾信息也一并拷贝过来哟。
DSC00010.png

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

  点击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> 。。。。)
DSC00012.png

  当然,这当中还有很多其他的配置,比如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配置完成后是什么样子呢?
DSC00013.png

  先看看1标记的红框,S表示status,目前是一个新的job,状态是灰色的,表示没有执行过。2标记的信息,看看标题,对应信息可以看出。3标记的图标,是一个按钮,可以立即启动job的执行。
  那我这里就立即执行一下吧,看看最后的效果吧。鼠标点击一下3的按钮,执行完毕后,上面的图所示状态变为下面的状态了(S反映的状态变成蓝色的了,若build失败,会是红色的。右边红色框里面,可以看到这个build所用的时间。#1表示第1次build。。。)。相应的日志也贴出了让大家参考下吧。
DSC00014.png






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的小伙伴能够得到一点帮助!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348139-1-1.html 上篇帖子: 【总结 】550,535,553 Mail from must equal authorized user— jenkins(hudson) email163邮 下篇帖子: Jenkins插件开发(2)——搭建开发环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表