部署Jenkins

百度百科里给Jenkins的定义是,“持续集成软件平台+工具“,没用Jenkins之前看不懂,用了之后还是看不到看不懂这个说法。

找到了Jenkins官网的解释“The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.“——提供上百款插件实现服务器的自动化工作(这里的自动化指运维),包括构造应用(项目、服务、软件工程),部署应用,和任何服务器相关功能实现的自动化,Jenkins是开源软件,而且在这方面是走在领先地位的哦。

目前我用到Jenkins的功能是,集成maven、git,经过一些github、tomcat的配置,一键操作一键完成项目从github发布到阿里云服务器。Jenkins调用git的命令,拉github的项目,项目经过maven打包war文件,用tomcat的manager发布到服务器。

Jenkins的优点
1. 省时间,每次发布系统基本都是差不多的操作,对于急着看上线效果的你来说,简直就是心急吃热豆腐;
2. 发布系统是个细致活,容易出问题,就算你牛逼你仔细可以不出问题,这些精力用在别的地方岂不是更好;
3. Jenkins把构造、部署系统的流程抽象化,做每件事只需要关注当前的工作不必考虑上下游的东西,比如你的项目是从github拉下来的,只要考虑配置github的东西,不用考虑项目构建发布;
4. Jenkins提供的插件有为我们做了很多事,比如对接github,使用svn的命令完成项目拉取。我们没办法精通所有的构造、部署方法,更没办法知道所有冷知识,只需要我们提供一些参数,Jenkins就能为我们做好应对那些应用(git、maven…)的工作,Jenkins简直就是服务器界的瑞士军刀啊。

安装Jenkins

从Jenkins官网下载Jenkins的war包。
https://jenkins.io/download/
用终端登录,可以用wget http://mirrors.jenkins.io/war/latest/jenkins.war下载war包。

把jenkins.war放到tomcat根目录下的/webapps。启动tomcat,jenkins项目就算部署成功了,浏览器访问 http://{ip}:{port}/jenkins 就能进入jenkins的初始化界面(初始的时候有个密码,密码写在日志,很容易找到的),初始化界面可以创建第一个用户,安装插件,。
文章的重点不是jenkins的部署,而且这个也挺简单,就不贴图了。

Github+Maven+Tomcat的发布流程配置

Jenkins可以做很多事,下面说的是配置从Github拉去代码,发布到服务器的自动化过程。
这里写图片描述

首先,我们要把“硬件”层面的东西配好,Git、Maven和Tomcat的Manger,然后要准备好Github和Manger的账户信息,最后就可以配置整个流程了。

Git & Maven

安装Jenkins的电脑或服务器上面要装上Git和Maven,借助他们可以用来拉Github、Gitlab的代码,和构建war项目(不仅限于war)。如果是在Centos服务器上,安装这两个的工作就很简单了

yum install git
yum install maven

yum是用来下载rpm文件的,rpm才是真正Centos的安装工具,rpm安装的默认路径如下

/etc    一些设置文件放置的目录如/etc/crontab
/usr/bin    一些可执行文件
/usr/lib /usr/lib64 一些程序使用的动态函数库
/usr/share/doc  一些基本的软件使用手册与帮助文档
/usr/share/man  一些man page文件
查看所有安装的软件
[root@iZbp1aiejzadfq9do06acaZ bin]# rpm -qa
iwl6050-firmware-41.28.5.1-49.el7.noarch
iwl2030-firmware-18.168.6.1-49.el7.noarch
iwl105-firmware-18.168.6.1-49.el7.noarch
.......
查看软件信息
[root@iZbp1aiejzadfq9do06acaZ bin]# rpm -qi yum-metadata-parser-1.1.4-10.el7.x86_64
Name        : yum-metadata-parser
Version     : 1.1.4
Release     : 10.el7
.......
查看软件安装路径
[root@iZbp1aiejzadfq9do06acaZ bin]# rpm -ql yum-metadata-parser-1.1.4-10.el7.x86_64
/usr/lib64/python2.7/site-packages/_sqlitecache.so
/usr/lib64/python2.7/site-packages/sqlitecachec.py
/usr/lib64/python2.7/site-packages/sqlitecachec.pyc
/usr/lib64/python2.7/site-packages/sqlitecachec.pyo
Tomcat Manager

tomcat也是有管理界面和接口的哟!!
通过管理界面和API,可以查看系统状态信息和项目部署情况,还能发布项目、删除项目。
开启这项功能很简单,做两个事就行。首先,开放manager的外网访问权限,然后解锁具有这些权限的role和user。

