首页 > 其他分享 >Jenkins自动化部署-配置项目(下)

Jenkins自动化部署-配置项目(下)

时间:2023-08-04 15:38:01浏览次数:40  
标签:git java techplatform 部署 jar jtn 自动化 Jenkins impl


一、新建项目,设置Git地址,账号密码。

多种方式,ssh方式,需要配置私钥。

第1个错误:Git没安装

Linux机器上,先安装Git软件。 CentOs系统,yum install git

git -version 检查是否安装成功

解决之后,再次构建之后,产生了项目目录。

cd /root/.jenkins/workspace/test-auto-deploy

第2个错误:权限不对,说明git clone,http访问的账号密码没有设置正确。

The requested URL returned error: 401 Unauthorized while accessing

生成公钥-私钥对

ssh-keygen -t rsa -C [email protected] 密钥目录,不输入,使用默认目录。 密码不输入,为空,直接登录。

cat /root/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAygIraVbu9xWAJClr3OD5d5fXzqN55DnZ6HCwmxh/n59VuxSYU+aA7YO0x7hC1gQmQVyhkteoPOglxR1oNjykKiuLPMjuohjq+7uN4/tPtV4J0bEVisYyHcfRbGiMqg1AwIXGdu1ZFkkq8N1QRUcVFvIMtJNv79En2IgXjBpso+mZDw7P5NYbewwVF9aYEunm0dmA4MZktu8IZx5t9IdTJdACQSQQ5uGLZCJCfowAfborroAb5N8LtlOlkP+U0t303zybT4KqgOLfGvERN9oOMcrI2MCOTsI4ch64J8AOZ7xi8JiO7J66mOEVSqUYjcziaihOo0ljxzkdEFCV430IHw== [email protected]

cat /root/.ssh/id_rsa

----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAygIraVbu9xWAJClr3OD5d5fXzqN55DnZ6HCwmxh/n59VuxSY U+aA7YO0x7hC1gQmQVyhkteoPOglxR1oNjykKiuLPMjuohjq+7uN4/tPtV4J0bEV isYyHcfRbGiMqg1AwIXGdu1ZFkkq8N1QRUcVFvIMtJNv79En2IgXjBpso+mZDw7P 5NYbewwVF9aYEunm0dmA4MZktu8IZx5t9IdTJdACQSQQ5uGLZCJCfowAfborroAb 5N8LtlOlkP+U0t303zybT4KqgOLfGvERN9oOMcrI2MCOTsI4ch64J8AOZ7xi8JiO 7J66mOEVSqUYjcziaihOo0ljxzkdEFCV430IHwIBIwKCAQBFQpKKhDSsfGZyzF9+ 7gxjhISBXJ7R5/Lwm6pDzeKdIK+t2yzpkNu/JdeU7rfUWTGwAoCKHg3LvU7HPUhN HBsHJN9ICmByFyv+iXJ6DQViwSfwH3UZowneUyM7HIf/ygeSdwI3Z1G+f3xv1tmx WjMdz1TQMozHQGVuz5MLdsYpkU9l0Q9JkgKH/BGhJg3H+/liJ7AspGELm0uhFFlm AIxMo5bLbY7qgm/bOM+IMZEPPg/NC8+SE0T7M7VqEI6iGkSzlyDaECLdDhk8oO8I QNEoH4aHrhcWpu9rFvZus8J5mG4TcnOPDV9Ia57YRahNj9fv2SSWtluco63a6KBg mX1LAoGBAOO8TqR7rUoY56Lj/r9LJewisMHIBTPOlxp0xGrqtoL9dqzparWU5Opz WiOnE76tt6geIOmf/lz/FrwBtBQAdNmSIHF/OpYtZdWTdjQ9LtOQq3G1JMQggpVA LXNyXRtLKAIXt7bNBfDwiFSy9dFKO25hGPk3D+KLwP3tttFuxWfpAoGBAOMUc77S lEoAL+lzKNtAemNQ36fr4cCGfaax3qj1pIxI0YgxDyUmADAGt8GKPQVjjYAk/L+F fdAv5hhvReDO8dLr+LSpmQP5aT/r+s537i3sGLltNVwsLhOO7ktH1qaPQnUgKFxp Bx5qdDFLjscMAz44K1VfUEtdRWQOyJta9/LHAoGAThStP7Vf/CXLwtHTr0z3DyHW M8+MwU4lLaRgma+PCFbm3DLFgBXK1ApKymUrV1GAy+0SmT4rUxWhZQfl+DqruE9b lKCmX2AFqE/QwXQQDgW3H6vSF1uafFCEnJw9Le3h1NTuh9FD3ZRL/8hUR8Gt+fVn peb+IcmD/0owDUqM0ysCgYEA3JeGYZlc2iwRSS4KbpZoQziewGF8N14TqT8S0ASR N9G1mj5JOgeoaSsY5+Vf2Vlk4uIaGSKXecghWZCqSBl9M0uhJId+s2dQTLlaCmXg D1phKShCdsvU/Q6BFe4Dt75d0N1pCVAVi0LXRdRez/0KdvS8YY/KV9by83wTVRaK ds8CgYEAg/NS6dSKdEVBRHDR63NOTgNNBBBr4E7BLQGuy88iXuBVbTEo7GfdMOTR pr7PJzaiNgHQqSmsIxW08Zst9aYM/siQ/h6ssVadJ8R3AjidP2BMXVKpyWEfEB/N nx0Wc+7kvOtEdQMQ1dQe6qMgvWSOSQW7+lIHYkPtIvlE00/igMU= -----END RSA PRIVATE KEY-----

