jenkins进阶自动打包java项目,钉钉通知

这篇文章只是讲述了jenkins如何打包jar项目,同时集成了自动发布,手动回滚,钉钉通知。

  1. jenkins打包jar项目,点击新建Item--pipeline

添加图片注释,不超过 140 字(可选)

接下来需要配置git凭据,git凭据是你能拉下代码的关键,拉到最下面有一个流水线语法,点击后选择git,

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加完凭据后下来选择你的凭据,然后点击生产流水线脚本,记住生成的内容拷贝出来后面要用到。

添加图片注释,不超过 140 字(可选)

接下来我写了一个模板,这是根据我们实际情况写的,我会标注好,一般情况下的公司直接使用就行 

pipeline{
    agent any
    parameters {
        choice(name:'state',choices:['beforehand', 'synchronization'],description:'beforehand更新,synchronization回退')
        string(name:'tagrenum', defaultValue: '0', description:'回滚时版本号,默认是0')
    }
//选择打包环境
    tools {
    jdk 'jdk1.8'
maven 'maven'

}
//定义了全局环境变量
environment {
    //分支
    repoBranch="master"
//jar包名
    name="api-app"
//jar包启动时的端口
Port="8080"
//git地址
git="http://192.168.0.100/mid/heb-heathy.git"
//这个地方要注意,有些代码打包后并不是在当前目录下生产target文件夹,而是在下一层目录里面生成。如 server-api/target/server-api.jar
javapath="api-app/target"
        //jar启动时指定的配置文件类型,可以是prod、dev、pro,根据实际情况选择
pat="dev"
//代码备份路径
jarback="/data/java_back"
//项目要启动的服务器
tarip="192.168.0.101"
    }
    stages {
stage('代码获取,打包备份') {
   when {
                expression { 
                   return  (state == "beforehand" )
          }          
        }
   steps {
   //${env.repoBranch}对应上面environment中repoBranch,下面的参数都是类似;credentialsId就是刚才你保存脚本。
        git branch: "${env.repoBranch}", credentialsId: '100', url: "${env.git}"
//简单理解sh 就是在jenkins服务器上执行了一个命令
//第一步打包
        sh "mvn -U clean package -Dmaven.test.skip=true "
        //sh "mkdir ${env.jarback}/$JOB_NAME"
//第二步,备份下打包后jar包,我个人习惯是备份在jenkins服务器上,后面如果需要回滚方便操作,不需要手动操作
//${env.name}后面的*是比填的,因为代码打包的时候代码中定义的jar包会有版本号,这个版本号又不是固定的
//$JOB_NAME是jenkins内置的环境变量表示你当前job项目的名称,$BUILD_NUMBER构建的号码
sh "echo ${env.jobname}/${env.name} "
sh "cp -rf ${env.javapath}/${env.name}*.jar  ${env.jarback}/$JOB_NAME/${env.name}-${BUILD_NUMBER}.jar"
}

}
stage('更新') {
    //对应parameters中choice选择参数
    when {
                expression { 
                   return  (state == "beforehand" )
          }          
        }
   steps {
    //将文件上传到目标服务器
        sh "scp ${env.jarback}/$JOB_NAME/${env.name}-${BUILD_NUMBER}.jar  ${env.tarip}:/opt/apps/ "
        //重点来了,启动程序流程首先要判断这台服务器上有没有这个程序、然后停止程序、删除旧的程序、重命名程序,然后启动程序
        //这个都是无法通过一条命令能够完成,因此借助shell脚本
sh "ansible ${env.tarip} -m script -a '/usr/local/java_jar/jarstart.sh ${env.Port} /opt/apps ${env.name}-${BUILD_NUMBER}.jar ${env.pat}' "
}

}
stage('回滚') {
    //对应parameters中choice选择参数
    when {
                expression { 
                   return  (state == "synchronization" )
          }          
        }
   steps {
    //将文件上传到目标服务器
        sh "scp ${env.jarback}/$JOB_NAME/${env.name}-${env.tagrenum}.jar  ${env.tarip}:/opt/apps/ "
        //重点来了,启动程序流程首先要判断这台服务器上有没有这个程序、然后停止程序、删除旧的程序、重命名程序,然后启动程序
        //这个都是无法通过一条命令能够完成,因此借助shell脚本
sh "ansible ${env.tarip} -m script -a '/usr/local/java_jar/jarstart.sh ${env.Port} /opt/apps ${env.name}-${env.tagrenum}.jar ${env.pat}' "
}

}
}
}

jarstart.sh脚本
#!/bin/bash
#shell 脚本执行时可能获取不到环境,手动写进去
JAVA_HOME=/usr/local/jdk/
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
#程序端口
prod=$1
#程序名
#程序所在目录
cou=$2
#拷贝过去的程序名
file=$3
#jar启动时的配置文件类型
pat=$4
#查看port对应的pid
qpid=`lsof -i:$prod |awk "{print $2}" |grep -v PID |sed -n '1p'`
echo "qpid====$qpid"
#同时获取当前启动的文件名
jpsl=`jps -ll |grep $qpid|awk '{print $2}'`
#判断端口是否存在 
if [ -n "$qpid" ];
then        
    echo "端口不是空"
        #有些公司不让用kill -9 可以换成kill -15 
        kill -9 $qpid
        #等待10秒,给程序关闭的时间
        sleep 10
fi  
#进入程序启动目录,删除旧的程序
cd $cou
if [  -f $jpsl ]
then
rm -rf $jpsl
fi  
#启动程序
nohup java -jar  -Xms512m -Xmx1024m $cou/$file --spring.profiles.active=$pat >/dev/null  2>&1 &

  1. jenkins配置钉钉和同时构建数量,同样你代码构建失败成功都需要钉钉通知,解析来配置钉钉

1、在钉钉上创建一个机器人,选择自定义机器人,创建后记录下webhook和加密

2、在jenkins中配置钉钉,我用的是2.420版本,钉钉配置在manage jenkins 最下面

添加图片注释,不超过 140 字(可选)

3、点击进去后,填写下面内容,添加完成后再右下角有一个测试,点击测试,成功后会给你发一条钉钉消息。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

  1. 接下来,在job中配置钉钉,这样就添加完成了

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

5、修改同时构建数量,点击manage jenkins -- system,这里面有一个执行器数量,这个的调整表示能同时运行几个job的构建,我一般是设置成10个。

添加图片注释,不超过 140 字(可选)

6、gitlab代码提交后,jenkins自动发布,需要先安装插件gitlab

打开你的jenkins的job,点击构建触发器,然后点击下面Build when a change is pushed to GitLab点击后,点击,高级--generate生产你的secrettoken;

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

打开gitlab你的项目然后找到,设置--集成

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

完成后你会在下面看到webhooks里面有内容,选择你新创建的然后点击 Test,然后选择push events,点击后再点击编辑,就能看到你的触发是否生效,然后你jenkins就会自动去打包。

添加图片注释,不超过 140 字(可选)

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值