• Jenkins自动化构建配置


    写在前头

    我每次修改代码一点东西,都要进行一个重新发布。重新发布的流程大概如下:

    • 将最新代码同步上传到git上面
    • Maven打包 mvn clean install
    • 将最新的jar包上传到服务器上面,一般我用 lrzsz 如果遇到网速慢就没办法了
    • 最后执行脚本,运行程序

    大概四个步骤,时间最长的就是将jar包上传到服务器上面去了。如果包有问题,还有重新进行上面四个步骤,甚是烦人

    在实习中,无意中接触到了Jenkins自动构建工具,那我们就来了解一下吧。

    Jenkins实践

    目的:本地IDEA一旦push了代码,jenkins能自动拉去最新代码,并且自动构建最新代码,发布

    可以大致分为两个步骤

    第一步:Jenkins从git拉去最新代码

    第二步:Jenkins自动构建

    完全是自动化的,不需要人为干预操作。只要IDEA上传代码到git,Jenkins就能帮你自动构建

     

    第一步

    Jenkins从git拉去最新代码

    • 首先在Github中设置Webhooks(网络钩子),它可以在检测到push之后,主动向Jenkins发起post请求

    • 其次在Jenkins里面配置git的信息

    • 最后在每次Jenkins新建项目的时候,配置项目在git的地址,这样就能区分哪个项目了

    第二步

    Jenkins自动构建并发布代码

    • 首先打开项目的配置文件,在项目中配置git的地址

    • 其次打开gitHook这个选项(记得一定要勾选)

    • 最后在执行shell脚本那里,输入maven命令和构建完要执行的脚本即可

    Jenkins构建三大坑

    • 第一大坑

    Maven执行报错 我们通常执行Maven命令如下: mvn clean install -Dmaven.test.skip=true

    但这样写必报错。因为Jenkins默认会为你加上mvn前缀,,所以你只用

    clean install -Dmaven.test.skip=true 即可

    • 第二大坑

    Jenkins没有权限去执行shell脚本,被拒绝

    可以将Jenkins设置为777,但这是非常不友好的。

    具体可以参考以下这篇文章:Jenkins执行脚本提示没有权限的解决办法

    • 第三大坑

    Jenkins直接完成构建,会将构建启动的进程,全部杀死,我滴妈呀

    BUILD_ID=DONTKILLME,即可防止jenkins衍生进程

    具体可以参考以下这篇文章:jenkins 杀死衍生进程

    Jenkins最终效果如下

    由于博客园不支持上传视频,只能把视频放在第三方平台上了

    链接如下

    Jenkins演示最终效果(点击我)

     

    写在最后

    Jenkins是真的蛮方便的,只要我上传代码至git,他就一路下来自动拉代码,运行脚本,发布,非常的方便

    别看我这样简单的搭建完成了,没试过的可以试试,你会发觉坑还是很多的。

    加油啦!!!

    附录:

    osc.sh的脚本

     1 #!/bin/bash
     2 pid=$(ps -ef | grep com.gdufe.osc.OscApplication | grep 'java' | grep -v grep | awk '{print $2'})
     3 if [ -z "$pid" ]; then
     4  echo 'there are not OscApplication process. starting will be continue.'
     5 fi
     6 if [ -n "$pid" ]; then
     7  echo 'java process id is '$pid
     8  if ps -p $pid > /dev/null
     9  then
    10   echo $pid' will be kill'
    11   kill -9 $pid
    12  fi
    13 fi
    14 echo 'start OscApplication wait.'
    15 nohup java -jar osc.jar com.gdufe.osc.OscApplication  >/dev/null 2>error.log &
    16 echo 'finish starting OscApplication'
  • 相关阅读:
    【转】ANSI与GB2312的编码问题
    asp.net相关文件后缀名都是什么意思?
    【转】HTTP 通信http通信过程简介
    【笔记】【转载】设计模式
    【转载】DataGridView之将数据导出成Excel和Word格式
    新开博客
    ASP.NET 从Excel文件导入数据到数据库
    Asp.net 图片异步上传的简单实现
    【笔记】【转载】JohnConnor设计模式笔记(一) 学习设计模式之前你必须掌握的-看懂UML类图
    boost Smart Pointer
  • 原文地址:https://www.cnblogs.com/wenbochang/p/10443561.html
Copyright © 2020-2023  润新知