Gitee项目,增加公钥

部署公钥管理-添加公钥

Git仓库地址:[email protected]:xxx/techplatform.git (有网友用的是 git://开头,git代码托管在gitee,难道是这个不太一样)

配置Credentials:Username with password 账号:[email protected] 密码:123456

二、Jenkins首次控制台输出

Started by user fansunion Running as SYSTEM Building in workspace /root/.jenkins/workspace/test-auto-deploy using credential jtn

git rev-parse --is-inside-work-tree # timeout=10 Fetching changes from the remote Git repository git config remote.origin.url [email protected]:xxx/techplatform.git # timeout=10 Fetching upstream changes from [email protected]:xxx/techplatform.git git --version # timeout=10 using GIT_ASKPASS to set credentials git fetch --tags --progress [email protected]:xxx/techplatform.git +refs/heads/:refs/remotes/origin/ git rev-parse refs/remotes/origin/master^{commit} # timeout=10 git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10 Checking out Revision 7f90f556a423e67fe90da7abf1e57557d99b5e53 (refs/remotes/origin/master) git config core.sparsecheckout # timeout=10 git checkout -f 7f90f556a423e67fe90da7abf1e57557d99b5e53 Commit message: "like,config,photo,comment,collect" First time build. Skipping changelog. Triggering test-auto-deploy » default test-auto-deploy » default completed with result SUCCESS Finished: SUCCESS

说明Git clone代码成功了。

三、配置Maven

下载Maven http://maven.apache.org/download.cgi

解压,配置环境变量

vim /etc/profile export MAVEN_HOME=/home/soft/apache-maven-3.6.1 export MAVEN_HOME export PATH=$PATH:$MAVEN_HOME/bin

mvn -version

Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00) Maven home: /home/soft/apache-maven-3.6.1 Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /home/soft/jdk1.8/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "2.6.32-696.3.2.el6.i686", arch: "i386", family: "unix"

安装Maven集成插件(Maven Integration)

重启Jenkins

http://47.15.99.4:9090/restart

新建项目,多了1个选项"构建一个maven项目"

构建一个maven项目.Jenkins利用你的POM文件,这样可以大大减轻构建配置.

配置Maven

构建-增加构建步骤-调用顶层Maven目标 配置如下: clean install -U -Dmaven.test.skip=true

执行构建,找不到mvn

[default] $ mvn -f pom.xml clean install -U -Dmaven.test.skip=true FATAL: command execution failed java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.(UNIXProcess.java:247) at java.lang.ProcessImpl.start(ProcessImpl.java:134) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) Caused: java.io.IOException: Cannot run program "mvn" (in directory "/root/.jenkins/workspace/jtn-techplatform/default"): error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)

系统管理-全局工具配置-Maven

Name: maven MAVEN_HOME:/home/soft/apache-maven-3.6.1

JDK配置

别名: JDK1.8 JAVA_HOME : /home/soft/jdk1.8

项目的配置Maven选择指定的名字“maven”,而不是默认

目标: clean install -U -Dmaven.test.skip=true

四、配置Shell脚本

自动化部署3步走,Git Clone代码,Maven打包,执行Jar包。

将应用停止,Copy jar到指定目录,增加权限,再执行jar

Shell脚本 echo "Stopping SpringBoot Application jtn-techplatform-impl.jar" pid=ps -ef | grep jtn-techplatform-impl.jar | grep -v grep | awk '{print $2}' if [ -n "$pid" ] then kill -9 $pid fi cp -f /root/.jenkins/workspace/jtn-techplatform/default/techplatform-impl/target/jtn-techplatform-impl.jar /home/app/jtn-techplatform-impl.jar cd /home/app chmod 777 /home/app/jtn-techplatform-impl.jar nohup java -jar jtn-techplatform-impl.jar >techplatform.log 2>&1 &

