Jenkins+GitHub+Maven一键发布

作者: HUJC超 | 来源:发表于2019-04-07 18:54 被阅读208次

    为了学习一下工作中常用到的jenkins,于是挑了个最简单的模式动手操作了一遍。

    环境->阿里云服务器:CentOS7.0
    https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=pvezicr7
    项目->网上找一个可在本地跑的Maven项目

    安装JDK1.8、Git、Maven

    已经安装的同学请忽略
    JDK1.8请移步:https://www.cnblogs.com/zs-notes/p/8535275.html
    Git请移步:http://weibingsheng.cn/blog/index.php/home/index/read.html?id=285
    Maven请移步:https://www.cnblogs.com/jimisun/p/8054819.html
    注意:配置JDK和Maven的环境变量

    安装Tomcat

    已经安装的同学请忽略

    以下操作命令都在根目录执行
    下载tomcat安装包:
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.4/bin/apache-tomcat-8.5.4.tar.gz
    
    解压安装包:
    tar -zxvf apache-tomcat-8.5.4.tar.gz
    
    在根目录下执行(local目录中创建tomcat目录):
    mkdir /usr/local/tomcat
    
    将tomcat相关文件移动到创建的tomcat目录:
    mv apache-tomcat-8.5.4/* /usr/local/tomcat
    
    启动Tomcat:
    cd /usr/local/tomcat/bin           //进入bin目录下:
    ./startup.sh                              //启动tomcat
    ./shutdown.sh                         //关闭tomcat
    
    
    修改tomcat8相关配置
    修改tomcat-users.xml文件:
    vi /usr/local/tomcat/apache-tomcat-8.5.4/conf/tomcat-users.xml
    
    主要为了jenkins通过maven实现tomcat下热部署所做的配置,我们知道tomcat manager可以在不停止tomcat的情况实现war的部署。这样,在jenkins中项目通过Maven打包后直接放在tomcat的webapps目录下后tomcat就会自动发布。
    配置role和user是的maven可以获得操作tomcat的权限,修改tomcat的tomcat-users.xml文件,添加如下配置:
    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
    
    这里配置的username,password在jenkins中会用到
    
    然后开放manager访问权限(这一步一定不能少,不然会报权限错误):
    【权限错误:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: 
               The username you provided is not allowed to use the text-based】
    
    修改webapps/manager/META-INF/context.xml
    <Context antiResourceLocking="false" privileged="true" >
    
     <!--注释掉这里-->
     <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
             allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
      <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
    </Context>
    

    安装Jenkins

    jenkins可以直接下载运行;也可以只下载war包格式,然后放到tomcat的webapps中启动;jenkins本来就是一个webApp。

    这里我下载了可以直接运行的jenkins。

    $ yum install yum-fastestmirror -y  #安装自动选择最快源的插件
    #添加Jenkins源:
    $ sudo wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo
    $ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
    $ yum install jenkins               #安装jenkins
    
    启动方式:
    $ sudo service jenkins start
    
    访问方式:
    浏览器输入http://你服务器的公网ip:8080/
    
    tomcat和jenkins的端口如果冲突就选择其中一个修改端口
    Jenkins如果要更改配置(端口):
    $ vim /etc/sysconfig/jenkins
    $ sudo service jenkins restart
    
    
    修改端口

    然后我们在浏览器输入http://你服务器的公网ip:8080/后便可以访问自己的jenkins了,当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。

    根据上面提示在linux的根目录下执行

    cat  /var/jenkins_home/secrets/initialAdminPassword
    

    找到密码后,直接复制到输入框中,点击继续,进入一下界面,证明解锁成功


    点击推荐安装(install suggested plugins)即可,如果安装失败可以跳过,之后再在jenkins管理界面手动安装就行。

    下载完成后会让创建一个管理员用户,需要设置用户名、密码等。默认配置即可。管理员相关配置完成后,需要重启,点击重启。

    浏览器再次输入你的服务器IP:8080,便可进入到登录页,输入上面设置的管理员用户名和密码即可登录到管理后台。

    登陆界面

    手动安装需要的插件(maven和热部署),进入到管理后台后
    点击系统管理->插件管理->可选插件
    过滤搜索框输入Maven Integration来搜索Maven Integration插件。

    过滤搜索框输入Maven Integration来搜索Maven Integration插件。
    点击直接安装(install without restart)。下面搜索并安装热部署插件Deploy to container,安装完这俩插件了,需要重启jenkins。
    注意:可以自行去查一下jenkins启动Maven常用的插件安装,这里就不赘述了

    进入jenkins管理后台配置jdk、maven、git
    进入到管理后台后,点击系统管理->全局工具管理

    配置git,由于git在linux下安装还需要其他的依赖库,在容器内安装这些比较麻烦,所以这里直接让jenkins自行安装。勾选自动安装单选框。

    创建一个maven项目并实现自动化部署
    条件:maven类型的、github上的Web项目;已经启动的tomcat8的应用服务器。
    注意:若在同一台服务器上tomcat8和jenkins的端口冲突

    jenkins创建maven任务,点击新建任务,进入创建界面。

    进入配置界面:首先配置general,勾选github。并填写github上项目地址。

    构建后操作:配置maven生成war信息、上下文及web容器信息、Credentials 和tomcat Url。

    WAR/EAR files选择你需要部署的war包在工作空间下的**相对路径**
    Context path意为发布到目标tomcat的webapp后的文件夹名字
    Credentials 需要先添加一个用户,点击添加,用户名和密码是tomcat_user.xml中配置的
    Tomcat URL 就是你需要连接的tomcat地址和端口号
    

    到此配置基本完成,点击应用,保存。
    手动构建,测试下:进入到已经创建的任务界面,点击立即构建。点击左下角的 build history 查看控制台日志(console Output)。第一次构建会有点慢,需要等一会儿。

    注意点:项目中的数据库是连接的本地的话就需要换掉,如果用远程服务器的数据库记得远程授权。

    如果报了类似这样的错误:the Tomcat Manager responded "FAIL - " instead of the expected "OK" message
    那就要去tomcat中查看下报错,可以能是项目报错了。
    例如:# [java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect to database in eclipse [closed]](https://stackoverflow.com/questions/11869697/java-sql-sqlexception-access-denied-for-user-rootlocalhost-using-password)
    就需要用一个能够远程访问的数据库了。
    

    以上笔记只作为一个基础来看,若有错误还请指正,后面还有很多扩展的内容要学习,比如:不同场景下jenkins的配置、Maven打包时对于dev,uat等环境下的自定义操作、手写shell脚本等等。。。路漫漫其修远兮。

    相关文章

      网友评论

        本文标题:Jenkins+GitHub+Maven一键发布

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