Jenkins自动部署
1:下载jinkins:jenkins-2.204.4.zip 解压 ; 根据页面指示获取密码进入jinkins2:可以选择推荐插件安装(慢的一B,还会下载不下来),选择右边插件(什么插件都不选 选择无 点击确认)3:注册帐号和密码,成功后会弹出jinkins默认端口访问地址。(因为默认端口是8080,如过需要修改可以设置18080(在jinkins安装目录下找到jinkins.xml...
流程:
1.开发人员上传代码到Git
2.jenkins通过插件从Git上拉取项目
3.jenkins用maven打包代码
4.jenkins将打包好的代码上传至目标服务器
5.jenkins运行服务器上的命令脚本启动项目
下载安装:
1:下载jenkins:jenkins-2.204.4.zip 解压 ; 根据页面指示获取密码进入jenkins
2:可以选择推荐插件安装(慢的一B,还会下载不下来),选择右边插件(什么插件都不选 选择无 点击确认)
3:注册帐号和密码,成功后会弹出jenkins默认端口访问地址。(因为默认端口是8080,如过需要修改可以设置18080(在jenkins安装目录下找到jenkins.xml修改端口,然后重新启动jenkins就可以了(localhost:8080/restart))
下载插件:
这里推荐一种最快而团不会出什么问题:
1:找到Manage Jenkins下面的 Manage Plugins 选择最右边的Advancde(高级)
2:将最下面的插件地址更换为清华的加速地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
注意:有的时候更换镜像之后下载插件还是走的官方地址
原因:配置了清华的镜像之后他还是走的jenkins官方去拉取的,是因为清华镜像的配置文件里面的插件下载地址并 不是指向的清华镜像,仍然指向的是jenkins官方的地址,我的解决方案是把jenkins官方的地址通过nginx吞掉 直接转发到清华镜像去。
3:所有的网络请求都会经过本机host文件 host路径:C:\Windows\System32\drivers\etc
4:进入host文件后 新增:127.0.0.1 updates.jenkins-ci.org (表示当请求updates.jenkins-ci.org地址的时候,转到本机地 址)
5:下载nginx配置转发路径:
进入nginx.config文件里面的server添加拦截路径配置:
location /download/plugins{ #拦截该路径请求
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host mirrors.tuna.tsinghua.edu.cn;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite /download/plugins/(.*) /jenkins/plugins/$1 break; #重定向/download/plugins(.*)路径下的所有文件该路径
proxy_pass https://mirrors.tuna.tsinghua.edu.cn;#代理路径
}
配置好后: 重启nginx 别在网上找命令(基本失效) 直接任务管理器杀死nginx进程
相当于:http://updates.jenkins-ci.org/download/plugins/AnchorChain/1.0/AnchorChain.hpi 这个路径
请求到:https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/AnchorChain/1.0/AnchorChain.hpi 清华加速地址
然后就快得一B了。
然后就可以找到Available找到插件下载了 比如Git 由于插件太多 找了半天才找到
创建项目:
进入主页 -> New item -> 输入项目名(随便填) - > 选择 Freestyle project点击OK
进入后找到Source Code Management选择Git 填写码云地址
点击add添加jinkins填写码云上的账号和密码并保存
选择刚填写的账号信息保存
完成后就可以在jinkins安装目录下workspace找到我们拉取的项目了
项目打包:
进入项目中点击Configure找到下面的Build 选择 Invoke top-level Maven targels并输入 clean package并保存
点击Build Now进行项目打包(红色表示报错了) 然后就可以在项目中找到打包的jar包了
注意:如果目录不对可以在 Build下面选择高级配置pom.xml目录路径!第一次打包会比较慢
上传服务器:
下载插件:Publish Over SSH (下载插件的时候记得启动nginx)
配置服务器:进入主页 -> Manage Jenkins -> Configure System下面的Publish over SSH 点击SSH Servers的Add
配置名称 服务器地址(111.231.141.141) 用户名(root) 最后一项暂时不填
点击Advanced... 点中 Use password authentication, or use a different key复选框
Passphrase / Password: 填写服务器密码
完成之后点击右下角 Test Configuration测试 Sucess(成功) 并保存
完成后进如入项目 -> Configure -> 下面的Post-build Actions选择下载的SSH插件
Name就是我们刚刚配置的服务器。
Source files: target/*.jar //传target下面的所有jar包 (SpringCloud的话 需要分开上传并且加路径: 项目名/config- server/target/*.jar)
Remove prefix: target/ //移除前缀
Remote directory: jars //远程目录 随便写
Exec command: ll (命令行): 注意:SpringCloud传的时候不能加命令不然会断开导致传不到服务器上
多个项目:点击左下角的Add Transfer Set继续添加就可以了
保存 点Build Now构建
在服务器root目录下就可以找到jars文件夹了。
jenkins执行SpringBoot脚本启动项目:
linux下进入jars目录下创建springboot.sh启动脚本(必须和jar包在同一目录下)
1: vi springboot.sh
脚本:
------------------------------------------------------------------------------
#!/bin/bash
#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe
SpringBoot=$2
if [ "$1" = "" ];
then
echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
exit 1
fi
if [ "$SpringBoot" = "" ];
then
echo -e "\033[0;31m 未输入应用名 \033[0m"
exit 1
fi
function start()
{
count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
if [ $count != 0 ];then
echo "$SpringBoot is running..."
else
echo "Start $SpringBoot success..."
nohup java -jar $SpringBoot --spring.profiles.active=prod > test.log & #--spring.profiles.active=prod 没有环境就不要
fi
}
function stop()
{
echo "Stop $SpringBoot"
boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`
count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
if [ $count != 0 ];then
kill $boot_id
count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
boot_id=`ps -ef |grep java|grep $SpringBoot|grep -v grep|awk '{print $2}'`
kill -9 $boot_id
fi
}
function restart()
{
stop
sleep 2
start
}
function status()
{
count=`ps -ef |grep java|grep $SpringBoot|grep -v grep|wc -l`
if [ $count != 0 ];then
echo "$SpringBoot is running..."
else
echo "$SpringBoot is not running..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
*)
echo -e "\033[0;31m Usage: \033[0m \033[0;34m sh $0 {start|stop|restart|status} {SpringBootJarName} \033[0m
\033[0;31m Example: \033[0m
\033[0;33m sh $0 start esmart-test.jar \033[0m"
esac
----------------------------------------------------------------
Esc : wq 保存并退出
2:chmod 775 springboot.sh //给它一个775的权限(绿色代表可以执行)
3:./springboot.sh start XXX.jar 启动项目
4.在jinkins配置启动脚本就可以了
Linux下查看和停止所有java进程
-
在Linux下查看所有java进程命令:ps -ef | grep java
-
停止所有java进程命令:pkill -9 java
-
停止特定java进程命令:kill -9 java进程序号
更多推荐
所有评论(0)