安装与配置
下载地址 https://www.jenkins.io/download/
下载稳定版war包
war包运行在web容器中,可以先安装tomcat,或者用java命令运行
迁移jenkins的home目录,默认的home目录在用户目录下vim /etc/profile
# 添加配置export JENKINS_HOME=/opt/app/jenkins/.jenkins
# 配置生效source /etc/profile
启动jenkins,把war放入tomcat webapps目录下或使用命令
浏览器进入jenkins页面 http://ip:8080/jenkins
使用cat命令查看初始密码

等待他安装完


常用插件及基本配置
配置jekins的maven、git、jdk
这三个需要提前安装好
注意这里配置的是git可执行文件的路径

保存
安装Maven Integration和Publish Over SSH插件
Maven Integration 这个是jenkins的maven集成插件 , 安装后可以在创建任务里面创建maven项目
Publish Over SSH 这个是jenkins的ssh发布插件 ,可以将构建好的程序包通过ssh远程发布到指定服务器插件安装完成后重启生效 , 重启后在系统设置中
在可选插件里搜索然后下载
配置Publish over SSH

点击进入之后,滚动条滚到最下面 
Passphrase:如果私钥设置了密码就是私钥的密码,私钥没设置密码可以不填
Path to key:私钥的位置
Key:私钥的内容。如果此处填入了值,则以此处的值为准,会忽略掉Path to key的配置
SSH Servers:服务器的配置
Name:名称(自定义)
Hostname:服务器地址
Username:用户名
Remote Directory:默认远程服务器的路径
准确的说就是配置ssh连接服务器的ip和用户名密码,以及要把打包的项目拉取到服务器上的目录路径
点change password输入连接linux的密码
然后点下面的Test Configuration测试是否连接成功,显示success就表示成功
这里配置远程服务器连接ssh可以配置多个服务器
Jenkins + git + maven 自动化构建
构建一个maven项目
配置git仓库及账号
添加git仓库和账号,这里我用github账号
触发器可以设置定时构建


maven打包设置
Goals and options一栏填maven的打包命令:clean package -Dmaven.test.skip=true -U clean install
部署脚本设置


Source files : 源文件地址,相对地址
Remove prefix : 忽略前缀路径
Remote directory : 远程服务器要保存的文件目录
Exec command : 执行脚本命令
脚本代码
#! /bin/shecho "授予权限...."# 与上面publish over ssh 配置的Remote Directory路径对应chmod 755 /opt/app/code/boottest.jarecho "执行..."export BUILD_ID=dontKillMe# 要指定java可执行文件全路径 在后台运行 指定输出的log文件名nohup /usr/local/jdk/bin/java -jar /opt/app/code/boottest.jar > boottest.log 2>&1 &
这里jar包名值得提一下,如果不在maven里面配置jar就会带有版本号,这样配置了jar包就只是项目名了

之前我发现虽然部署成功,但是发现没有帮我启动项目,通过大量百度发现是脚本的问题
jenkins会杀进程
一定要写让进程在后台执行的脚本!!!
配置完了点保存,然后运行看控制台输出,构建成功了

再次构建时可以基于一个存在的项目复制创建
列出一个部署springboot项目的脚本案例
#!/bin/bashecho "==================start deploy project========================="echo "Stopping SpringBoot Application"app_name=boottestapp_version=2.0.0-SNAPSHOTjar_name=$app_name-$app_version.jarpid=$(ps -ef|grep -i $jar_name |grep -v "grep"|awk '{print $2}')echo "获取pid成功"+$pidif [ -n "$pid" ];then kill -9 $pidecho '解除端口占用'fiecho "授予当前用户权限"chmod 755 /opt/app/code/$jar_nameecho "执行....."cd /opt/app/code/BUILD_ID=dontKillMe nohup /usr/local/jdk/bin/java -Xms1g -Xmx1g -jar /opt/app/code/$jar_name \--spring.profiles.active=dev \--eureka.instance.hostname=192.168.12.103 \--spring.redis.host=192.168.12.103 \--spring.redis.port=6379 \--spring.redis.password=1234 \--spring.rabbitmq.host=192.168.12.103 \--spring.rabbitmq.username=guest \--spring.rabbitmq.password=guest \--spring.datasource.address=192.168.12.103:3306/istorm-automation \--spring.datasource.password=1234 \--security.address=192.168.12.103:8040 \--remoteServerFile=http://192.168.12.103:8040/api/file/file/ \--seata.address=192.168.12.103:8091 > $app_name.log 2>&1 &echo "==================deploy project success========================="




