自动化部署--Jenkins--简介安装(一)

一、Jenkins 简介

  Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
  Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。
  Jenkins是一种软件允许持续集成。Jenkins 安装在一台服务上也*构建发生的地方。

Jenkins 是一个可扩展的持续集成引擎。

主要用于:
1、持续、自动地构建/测试软件项目。
2、 监控一些定时执行的任务。
Jenkins拥有的特性包括:
1、 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
2、 易于配置-所有配置都是通过其提供的web界面实现。
3、 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
4、 生成JUnit/TestNG测试报告。
5、 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
9、 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
10、 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。

Jenkins的目标:
Jenkins的主要目标是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率。
CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题。

特别是它具有以下优点:
1、Jenkins一切配置都可以在web界面上完成。有些配置如MAVEN_HOME和Email,只需要配置一次,所有的项目就都能用。当然也可以通过修改XML进行配置。
2、 支持Maven的模块(Module),Jenkins对Maven做了优化,因此它能自动识别Module,每个Module可以配置成一个job,相当灵活。
3、 测试报告聚合,所有模块的测试报告都被聚合在一起,结果一目了然,使用其他CI,这几乎是件不可能完成的任务。
4、 构件指纹(artifact fingerprint),每次build的结果构件都被很好的自动管理,无需任何配置就可以方便的浏览下载。

Jenkins功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。

官网:https://jenkins.io/

二、下载安装

  1. 下载地址:https://jenkins.io/download/

    自动化部署--Jenkins--简介安装(一)

    下载地址

     

    自动化部署--Jenkins--简介安装(一)

    下载地址

  2. 安装JDK与Maven

  3. 安装Tomcat

