美文网首页
Jenkins+SVN+Maven实现自动打包Jar/War并发

Jenkins+SVN+Maven实现自动打包Jar/War并发

作者: 程序猿孤风 | 来源:发表于2018-09-02 19:52 被阅读0次

    一.背景

    由于部门想要搭建一套Svn+Jenkins的持续集成环境,Jenkins的部署是由部门的运维同事负责的,我则负责Jenkins任务的创建。


    1. 部署Jenkins并创建用户(这里忽略这个步骤,不讲解)

    2. Jenkins部署完成后,使用管理员账户登录Jenkins 1.png
    3. 点击系统管理->全局工具配置->下滑找到Maven,点击Maven 安装->配置Maven

      7.jpg
      image.png

      第一个为配置当前Jenkins所在服务器环境自身Maven。第二个为由Jenkins自动配置Maven,这种方式只需要配置好名次及Maven版本就可以。配置完成后点击Save保存即可生效。

    4. 点击左上角新建任务开始创建任务(分两种情况)

    a. 项目不依赖于其他项目

    a1. 输入项目名称,选择构建一个自由风格的软件项目,然后点确定。

    image.png

    a2 .在General部分,勾选丢弃旧的构建,并设置保持构建的天数以及保存构建的最大个数,
    描述部分可选择性填写。

    image.png
    a3 .在源代码管理部分,选中Subversion,然后填写SVN路径认证信息,如果尚未添加过SVN认证信息则点击Add新增Credentials,新增成功后,其他任务也可以使用此信息。
    image.png
    a4. 在构建触发器部分,选中定时构建可添加定时执行计划。 image.png

    a5. 在构建环境部分,选中Delete workspace before build starts

    image.png

    a6. 在构建部分,点击增加构建步骤,选择调用顶层Maven目标

    image.png
    Maven版本选择我们之前所配置的Maven,目标填写需要执行的Maven命令
    image.png
    a7. 点击保存,然后点击立即构建,并进入构建具体信息中即可查看控制台详细信息。
    image.png
    a8. 如果需要在打包完成后做后续操作例如进行发布等操作,则再添加构建步骤如下(我是发布到Jenkins所在服务器也就是本地)
    发布Jar

    在构建部分,点击增减构建步骤并选择执行shell,shell如下

    echo "备份原有jar包"
    cd /usr/local/i2work/target
    mv i2work-reward.jar i2work-reward.jar_bak$(date +%Y%m%d%H%M)
    echo "复制Jar到目标文件夹"
    cd ${WORKSPACE}/target/
    cp i2work-reward.jar /usr/local/i2work/target
    sh /opt/scripts/i2work-stat.sh reward
    
    发布War(本地Tomcat)

    在构建部分,点击增减构建步骤并选择执行shell,shell如下:

    echo "进入工作空间"
    cd /root/.jenkins/workspace/i2work-operation/target/
    echo "修改war包名称"
    mv i2work-operation-1.0-SNAPSHOT.war operation.war
    echo "进入tomcat目录并备份原文件"
    cd /usr/local/i2work/apache-tomcat-8.5.4-operation/webapps
    mv operation.war operation_bak$(date +%Y%m%d%H%M).tar.gz
    echo "进入工作空间并复制war到tomcat中"
    cd /root/.jenkins/workspace/i2work-operation/target
    cp operation.war /usr/local/i2work/apache-tomcat-8.5.4-operation/webapps
    echo "重启tomcat"
    sh -x /opt/scripts/operation_restart.sh
    

    b. 项目依赖于其他项目,比如在我的项目中,项目A依赖于父项目Core,而Core又依赖于Parent(工作流,B必须在A执行后执行,A->B->C)。

    此类型过程与上一类型过程大致相同,故在此只着重讲解差异地方。

    b1. 添加Multijob plugin插件,Jenkins如何安装插件这里就不在介绍。

    b2.新增任务:输入项目名称,选择MultiJob Project,然后点确定。

    image.png
    b3. General部分,同a2

    b4. 源代码管理部分,同a3

    b5. 构建触发器部分,同a4

    b6. 构建环境部分,同a5

    b7. 构建部分,点击增加构建步骤,选择MultiJob Phase

    image.png
    b8. 设置构建前置任务,JobName框中输入需要在当前任务执行前执行的任务,比如test任务必须在test-MultiJob前执行,则填写test。test任务必须已经存在。继续点击add jobs可增加更多前置任务,前置任务按顺序执行,即A->B->C顺序执行。
    image.png
    b9. 构建部分,设置当前任务执行步骤,同a6

    剩余所有步骤均与第一种方式相同。

    总结

    1. 第一种任务类型与第二种任务类型之间最大的差距在于,第一种是独立的任务,而第二种则是类似于工作流的形式。
    2. 第一种任务与第二种任务构建步骤间最大的差距在于,第一种是选择构建一个自由风格的软件项目类型;而第二种则是通过安装Multijob plugin插件来选择MultiJob Project类型,并在构建部分选择MultiJob Phase
      以控制任务的执行顺序以实现A->B->C的构建顺序。

    相关文章

      网友评论

          本文标题:Jenkins+SVN+Maven实现自动打包Jar/War并发

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