manager默认是开启的,也有基本的账号能登录进去,但是部署在服务器上的tomcat就不能访问了,在tomcat根目录conf/Catalina/localhost文件下创建文件manager.xml,allow是允许访问的IP。

<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"  docBase="${catalina.home}/webapps/manager">  
     <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />  
</Context>

manager默认的roler和user都被关闭了,修改tomcat根目录下conf/tomcat-user.xml文件,如下:

  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-status"/>
  <user username="tomcat" password="111" roles="tomcat"/>
  <user username="both" password="111" roles="tomcat,role1"/>
  <user username="role1" password="111" roles="role1"/>
  <user username="deploy" password="111" roles="manager-status,manager-gui,manager-script"/>

deploy用户拥有管理部署项目的界面操作、api操作权限。

Github的Personal Access Token

通过Personal Access Token授权就可以访问Github的接口。创建一个拥有repo和admin:repo_hook权限的token,Jenkins通过该token,调用Github的接口创建Webhooks。
这里写图片描述
上面的Token是属于账户级的东西,Webhooks是项目级别的,当项目发生了某个事件,Github会给一个指定的url发Post请求。有了Webhoks,就不需要定时去拉Github的代码,而让Github主动通知。GitLab也有类似的机制。
这里写图片描述

万事俱备,开始要配置Jenkins了!!!
Git和Maven,要在Global Tool Configuration全局工具配置好。
这里贴出Git,Maven,JDK的配置,涉及到的name都只是名称可以随便填。
一般Home是安装路径的根目录,而执行文件路径只要该路径下能访问执行文件就行
这里写图片描述
这里写图片描述

系统管理->系统设置,可以配置一些Jenkins的基础设置
这里写图片描述

下面的这个配置就是设置Github接口调用地址和认证方式的地方,
这里写图片描述

Credentials用secret test,虽然也可以用账号密码验证,secrest test可以只授权部分功能开发,而且更不容易被盗取。secrest test创建如下,只需要把Github的Personal Access Token填入Secret就可以了。
这里写图片描述

Override Hook URL是Github回调Jenkins的接口配置。
Shared secret上面的Credentials是Github给Jenkins的验证Token,shared secret是Jenkins给Github提供的验证Token,在Github的Personal Access Token创建那的secret就是填这个。原理差不多,整一个长一点的字符串就行。
这里写图片描述

上面做的是全局配置,接下来可以开始创建Jenkins工程了!!!
这里我们创建的是Maven项目,关于其他项目还没探索过,后续可能会有文章哟。
如果你没看到下面的界面,那应该是搞错项目类型了。
这里写图片描述
maven项目的配置如下:
1. 设置git从哪拉代码,和拉去的分支(工作区可以查看代码)
这里写图片描述
2. “GitHub hook trigger for GITScm polling”以前叫做“Build when a change is pushed to GitHub”,Github Plugin插件改了这个设置的名称。这Webhooks的设置虽然是在这开启,但是账号却是全局维护的,虽然有点摸不着头脑,大概设计者考虑到不同项目用的是同一个Github账号,这样可以避免Webhooks重复设置。
这里写图片描述
3. Maven的构建语句
这里写图片描述
这里需要额外提下pom.xml文件,即使Maven可以正常跑起来,pom.xml没配好,还是会出问题的。下面是笔者可以正常发布的pom.xml。

<project>
    <properties>
        <tomcat.version>8.5.9</tomcat.version>
        <java.version>1.8</java.version>
        .....
    </properties>
    <dependencies>
        .....
    </dependencies>
    <build>
        <!-- 生成war文件的文件名 -->
        <finalName>unitools</finalName>

        <plugins>
            <!-- 生成war文件的插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <!-- 忽视单元测试错误异常 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12.4</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>

            <!-- 生成war过程需要整合项目依赖的包 -->
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.8</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 打war包是个java文件编译的过程,当然是要指定jdk信息的-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
        <!-- 有些项目用eclipse生成war可以运行,用maven确不可以。eclipse记录了所有文件的发布路径,maven单独用的时候,需要配置好资源文件的发布路径哟 -->
        <resources>
            <resource>
                <directory>src/main/resourse</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>
  1. 配置tomcat发布信息
    这里的账号信息来自Tomcat manager。这里说两个要注意的点:WAR/EAR files的路径是相对路径,相对的是Jenkins的工作区,maven默认会打在target文件下,如果pom.xml没配<finalName></finalName>,要小心哦!;Context path是项目发布的名称,也就是url访问的名称。
    这里写图片描述
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值