# 下载Tomcat
[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.tar.gz
# 解压
[root@localhost ~]# tar -zxvf apache-tomcat-9.0.26.tar.gz -C /usr/local/
# 启动测试
[root@localhost apache-tomcat-9.0.26]# ./bin/startup.sh 
  1. 下载安装与运行:
# 下载 war 包
[root@localhost ~]# wget http://ftp-chi.osuosl.org/pub/jenkins/war-stable/2.190.1/jenkins.war
# 运行
[root@localhost ~]# java -jar jenkins.war --httpPort=8080
Running from: /root/jenkins.war
webroot: $user.home/.jenkins
2019-10-09 02:02:47.975+0000 [id=1] INFO    org.eclipse.jetty.util.log.Log#initialized: Logging initialized @307ms to org.eclipse.jetty.util.log.JavaUtilLog
2019-10-09 02:02:48.042+0000 [id=1] INFO    winstone.Logger#logInternal: Beginning extraction from war file
2019-10-09 02:02:48.061+0000 [id=1] WARNING o.e.j.s.handler.ContextHandler#setContextPath: Empty contextPath
2019-10-09 02:02:48.103+0000 [id=1] INFO    org.eclipse.jetty.server.Server#doStart: jetty-9.4.z-SNAPSHOT; built: 2019-05-02T00:04:53.875Z; git: e1bc35120a6617ee3df052294e433f3a25ce7097; jvm 1.8.0_222-b10
2019-10-09 02:02:48.276+0000 [id=1] INFO    o.e.j.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2019-10-09 02:02:48.306+0000 [id=1] INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: DefaultSessionIdManager workerName=node0
2019-10-09 02:02:48.307+0000 [id=1] INFO    o.e.j.s.s.DefaultSessionIdManager#doStart: No SessionScavenger set, using defaults
2019-10-09 02:02:48.308+0000 [id=1] INFO    o.e.j.server.session.HouseKeeper#startScavenging: node0 Scavenging every 600000ms
Jenkins home directory: /root/.jenkins found at: $user.home/.jenkins
2019-10-09 02:02:48.643+0000 [id=1] INFO    o.e.j.s.handler.ContextHandler#doStart: Started w.@37313c65{Jenkins v2.190.1,/,file:///root/.jenkins/war/,AVAILABLE}{/root/.jenkins/war}
2019-10-09 02:02:48.666+0000 [id=1] INFO    o.e.j.server.AbstractConnector#doStart: Started ServerConnector@26ba2a48{HTTP/1.1,[http/1.1]}{0.0.0.0:8080}
2019-10-09 02:02:48.683+0000 [id=1] INFO    org.eclipse.jetty.server.Server#doStart: Started @1016ms
2019-10-09 02:02:48.684+0000 [id=20]    INFO    winstone.Logger#logInternal: Winstone Servlet Engine v4.0 running: controlPort=disabled
2019-10-09 02:02:49.465+0000 [id=28]    INFO    jenkins.InitReactorRunner$1#onAttained: Started initialization
2019-10-09 02:02:49.468+0000 [id=26]    INFO    jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2019-10-09 02:02:50.392+0000 [id=26]    INFO    jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2019-10-09 02:02:50.395+0000 [id=26]    INFO    jenkins.InitReactorRunner$1#onAttained: Started all plugins
2019-10-09 02:02:50.423+0000 [id=26]    INFO    jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2019-10-09 02:02:50.797+0000 [id=28]    INFO    jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2019-10-09 02:02:50.885+0000 [id=41]    INFO    hudson.model.AsyncPeriodicWork$1#run: Started Download metadata
2019-10-09 02:02:50.964+0000 [id=41]    INFO    hudson.util.Retrier#start: Attempt #1 to do the action check updates server
2019-10-09 02:02:51.497+0000 [id=25]    INFO    o.s.c.s.AbstractApplicationContext#prepareRefresh: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@37237ab6: display name [Root WebApplicationContext]; startup date [Wed Oct 09 10:02:51 CST 2019]; root of context hierarchy
2019-10-09 02:02:51.497+0000 [id=25]    INFO    o.s.c.s.AbstractApplicationContext#obtainFreshBeanFactory: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@37237ab6]: org.springframework.beans.factory.support.DefaultListableBeanFactory@43064edb
2019-10-09 02:02:51.507+0000 [id=25]    INFO    o.s.b.f.s.DefaultListableBeanFactory#preInstantiateSingletons: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@43064edb: defining beans [authenticationManager]; root of factory hierarchy
2019-10-09 02:02:51.645+0000 [id=25]    INFO    o.s.c.s.AbstractApplicationContext#prepareRefresh: Refreshing org.springframework.web.context.support.StaticWebApplicationContext@20cd72f: display name [Root WebApplicationContext]; startup date [Wed Oct 09 10:02:51 CST 2019]; root of context hierarchy
2019-10-09 02:02:51.645+0000 [id=25]    INFO    o.s.c.s.AbstractApplicationContext#obtainFreshBeanFactory: Bean factory for application context [org.springframework.web.context.support.StaticWebApplicationContext@20cd72f]: org.springframework.beans.factory.support.DefaultListableBeanFactory@5a4fc459
2019-10-09 02:02:51.645+0000 [id=25]    INFO    o.s.b.f.s.DefaultListableBeanFactory#preInstantiateSingletons: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@5a4fc459: defining beans [filter,legacy]; root of factory hierarchy
2019-10-09 02:02:51.771+0000 [id=25]    INFO    jenkins.install.SetupWizard#init: 

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

6739a91dcefe4b53b2685723bf1ecd71

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

2019-10-09 02:03:02.041+0000 [id=25]    INFO    hudson.model.UpdateSite#updateData: Obtained the latest update center data file for UpdateSource default
2019-10-09 02:03:03.121+0000 [id=25]    INFO    jenkins.InitReactorRunner$1#onAttained: Completed initialization
2019-10-09 02:03:03.150+0000 [id=19]    INFO    hudson.WebAppMain$3#run: Jenkins is fully up and running
2019-10-09 02:03:04.781+0000 [id=41]    INFO    hudson.model.UpdateSite#updateData: Obtained the latest update center data file for UpdateSource default
2019-10-09 02:03:05.315+0000 [id=41]    INFO    h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2019-10-09 02:03:05.315+0000 [id=41]    INFO    hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1
2019-10-09 02:03:05.321+0000 [id=41]    INFO    hudson.model.AsyncPeriodicWork$1#run: Finished Download metadata. 14,430 ms

  1. YUM 安装:
# YUM 安装
[root@localhost ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@localhost ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@localhost ~]# yum install jenkins
# WAR包 
/usr/lib/jenkins/jenkins.war    
#  配置文件, 修改用户为:root
/etc/sysconfig/jenkins      
# 默认的JENKINS_HOME目录
/var/lib/jenkins/       
#  Jenkins日志文件
/var/log/jenkins/jenkins.log   
# 添加服务
[root@localhost ~]# service jenkins start
# 启动测试
[root@localhost ~]# systemctl start jenkins
Starting jenkins (via systemctl):                          [  确定  ]
# 重启 jenkins
[root@localhost ~]# systemctl restart jenkins

注意: systemctl start jenkins 启动不了

  1. RPM 安装
https://pkg.jenkins.io/redhat-stable/jenkins-2.190.1-1.1.noarch.rpm

二、启动测试

  1. 启动
[root@localhost ~]# java -jar jenkins.war --httpPort=8080
或
[root@localhost ~]# systemctl restart jenkins
  1. 安装配置

     

    自动化部署--Jenkins--简介安装(一)

    获取密码

[root@localhost ~]# vi /root/.jenkins/secrets/initialAdminPassword

  1. 默认插件安装
    比较慢(看网速):

     

    自动化部署--Jenkins--简介安装(一)

    安装插件

     

    自动化部署--Jenkins--简介安装(一)

    安装插件

  2. 创建管理员

     

    自动化部署--Jenkins--简介安装(一)

    创建管理员

  3. 实例配置

     

    自动化部署--Jenkins--简介安装(一)

    实例配置

     

    自动化部署--Jenkins--简介安装(一)

    安装完成

三、系统配置

自动化部署--Jenkins--简介安装(一)

系统配置

四、插件安装

  1. Maven构建插件
    Maven Integration
    Maven集成。

     

    自动化部署--Jenkins--简介安装(一)

    Maven Integration

     

    安装完成后,新建任务中会出现,Maven项目:

     

    自动化部署--Jenkins--简介安装(一)

    Maven

  2. Deploy to container
    布署到容器如:Tomcat

  3. Publish Over SSH
    把jenkins服务器上的文件,传输到远程服务器的指定目录。

     

    自动化部署--Jenkins--简介安装(一)

    Publish Over SSH

  4. Multijob plugin
    可以让jenkins任务按照分组、顺序执行jenkins版本。

  5. 安装和Git,GitLab插件

     

    自动化部署--Jenkins--简介安装(一)

    GitLab

  6. Gitee
    文档地址:https://gitee.com/help/articles/4193#article-header2
    码云插件。

    自动化部署--Jenkins--简介安装(一)

    Gitee

码云链接配置:
1)前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections
2)在 Connection name 中输入 Gitee 或者你想要的名字(一般为项目名称)

