我的理解是jenkis能自动打包发布 如此而已 就是能自动从你的git上 用maven 打包 发送到指定 linux上 然后启动 就这样
我自己是用docker 上面安装了linux虚拟机 又用docker 下载 jenkins/jenkins 这个 镜像 启动
docker run -d -p 8002:8080 -v jenkins:/var/jenkins_home --name jenkins jenkins/jenkins
上面这个 -v 设置个变量 其实就是把把这个jenkins安装到哪里
启动jenkins 之后 会提示输入密码 密码存放在 jenkins_home/secrets/initialAdminPassword
一直点点 安装好就成
检查是否有“Git plugin”和“Publish over SSH”两个插件,如果没有,在“可选插件”中安装。发现“Publish over SSH”没有,安装它
然后接下来需要连接linux 用 ssh-keygen 在当前目录生成公私钥
公钥应该会自动传送到/root/.ssh/authorizekeys 然后把这个私钥拿下来 jenkins 系统设置 看最下面这个选项
然后就可以新建个自由风格的项目
构建环境 构建触发器 啥都不写
source file 就是maven打包后 这整个项目 我想只发布target目录下的jar到服务器 上 remote Directoy 就是发布到目标linux的那个目录下 Exec command 就是这个jar包传到 linux 启动脚本
#!/bin/bash
echo 开始启动了
pid=`ps -ef |grep demo | grep -v grep | awk '{print $2}'`
kill -9 $pid
sleep 5
nohup java -jar /tmp/jenkins_test/target/demo-0.0.1-SNAPSHOT.jar >start.log 2>&1 &
#grep -v 反选 忽略掉grep这个进程 awk 切行 后面可以打出第二列的进程号
pid=`ps -ef |grep demo | grep -v grep | awk '{print $2}'`
if [ ! $pid ];then
echo “启动失败”
else
echo “启动成功”the process $pid exist
fi
sleep 5
var=$(cat /root/start.log)
echo $var
maven打包语句 maven就是本机的maven
构建后想发个右键通知啥的
另外如果本机没有安装maven可以
当然如果安装后就算了
jenkins 经验总结
在分别 source File 这个jenkins 服务器 默认 的目录
/home/jenkins/workspace/CMS-测试/gw-vms-audit
所以 我们写 target/*.jar 因为 target就是下级目录啊 所以可以匹配到
而这个remove prefix 去掉 前缀 去掉这个 target 否则传到linux上的时候会把 target目录传过去
而这个remote directory 是linux远程目录 既可以写相对路径 也可以写绝对路径 这个相对路径 是我当前目录 由于 运维我这个账号
所以我的当前目录是 /home/liyanan
提前准备好restart.sh
#!/bin/bash
NAME=hnradio-vms-audit
#因为我当前目录是/home/liyanan 所以需要进入
cd $NAME
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v grep | grep -v restart.sh | awk '{print $2}'`
echo $ID
kill $ID
while true
do
ID=`ps -ef | grep "$NAME" | grep -v grep | grep -v restart.sh | awk '{print $2}'`
if [ -z $ID ]
then
echo "serve have killed"
break
fi
done
#>nohup.out 2>&1 如果不加的话本来就会有这个文件 但是jenkins执行 的时候 他会把执行log打印到jenkins控制台 导致 jenkins的脚本 一直退出不了 也可以>dev/null 2>&1 这样就什么也不输出了 连nohop.out这个文件也没有
nohup java -Denv=DEV -Ddev_meta=http://172.20.5.103:8080 -Dapollo.cacheDir=cache -Dapollo.cluster=DEFAULT -Dserver.port=55111 -jar -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xms1024m -Xmx1024m -Xmn256m hnradio-vms-audit.jar >nohup.out 2>&1 &
ID=`ps -ef | grep "$NAME" | grep -v "grep" | grep -v restart.sh|awk '{print $2}'`
if [ -z $ID ]
then
echo -e "start failed"
else
echo -e "start success"
fi