美文网首页安卓Jenkins 中文社区Java-Framework
自动化部署--Jenkins--简介安装(一)

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

作者: 无剑_君 | 来源:发表于2019-10-09 15:35 被阅读0次

    一、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/

      下载地址
      下载地址
    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. 安装配置


      获取密码
    [root@localhost ~]# vi /root/.jenkins/secrets/initialAdminPassword
    
    
    1. 默认插件安装
      比较慢(看网速):


      安装插件
      安装插件
    2. 创建管理员


      创建管理员
    3. 实例配置


      实例配置
      安装完成

    三、系统配置

    系统配置

    四、插件安装

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


      Maven Integration

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


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

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


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

    5. 安装和Git,GitLab插件


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

      Gitee

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

    名称
    3)Gitee host URL 中输入码云完整 URL地址: https://gitee.com (码云私有化客户输入部署的域名)
    4)创建码云私人令牌
    地址:https://gitee.com/profile/personal_access_tokens
    创建码云私人令牌
    创建令牌
    5)认证配置
    认证配置
    认证配置
    6)测试
    测试
    最后要保存

    四、全局配置

    1. JDK


      JDK安装
    2. GIT


      检查系统是否安装

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

    [root@bogon ~]# yum install git
    
    
    1. Maven


      Maven

    五、认证配置

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


      新建认证
      全局认证
      添加认证

    六、创建Maven构建任务

    1. Maven项目创建


      任务创建
    2. 任务配置


      添加描述
      指定分支
      添加时间戳

      前置构建设置:

    clean package -Dmaven.test.skip=true
    
    前置构建 后置构建
    1. 执行任务


      执行任务
      查看输出
      查看控制台输出

    七、常见错误

    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
    

    相关文章

      网友评论

        本文标题:自动化部署--Jenkins--简介安装(一)

        本文链接:https://www.haomeiwen.com/subject/atocpctx.html