自动化部署--Jenkins--简介安装(一)

名称


3)Gitee host URL 中输入码云完整 URL地址:  https://gitee.com (码云私有化客户输入部署的域名)
4)创建码云私人令牌
地址: https://gitee.com/profile/personal_access_tokens

自动化部署--Jenkins--简介安装(一)

创建码云私人令牌

 

自动化部署--Jenkins--简介安装(一)

创建令牌


5)认证配置

自动化部署--Jenkins--简介安装(一)

认证配置

 

自动化部署--Jenkins--简介安装(一)

认证配置


6)测试

自动化部署--Jenkins--简介安装(一)

测试


最后要保存

四、全局配置

  1. JDK

     

    自动化部署--Jenkins--简介安装(一)

    JDK安装

  2. GIT

     

    自动化部署--Jenkins--简介安装(一)

    检查系统是否安装

     

    如果没有安装,请使用以下命令安装:

[root@bogon ~]# yum install git

  1. Maven

     

    自动化部署--Jenkins--简介安装(一)

    Maven

五、认证配置

  1. 添加一个jenkins连接到码云时,登录到码云的用户名和密码

     

    自动化部署--Jenkins--简介安装(一)

    新建认证

     

    自动化部署--Jenkins--简介安装(一)

    全局认证

     

    自动化部署--Jenkins--简介安装(一)

    添加认证

六、创建Maven构建任务

  1. Maven项目创建

     

    自动化部署--Jenkins--简介安装(一)

    任务创建

  2. 任务配置

     

    自动化部署--Jenkins--简介安装(一)

    添加描述

     

    自动化部署--Jenkins--简介安装(一)

    指定分支

     

    自动化部署--Jenkins--简介安装(一)

    添加时间戳

     

    前置构建设置:

clean package -Dmaven.test.skip=true

自动化部署--Jenkins--简介安装(一)

前置构建

自动化部署--Jenkins--简介安装(一)

后置构建

  1. 执行任务

     

    自动化部署--Jenkins--简介安装(一)

    执行任务

     

    自动化部署--Jenkins--简介安装(一)

    查看输出

     

    自动化部署--Jenkins--简介安装(一)

    查看控制台输出

七、常见错误

  1. Caused by: java.lang.ClassNotFoundException: hudson.util.HudsonFailedToLoad

  2. linux java进程后台启动,并输出日志到指定文件

完整的命令将是: 
nohup  java -jar jenkins.war --httpPort=8080  >/logs/jenkins.log &
启动执行,执行成功。查看日志。
tail -f /logs/jenkins.log

  1. 查找已安装的YUM
[root@localhost ~]# yum list installed jenkins
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.tuna.tsinghua.edu.cn
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.huaweicloud.com
已安装的软件包
jenkins.noarch                                                                                    2.190.1-1.1                                                                                    @jenkins
  1. 忘记密码
    (1)admin 密码密文
    Jenkins 中所有的用户信息都保存在 JENKINS_HOME 目录下的 users 目录中,每个用户对应一个目录。对应 admin 用户,可以查看 users/admin/config.xml 文件,其中 passwordHash 字段中 #jbcrypt: 后面的部分就是密码经过 hash 加密后的密文。
    (2) admin 密码明文
    JENKINS_HOME 目录中的 /secrets/initialAdminPassword 文件明文保存 admin 用户的密码,直接查看即可。下面例子中的 JENKINS_HOME 需要替换为你实际的目录。
cat JENKINS_HOME/secrets/initialAdminPassword
上一篇:JAVA实现FLOAT32 类型转换大小端转换,从(1234)到 (3412) 交换字节模式


下一篇:MarkDown学习