最难的提示:获取进程id grep -v grep,排除grep本身的简称

grep -v 可以实现 NOT 操作。 -v 选项用来实现反选匹配的( invert match)。如,可匹配得到除下指定pattern外的所有lines。 参考资料:https://www.jianshu.com/p/4ec50fdaf388

www 3142 2491 99 16:36 pts/0 00:01:15 java -jar system-release-1.0.0.jar awk '{print $2}' 获得第2个参数,3142就是想要的线程数/进程数

五、最后1个问题

nohup命令执行之后,Linux机器上并没有发现java应用正常运行。 在Jenkins里配置的是“nohup java -jar jtn-techplatform-impl.jar >techplatform.log 2>&1 &” 但是Jenkins控制台显示的是 “+ nohup java -jar jtn-techplatform-impl.jar”

一直以为是最后一个“&”没有让他在后台运行,发现怎么改都不行。 只好搜索“Jenkins nohup”,找到一篇文章:

背景

jenkins持续集成,需要任务后台执行(nohup执行)结果发现jenkins的job执行完后,看不到运行的进程

步骤

原因就是这么一个情况:Jenkins任务结束时候自动关掉了所有的子进程

不过可以设置一些东西让其可以在后台运行

其实就是在脚本中加入一句BUILD_ID=DONTKILLME

问题的根本在于是Jenkins使用processTreeKiller杀掉了所有子进程,而且这是Jenkins的默认行为。 其实回头来看这个问题,就发现Jenkins的做法非常合理。当一次build异常结束,或被人终止时, 必然需要结束所有这次build启动的子进程。下面的link提供了更多细节,以及解决方法。 https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller

六、SpringBoot项目打包的3个小问题

