jenkins- 自动部署java包至远程服务器

一、安装jenkins

参考教程:https://www.cnblogs.com/yanjieli/p/10606674.html

假设jenkins安装路径:/usr/local/jenkins 

后续新建item都会在这个路径的workspace目录下:/usr/local/jenkins/workspace/项目名称

二、安装插件并配置SSH

系统管理 -> 插件管理 -> 可选插件,搜索Publish Over SSH 进行下载

 安装完成后,进入系统管理 ->系统配置(上图第一个),鼠标滑到下面,找到如下页面,配置ssh服务器:输入服务器名称、IP、用户名、密码、发布项目得默认路径

 点击【高级】,勾选 ‘User password’,并且输入远程服务器密码,点击 ‘Test Configuration’,成功。

三、全局工具配置

1.maven路径:jenkins上maven的settings.xml文件所在路径

 2.JDK路径:jenkins上jdk安装路径

 3.maven安装路径:

 4.git如下配置即可

 三、新建任务

点击左侧菜单栏:新建item。项目名称:test

如下图所示,如果没有 ‘构建一个maven项目’,需要下载插件(系统管理 -> 插件管理 -> 可选插件,搜索Maven Integration 进行下载)。如果你想copy一个已经存在的任务,在复制那个输入框输入你要复制的任务就ok了。

安装依赖包:javadoc,自动安装若失败,手动下载

http://updates.jenkins-ci.org/download/plugins/javadoc/1.4/javadoc.hpi

http://updates.jenkins-ci.org/download/plugins/maven-plugin/2.14/maven-plugin.hpi

然后在高级安装中上传(可以更改升级站点URL源:http://mirror.esuni.jp/jenkins/updates/update-center.json或者https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json)。

参考:https://www.cnblogs.com/robert-zhang/p/8571332.html、https://blog.csdn.net/u013019701/article/details/103649773

点击【确定】按钮,进入任务配置页面。

基本配置:

勾选This project is parameterized,选择git parameter(需要安装插件Git Parameter),输入变量名:branch ,参数类型:分支或标签, 默认值:master

 源码管理:

勾选Git,输入项目URL,添加Git账号/密码(有权限拉取代码的账号),在Branches to build中填入刚才的变量名,注意要加$

 BUILD

如果是多个项目的话,最好指定相应项目的POM文件路径:/usr/local/jenkins/workspace/test/java/estate-service/pom.xml

这里根据项目路径,输入相对路径即可。

打包命令:clean package -Dhttps.protocols=TLSv1.2 -Dmaven.test.skip=true

包文件传送到远端

方法一:在post-steps中over ssh,如下图

 方法二:添加构建后操作,如下图

 选择SSH Server:Name下拉菜单选择上面添加得SSH服务器

Transfer设置:

Source files:java/estate-service/target/*.jar  

目标文件:即需要从jenkins传输得jar包,打包成功后,会在该路径(/usr/local/jenkins/workspace/test/java/estate-service)下生成target文件夹,里面的jar包就是我们需要的。
Remove prefix:java/estate-service/target/ 需要去掉的前缀,也就是过滤掉不要的文件夹,我只要jar,所以把它的上级全部都去掉了。
Remote directory:远程服务器的发布路径,即jar包要发到哪个路径去,注意:实际路径是在系统配置中 SSH Server中配置的 remote dictionary + 这里配置的,我就发到当前路径,所以这里我就输入./
Exec command:文件发到指定服务器后,要执行的 shell 脚本,可以直接写在下面,也可以 sh /aa.sh 这样调用。注意,所有的路径都要是绝对路径,不然会找不到执行文件

#!/bin/sh
ps -ef|grep -v 'grep' |egrep "estate-service.jar"|awk '{system("kill -9 "$2)}'

echo -------------------------------------------
echo start server
echo -------------------------------------------

# jar的部署地址
export CODE_HOME="/acow/springboot"

#所有项目日志统一在此根目录, 子目录会根据logback.xml生成
export LOG_PATH="/acow/logs"

# 【需要按环境调整】apollo配置环境,开发、测试、生产是不同的。
export ENV=DEV
export APP_ID=estate-service

#【按实际调整】authfunc-service服务的端口
export Server_Port=9900

# JVM启动参数
export JAVA_OPTS="-server -Xms64m -Xmx128m"
# -Dserver.port=$Server_Port  -Dapollo.cacheDir=$apollo_cache -Dapollo.meta=$apollo_meta -Dspring.cloud.nacos.discovery.namespace=$nacos_discovery_namespace -Dspring.cloud.nacos.discovery.group=$nacos_discovery_group -Dspring.cloud.nacos.discovery.server-addr=$nacos_discovery_server
export JVM_OPTS="-Dlog.path=$LOG_PATH -Denv=$ENV -Dapp.id=$APP_ID"

nohup java $JAVA_OPTS $JVM_OPTS -jar $CODE_HOME/$APP_ID.jar >$LOG_PATH/$APP_ID/project.log  2>&1 &

echo ----- started ---

保存、构建
至此,配置就完成了,我们点击保存,然后返回项目所在页面,单击build with parameter,选择分支,点击【开始构建】。

 点击构建之后,我们可以在左下角 ‘构建队列’ 中看到本次构建进度,通过控制台输出,可以看到构建的详情。

看到如下日志输出,表示发布成功。可以到远程服务器发布路径下检查一下。

 另外补充一点:如果配置文件有改动,怎么办?可以在构建前将配置文件手动修改好,再通过pro_steps将修改后的配置文件更新到jenkins的源码目录下:

原文地址:https://www.cnblogs.com/july-1016/p/14115700.html