Jenkins的整体流程可以参考下图 开发人员将工作区的代码提交到代码库(svn或者git),代码库再调用钩子程序通知Jenkins(我已经更新了代码,你也要重新部署一版了),钩子程序是我们自己编写,这个钩子程序很容易后续会提到怎么编写钩子程序 上图仅作参考,图中流程为部署ssm项目流程,因此与部署springboot项目有些不同。springboot项目打包成jar包为不是war包了,使用的也不是Deploy to web container插件部署了,而是Publish over SSH 1.需要在linux服务器中安装JDK参考文章:centos7下安装JDK 2.需要在linux服务器中安装Maven参考文章:centos7下安装Maven 3.需要在linux服务器中安装svn参考文章:centos7下安装SVN 4.需要在linux服务器中安装Jenkins参考文章:Jenkins之路(一):Jenkins安装 配置全局工具也就是配置Jenkins编译打包时要用到的JDK以及Maven 配置这三块地方 1.指定maven的配置文件 第1和第3在下拉框中选这一下就行,不要用选择默认配置就行 第2步和第4步的值是一样的,里面填的的是你linux服务器中安装好的maven的settings配置文件 2.配置jdk 点击JDK安装 别名可以随便起,把自动安装Install automatically的勾选去掉,JAVA_HOME填你在服务器上安装的jdk的路径 我的是在这个位置,因此值是/home/java/jdk1.8.0_251 3.配置maven 点击maven安装 最终/home/apache-maven-3.6.3 点击Jenkins管理,选择插件管理 搜索插件 Publish over,直接安装 等待安装 安装完成后配置Publish Over SSH 拉到最后面找到Publish over SSH,点击新增 填好之后在点击高级配置密码和端口 勾选Use password authentication, or use a different key 点击Test configuration按钮,出现Success说明链接成功,点击保存就行了 上面全局的JDK和Maven已经配置好了,Publish over SSH插件也已经安装完成了,下面我们新建一个Jenkins项目 输入名称,选择自由风格的项目,点击确定 创建好之后就可以在首页看到相对应的项目了 点击项目名进行配置 1.配置源码管理 选择subversion,配置svn Credentials:svn版本库的的用户名、密码 点击添加,选择Jenkins 在这里输入你的svn版本库的用户名、密码,点击添加 添加之后还要选择你添加的用户名、密码 添加成功之后,下面这行字就会自动消失,如果还在说明你的配置有问题,检查下url和用户名、密码 2.配置构建步骤 点击增加构建步骤,选择图中的配置 maven版本选择我们上面配置好的maven,目标填入clean install,这个就是maven打包命令了 3.配置构建后操作 点击增加构建后操作步骤,选择图中所示,这个配置就是将通过maven打包好的jar包发送到目标服务器 Source files配置:target/*.jar 源文件地址 ,地址的目录是相对于jenkins workspace的目录 目标服务器需要存在要执行的脚本文件 脚本文件源码 拿来直接用需要修改下面四个地方,jdk的环境变量和打包好的jar包名以及日记文件,因为远程执行脚本不会加载服务器的环境变量,因此需要在脚本文件中手动引入jdk的环境变量,启动jar时nohup java -jar需要用到jdk里的命令,所以要引入jdk环境变量 修改脚本的权限,不行会提示权限不足的问题 w:可写,表示可以编辑内容,但是不可以删除文件,代表2 x: 可执行,表示可以执行文件。代表1 rwx=4+2+1=7 测试 并且我们去目标服务器查看,会看到有一个jar并且已经在运行了,以及日志文件 到这里我们的Jenkins已经差不多设置好了,前面我们已经可以手动构建项目,然后自动打包部署到服务器了,只差当我们提交代码到svn时自动帮我们构建了, 当有代码提交到svn自动构建Jenkins项目这一步需要一个钩子程序,当svn有代码更新自动调用钩子程序构建 1.配置远程触发构建的token值 再次配置下Jenkins项目 勾选 触发远程构建 (例如,使用脚本) 身份验证令牌的值我们可以随便填,然后保存 将JENKINS_URL替换成我们访问Jenkins的url TOKEN_NAME替换成我们刚刚在身份验证令牌中填的值,最终地址 然后我们在浏览器中访问这个地址,Jenkins就会帮我们自动构建 2.curl命令触发构建 上面我们在浏览器访问地址就能自动构建,那我们在Linux系统访问这个地址也能让Jenkins自动构建 那我们linux系统怎么访问http地址呢? 使用linux的curl命令 Linux 的 curl 命令用来发送 HTTP 请求。 -X 参数:指定请求方式 命令格式: curl -X post -v -u [Jenkins 用户名]:[Jenkins 密码] https://[服务器 IP 地址]:[服务器端口 号]/jenkins/job/[Jenkins 项目名称]/build?token=[身份验证令牌] 用户名:密码后面的这一段就是刚刚我们在浏览器访问的地址 最终 我们直接在Linux系统运行这个命令就能触发Jenkins构建了 3.svn钩子程序触发构建 我们在我们的服务器找到svn版本库的这个位置 hooks意思就是钩子,然后把post-commit.tmpl复制一份并重命名为post-commit,post-commit就是svn提交之后会执行的文件 编辑post-commit 把里面的内容全部注释点,加入我们刚刚的curl命令,保存退出 给钩子程序授权 然后我们的钩子程序就编写完成了,svn有新的提交时会执行post-commit文件也就是执行curl命令,自己自行测试就可以了 到这里我们Jenkins就全部配置完成了。 有帮助请前言
整体流程:
Jenkins收到代码库的提醒之后立马去代码库里获取最新的源码,再通过调用maven插件将源码打包成jar,再通过Publish over SSH插件将jar包传到一台或者多台服务器上,再调用服务器的脚本启动jar包,这就是Jenkins工作的整体流程。准备工作
配置全局工具
这里的配置就跟你在自己的Windows电脑指定maven的settings配置文件一样
因为我的是在这个路径下,所以填的是/home/apache-maven-3.6.3/conf/settings.xml
步骤跟上面的JDK差不多,输入maven别名,取消自动安装Install automatically的勾选,填入MAVEN_HOME的值,这里的值可以把上面maven配置中的文件路径的值拷过来/home/apache-maven-3.6.3/conf/settings.xml,再去掉conf层和settings就行,当然前提你上面的配置是对的
安装Publish over SSH插件并配置
name:随便填
Hostname:服务器IP(这个就是要把打包好的jar包发送并运行的目标主机)
Username:root
Remote Directory:要发送到的远程主机的目录,这里我们填 / 根目录就行,因为后面这个路径我们还要配置
端口使用默认的22端口,密码输入你的root用户对应的密码
新建项目
项目配置
Repository URL:配置svn的版本库
Remove prefix:target/ 去除的文件地址。在Source files输入框中填入的地址,会默认在服务器下创建相同的文件夹,所以需要将我们不需要的文件夹在这里剔除掉
Remote directory:/home/project 发送jar包到目标服务器的路径,
Exec command:/home/project/start.sh 文件传输任务执行完毕后,在远程服务器上执行的脚本
export JAVA_HOME PATH CLASSPATH JAVA_HOME=/home/java/jdk1.8.0_251 #你自己的jdk路径 PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH echo " =====关闭Java应用======" PROCESS=`ps -ef |grep java |grep -v grep|grep /home/project/JenkinTest.jar|awk '{print $2}'` for i in $PROCESS do echo "Kill the $1 process [ $i ]" kill -9 $i done echo " =====启动Java应用======" nohup java -jar /home/project/JenkinTest.jar > /home/test/out.log 2>&1 & echo $! > savePid.txt cat savePid.txt rm savePid.txt
chmod 777 start.sh
r:可读,表示可以读取内容,代表4
手动点击构建
查看控制台输出
出现success,表示构建成功
可以通过ip+端口访问项目了
如果目标服务器已经有了jar包和日志文件,但你在浏览器还访问不到的话,可能是你端口没开,使用命令查看已经开放的端口firewall-cmd --list-ports
编写钩子程序
我们把红线画出来的这段拷出来JENKINS_URL/job/JenkinsTest/build?token=TOKEN_NAME
http://192.168.91.135:8055//job/JenkinsTest/build?token=mytoken
这样我们我们触发构建就不是点击这个按钮构建,而是通过访问地址构建
-v 参数:显示响应结果
-u 参数:携带用户名/密码curl -X post -v -u honger:jenkins08168114 http://192.168.91.135:8055//job/JenkinsTest/build?token=mytoken
好,我们离最终的成功只差一步了cd /home/svn/test/hooks cp post-commit.tmpl post-commit
vim post-commit
curl -X post -v -u honger:jenkins08168114 http://192.168.91.135:8055//job/JenkinsTest/build?token=mytoken
chmod 755 post-commit
有问题请留言
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算