犯了一个错误,Java资源文件目录在代码中写成了src/main/resource,应该用“复数s”。 src/main/resources/${deploy.type}src/main/resources dev/ test/ pro/*

SpringBoot项目打包用这个,pom.xml的Packaging需要配置成jar,不是pom,也不是war。 org.springframework.boot spring-boot-maven-plugin 1.4.2.RELEASE com.jiutianniao.techplatform.JtnTechPlatformApplication repackage

最后,核心jar包,引入third.jar,想扫描里面的mapper等resource资源。 //classpath private static final String CLASSPATH_MAPPER_XML = "classpath:/mapper/jtn/*.xml";

七、一些关键的截图

源码管理Git配置

Jenkins自动化部署-配置项目(下)_SpringBoot

Maven命令

Jenkins自动化部署-配置项目(下)_jar_02

执行Shell

Jenkins自动化部署-配置项目(下)_SpringBoot_03

echo "Stopping SpringBoot Application jtn-techplatform-impl.jar"
pid=`ps -ef | grep jtn-techplatform-impl.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
fi
cp -f /root/.jenkins/workspace/jtn-techplatform/default/techplatform-impl/target/jtn-techplatform-impl.jar /home/app/jtn-techplatform-impl.jar
cd /home/app
chmod 777 /home/app/jtn-techplatform-impl.jar
BUILD_ID=DONTKILLME

nohup java -jar jtn-techplatform-impl.jar >techplatform.log 2>&1 &

其它配置

Jenkins自动化部署-配置项目(下)_jar_04

 

Jenkins自动化部署-配置项目(下)_自动化构建_05

八、参考资料

1. Jenkins安装及自动部署Maven项目


2. 使用Jenkins配置Git+Maven的自动化构建


3. Jenkins编译报错:Cannot run program "mvn" (in directory "/var/lib/jenkins/workspace/mall"):

error=2, No such file or directory 

4. jenkins 后台程序运行


5. jenkins 自动化部署 spring boot 项目(多图)


 

九、最后再赠送一点 控制台日志

[INFO] Building techplatform-parent 1.0.0-SNAPSHOT                        [5/5]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ techplatform-parent ---
[INFO] Installing /root/.jenkins/workspace/jtn-techplatform/default/pom.xml to /root/.m2/repository/com//techplatform-parent/1.0.0-SNAPSHOT/techplatform-parent-1.0.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] common 1.0.0-SNAPSHOT ............. SUCCESS [  9.923 s]
[INFO] client 1.0.0-SNAPSHOT ............. SUCCESS [  0.418 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  15.673 s
[INFO] Finished at: 2019-07-22T20:12:22+08:00
[INFO] ------------------------------------------------------------------------
[default] $ /bin/sh -xe /tmp/jenkins2776744439575037216.sh
+ echo 'Stopping SpringBoot Application jtn-techplatform-impl.jar'
Stopping SpringBoot Application jtn-techplatform-impl.jar
++ awk '{print $2}'
++ grep -v grep
++ grep jtn-techplatform-impl.jar
++ ps -ef
+ pid=
+ '[' -n '' ']'
+ cp -f /root/.jenkins/workspace/jtn-techplatform/default/techplatform-impl/target/jtn-techplatform-impl.jar /home/app/jtn-techplatform-impl.jar
+ cd /home/app
+ chmod 777 /home/app/jtn-techplatform-impl.jar
+ BUILD_ID=DONTKILLME
+ nohup java -jar jtn-techplatform-impl.jar
Finished: SUCCESS

 

标签:git,java,techplatform,部署,jar,jtn,自动化,Jenkins,impl
From: https://blog.51cto.com/fansunion/6963112

相关文章

  • 环境配不对,运行两行泪!推理部署专题
     Datawhale 专题分享:百度AI推理部署系列部署环境不对!模型上的内存占用过高无法上线!推理计算耗时太高,可能造成服务不可用!今天,是项目推迟上线的第N天,也是开发者们崩溃的第N+1天。从接到项目时踌躇满志,再到披荆斩棘地完成了网络搭建、模型训练,“过五关斩六将”本以为“一路顺风”,结......
  • vue3项目部署到服务器刷新页面就404
    本地项目调的好好的,刷新也没有毛病,扔到服务器上,第一次打开是正常的,再刷新下就404了,不知道什么原因。百度了下才发现问题所在 constrouter=createRouter({history:createWebHistory(import.meta.env.BASE_URL),routes:[{path:'/',......
  • 自动化工具之Appium元素操作小技巧
    背景   appium自动化工作中,元素操作最常用的就是Id/xpath,因为【appium1.5.0后,不支持使用name定位】所有大家在工作中使用id/xpath定位;如果还是想用name定位,需要修改源码,具体大家自己去查,但在工作中id/xpath已经够用。    今天介绍目前我工作最常用的一些方法,希望能帮......
  • 无语!Jenkins 也宣布弃用 Java 8(文末送书)
    继Java之父JamesGosling先前称,开发者应尽快弃用JDK8,可以选择JDK17LTS,因为后者在各个方面都带来了巨大的改进。开源Devops工具Jenkins宣布:从6月28日发布的Jenkins2.357和即将发布的9月LTS版本开始,Jenkins最低需要Java11。Jenkins最初称为Hudson,是一款......
  • CentOS7 安装部署 OceanBase 数据库
    OceanBase是由蚂蚁集团完全自主研发的国产原生分布式数据库,本文以x86架构的CentOSLinux7.9主机作为环境对该数据库的安装部署进行介绍。背景OceanBase数据库自V4.0.0开始提供统一的安装包all-in-onepackage。您可以通过这个统一的安装包一次性完成OBD、OceanBase......
  • 如何维护自动化测试
    毫无疑问,自动化测试已改变了软件开发的工作方式。如果不是Selenium自动化测试,测试人员将花费大量精力进行各种各样的无错误Web应用程序测试。有一部分人认为程序最终将为他们完成越来越多测试工作,最终使整个测试过程自动化。但,这并不代表可以一劳永逸!这并不是说他们做不到,越是依赖......
  • linux上使用yum部署mongodb4.2+分片副本
    来源:https://blog.51cto.com/wutengfei/5937039系统配置Linux是有文件句柄限制的,而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到这个数量。为防止服务因toomanyopenfiles错误出现宕机,这里需要对linux系统句柄数进行调整。##临时调整,系统重启即失效ulimit......
  • Jenkins学习-01(Jenkins学习的目的、Jenkins的作用)
    一、学习的目的因为从刚刚进入公司开始,就在使用Jenkins进行发版。虽然逐渐的会使用了Jenkins但是,对于自己还是一个完全的黑箱状态,所以说打算对Jenkins进行完整的学习并且加以记录,方便自己日后进行回顾。ps:本次学习使用的是尚硅谷的在b站发布的Jenkins教程。地址:01-Jenki......
  • 【图像分类】没有人工收银,吃饭买单全自动化,是谁的功劳?
    不知道你是否已经发现我们平常购买商品的时候越来越少需要人工收银笔者逛商场的时候就特别喜欢去自助小餐厅从选菜到结账完全只需要自己参与不仅减少了排队结算时间还给吃饭带来了仪式感自助收银这背后的技术就是图像识别包括图像分类与目标检测作为计算机视觉的核心部分图像分类的......
  • 微服务架构实战指南:分布式系统的设计与部署技巧
    微服务架构实战指南:分布式系统的设计与部署技巧分布式微服务架构是一种将大型应用程序划分为多个小型服务的设计方法。这种方法可以提高应用程序的可扩展性、灵活性和可靠性。以下是设计和实施分布式微服务架构时应考虑的关键要点和策略:1、服务拆分和设计:首先需要对应用程序......